Index: main/tcptls.c =================================================================== --- main/tcptls.c (revision 320171) +++ main/tcptls.c (working copy) @@ -417,7 +417,8 @@ return NULL; } - ast_sockaddr_copy(&desc->old_address, &desc->remote_address); + /* If we return early, we don't want the above check to return true */ + ast_sockaddr_setnull(&desc->old_address); if (desc->accept_fd != -1) close(desc->accept_fd); @@ -454,6 +455,7 @@ ast_sockaddr_copy(&tcptls_session->remote_address, &desc->remote_address); + ast_sockaddr_copy(&desc->old_address, &desc->remote_address); return tcptls_session; error: @@ -475,13 +477,15 @@ return; } - ast_sockaddr_copy(&desc->old_address, &desc->local_address); + /* If we return early, we don't want the above check to return true */ + ast_sockaddr_setnull(&desc->old_address); /* Shutdown a running server if there is one */ if (desc->master != AST_PTHREADT_NULL) { pthread_cancel(desc->master); pthread_kill(desc->master, SIGURG); pthread_join(desc->master, NULL); + desc->master = AST_PTHREADT_NULL; } if (desc->accept_fd != -1) @@ -521,6 +525,7 @@ strerror(errno)); goto error; } + ast_sockaddr_copy(&desc->old_address, &desc->local_address); return; error: