diff --git a/src/flb_upstream.c b/src/flb_upstream.c index bd5ba8aa13b..1a5aab80a89 100644 --- a/src/flb_upstream.c +++ b/src/flb_upstream.c @@ -515,13 +515,6 @@ static int prepare_destroy_conn(struct flb_connection *u_conn) } if (u_conn->fd > 0) { -#ifdef FLB_HAVE_TLS - if (u_conn->tls_session != NULL) { - flb_tls_session_destroy(u_conn->tls_session); - - u_conn->tls_session = NULL; - } -#endif shutdown_connection(u_conn); flb_socket_close(u_conn->fd); @@ -572,6 +565,15 @@ static int destroy_conn(struct flb_connection *u_conn) return 0; } + /* Delay to destroy TLS session for safety */ +#ifdef FLB_HAVE_TLS + if (u_conn->tls_session != NULL) { + flb_tls_session_destroy(u_conn->tls_session); + + u_conn->tls_session = NULL; + } +#endif + mk_list_del(&u_conn->_head); flb_connection_destroy(u_conn);