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;
 }