MINOR: Add release callback to si_applet
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index 711394a..8f35d64 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -189,6 +189,7 @@
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 dc3ac75..2421f89 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -3961,11 +3961,13 @@
struct si_applet http_stats_applet = {
.name = "<STATS>", /* used for logging */
.fct = http_stats_io_handler,
+ .release = NULL,
};
static struct si_applet cli_applet = {
.name = "<CLI>", /* 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 c6810e7..fe4ff9b 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -1044,6 +1044,7 @@
static struct si_applet peer_applet = {
.name = "<PEER>", /* used for logging */
.fct = peer_io_handler,
+ .release = peer_session_release,
};
/*
@@ -1079,7 +1080,6 @@
/* 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 @@
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 350a47b..b8a6d58 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -316,7 +316,7 @@
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;
}