From 205b59d2eb61b08f2d7033f9add232e6344e18e1 Mon Sep 17 00:00:00 2001 From: Junyeon LEE Date: Tue, 1 Aug 2017 13:57:11 +0900 Subject: [PATCH] examples/tls_server: fix unclosed socket problem. If tls server would be executed double at the same time, bind or listen socket can't be released properly. Change the client_fd and listned_fd values from global to local variable. Change-Id: I0c3d97b5ade7692e92fa4967f04763d2295ab14f Signed-off-by: Junyeon LEE --- apps/examples/tls_server/tls_server_main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/examples/tls_server/tls_server_main.c b/apps/examples/tls_server/tls_server_main.c index 72ab315..d382d45 100644 --- a/apps/examples/tls_server/tls_server_main.c +++ b/apps/examples/tls_server/tls_server_main.c @@ -785,6 +785,7 @@ int psk_callback(void *p_info, mbedtls_ssl_context *ssl, const unsigned char *na } #endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#if 0 static mbedtls_net_context listen_fd, client_fd; /* Interruption handler to ensure clean exit (for valgrind testing) */ @@ -798,6 +799,7 @@ void term_handler(int sig) mbedtls_net_free(&client_fd); /* causes net_read() to abort */ } #endif +#endif /**************************************************************************** * tls_server_main @@ -877,6 +879,9 @@ int tls_server_cb(void *args) mbedtls_memory_buffer_alloc_init(alloc_buf, sizeof(alloc_buf)); #endif + mbedtls_net_context listen_fd; + mbedtls_net_context client_fd; + /* * Make sure memory references are valid in case we exit early. */ @@ -1754,6 +1759,7 @@ reset: if (!(opt.retry--)) { goto exit; } +#if 0 #if !defined(_WIN32) if (received_sigterm) { mbedtls_printf(" interrupted by SIGTERM\n"); @@ -1761,6 +1767,7 @@ reset: goto exit; } #endif +#endif if (ret == MBEDTLS_ERR_SSL_CLIENT_RECONNECT) { mbedtls_printf(" ! Client initiated reconnection from same port\n"); @@ -1788,6 +1795,7 @@ reset: goto exit; } if ((ret = mbedtls_net_accept(&listen_fd, &client_fd, client_ip, sizeof(client_ip), &cliip_len)) != 0) { +#if 0 #if !defined(_WIN32) if (received_sigterm) { mbedtls_printf(" interrupted by signal\n"); @@ -1795,7 +1803,7 @@ reset: goto exit; } #endif - +#endif mbedtls_printf(" failed\n ! mbedtls_net_accept returned -0x%x\n\n", -ret); goto exit; } -- 2.7.4