From 9a13e84cc223b8655f3012a00d26282dcc346c7f Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Mon, 2 Apr 2012 18:57:53 -0700 Subject: [PATCH] MINOR: Add release callback to si_applet --- include/types/stream_interface.h | 1 + src/dumpstats.c | 2 ++ src/peers.c | 3 +-- src/stream_interface.c | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h index 711394ada..8f35d643d 100644 --- a/include/types/stream_interface.h +++ b/include/types/stream_interface.h @@ -189,6 +189,7 @@ struct stream_interface { struct si_applet { char *name; /* applet's name to report in logs */ void (*fct)(struct stream_interface *); /* internal I/O handler, may never be NULL */ + void (*release)(struct stream_interface *); /* callback to release resources, may be NULL */ }; #endif /* _TYPES_STREAM_INTERFACE_H */ diff --git a/src/dumpstats.c b/src/dumpstats.c index dc3ac752b..2421f896a 100644 --- a/src/dumpstats.c +++ b/src/dumpstats.c @@ -3961,11 +3961,13 @@ static int stats_dump_errors_to_buffer(struct stream_interface *si) struct si_applet http_stats_applet = { .name = "", /* used for logging */ .fct = http_stats_io_handler, + .release = NULL, }; static struct si_applet cli_applet = { .name = "", /* used for logging */ .fct = cli_io_handler, + .release = NULL, }; static struct cfg_kw_list cfg_kws = {{ },{ diff --git a/src/peers.c b/src/peers.c index c6810e704..fe4ff9b96 100644 --- a/src/peers.c +++ b/src/peers.c @@ -1044,6 +1044,7 @@ quit: static struct si_applet peer_applet = { .name = "", /* used for logging */ .fct = peer_io_handler, + .release = peer_session_release, }; /* @@ -1079,7 +1080,6 @@ int peer_accept(struct session *s) /* we have a dedicated I/O handler for the stats */ stream_int_register_handler(&s->si[1], &peer_applet); copy_target(&s->target, &s->si[1].target); // for logging only - s->si[1].release = peer_session_release; s->si[1].applet.private = s; s->si[1].applet.st0 = PEER_SESSION_ACCEPT; @@ -1165,7 +1165,6 @@ static struct session *peer_session_create(struct peer *peer, struct peer_sessio s->si[0].applet.st0 = PEER_SESSION_CONNECT; stream_int_register_handler(&s->si[0], &peer_applet); - s->si[0].release = peer_session_release; s->si[1].fd = -1; /* just to help with debugging */ s->si[1].owner = t; diff --git a/src/stream_interface.c b/src/stream_interface.c index 350a47b58..b8a6d580e 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -316,7 +316,7 @@ struct task *stream_int_register_handler(struct stream_interface *si, struct si_ si->connect = NULL; set_target_applet(&si->target, app); si->applet.state = 0; - si->release = NULL; + si->release = app->release; si->flags |= SI_FL_WAIT_DATA; return si->owner; }