From fa023cbfa0e71ad8d2b6e2146c5d4ca1792b206f Mon Sep 17 00:00:00 2001 From: Sean Bright <sean.bright@gmail.com> Date: Wed, 30 Sep 2020 16:00:36 -0400 Subject: [PATCH] tcptls.c: Don't close TCP client file descriptors more than once ASTERISK-28430 #close Change-Id: Ib556b0a0c95cca939e956886214ec8d828d89606 --- main/tcptls.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/main/tcptls.c b/main/tcptls.c index 6a26cb865c..45eb29bf6c 100644 --- a/main/tcptls.c +++ b/main/tcptls.c @@ -608,13 +608,8 @@ struct ast_tcptls_session_instance *ast_tcptls_client_start(struct ast_tcptls_se return handle_tcptls_connection(tcptls_session); client_start_error: - if (desc) { - close(desc->accept_fd); - desc->accept_fd = -1; - } ao2_ref(tcptls_session, -1); return NULL; - } struct ast_tcptls_session_instance *ast_tcptls_client_create(struct ast_tcptls_session_args *desc) @@ -631,10 +626,6 @@ struct ast_tcptls_session_instance *ast_tcptls_client_create(struct ast_tcptls_s /* If we return early, there is no connection */ ast_sockaddr_setnull(&desc->old_address); - if (desc->accept_fd != -1) { - close(desc->accept_fd); - } - fd = desc->accept_fd = socket(ast_sockaddr_is_ipv6(&desc->remote_address) ? AF_INET6 : AF_INET, SOCK_STREAM, IPPROTO_TCP); if (desc->accept_fd < 0) { @@ -672,6 +663,9 @@ struct ast_tcptls_session_instance *ast_tcptls_client_create(struct ast_tcptls_s goto error; } + /* From here on out, the iostream owns the accept_fd and it will take + * care of closing it when the iostream is closed */ + tcptls_session->parent = desc; tcptls_session->parent->worker_fn = NULL; ast_sockaddr_copy(&tcptls_session->remote_address, -- GitLab