diff --git a/platform/include/internal/sender_scm.h b/platform/include/internal/sender_scm.h index 94f9ab1..3b925e4 100644 --- a/platform/include/internal/sender_scm.h +++ b/platform/include/internal/sender_scm.h @@ -3,3 +3,4 @@ struct sender_scm; void send_scm_destroy(struct sender_scm *sender); struct sender_scm* sender_scm_init(const char *profile, const char *section, void *logger); +int sender_scm_cmsg_send(struct sender_scm *sender, struct tfe_cmsg *cmsg); diff --git a/platform/src/tcp_stream.cpp b/platform/src/tcp_stream.cpp index 9b23a3c..6fa362c 100644 --- a/platform/src/tcp_stream.cpp +++ b/platform/src/tcp_stream.cpp @@ -1027,6 +1027,7 @@ void __stream_close_stat(struct tfe_stream_private * stream) void tfe_stream_destory(struct tfe_stream_private * stream) { + struct tfe_proxy * proxy = stream->proxy_ref; struct tfe_thread_ctx * thread = stream->thread_ref; struct event_base * ev_base = thread->evbase; @@ -1084,8 +1085,18 @@ void tfe_stream_destory(struct tfe_stream_private * stream) { future_destroy(stream->future_upstream_create); } - FREE(&(stream->plugin_ctxs)); + if (proxy->scm_sender && stream->cmsg) + { + sender_scm_cmsg_send(proxy->scm_sender, stream->cmsg); + } + + if (stream->cmsg) + { + tfe_cmsg_destroy(stream->cmsg); + } + + FREE(&(stream->plugin_ctxs)); tfe_proxy_thread_ctx_release(stream->thread_ref); stream->proxy_ref = NULL; FREE(&(stream));