diff --git a/platform/src/tcp_stream.cpp b/platform/src/tcp_stream.cpp index 2d124da..cef8f48 100644 --- a/platform/src/tcp_stream.cpp +++ b/platform/src/tcp_stream.cpp @@ -423,15 +423,21 @@ static void __conn_private_destory(struct tfe_conn_private * conn) free(conn); (void)ret; - TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } static void __conn_private_destory_with_ssl(struct event_base * ev_base, struct tfe_conn_private * conn, struct ssl_stream * ssl_stream) { - if (ssl_stream == NULL) return __conn_private_destory(conn); + if (ssl_stream == NULL) + { + __conn_private_destory(conn); + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); + return; + } + ssl_stream_free(ssl_stream, ev_base, conn->bev); - return __conn_private_destory(conn); + __conn_private_destory(conn); + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } static void __stream_bev_passthrough_readcb(struct bufferevent * bev, void * arg) @@ -481,6 +487,7 @@ static void __stream_bev_passthrough_writecb(struct bufferevent * bev, void * ar { __conn_private_destory(*ref_this_conn); *ref_this_conn = NULL; + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } if (*ref_peer_conn == NULL && *ref_this_conn == NULL) @@ -557,6 +564,7 @@ __close_connection: { __conn_private_destory(*ref_peer_conn); *ref_peer_conn = NULL; + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } } @@ -564,6 +572,7 @@ __close_connection: { __conn_private_destory(*ref_this_conn); *ref_this_conn = NULL; + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } if (*ref_this_conn == NULL && *ref_peer_conn == NULL) @@ -1349,24 +1358,28 @@ void tfe_stream_destory(struct tfe_stream_private * stream) { assert(stream->defer_fd_upstream <= 0); __conn_private_destory(stream->conn_upstream); + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } if (stream->conn_downstream) { assert(stream->defer_fd_downstream <= 0); __conn_private_destory(stream->conn_downstream); + TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } if (stream->conn_fake_c) { assert(stream->fd_fake_c <= 0); __conn_private_destory(stream->conn_fake_c); + // fd_fake_c need't use TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } if (stream->conn_fake_s) { assert(stream->fd_fake_s <= 0); __conn_private_destory(stream->conn_fake_s); + // conn_fake_s need't use TFE_PROXY_STAT_INCREASE(STAT_FD_CLOSE, 1); } if (stream->fd_fake_c)