Simplify net_accept() with UDP sockets
This is made possible by the new API where net_accept() gets a pointer to
bind_ctx, so it can update it.
diff --git a/programs/ssl/dtls_server.c b/programs/ssl/dtls_server.c
index a3839c6..650b687 100644
--- a/programs/ssl/dtls_server.c
+++ b/programs/ssl/dtls_server.c
@@ -273,13 +273,6 @@
goto exit;
}
- /* With UDP, bind_fd is hijacked by client_fd, so bind a new one */
- if( ( ret = mbedtls_net_bind( &listen_fd, NULL, "4433", MBEDTLS_NET_PROTO_UDP ) ) != 0 )
- {
- printf( " failed\n ! mbedtls_net_bind returned -0x%x\n\n", -ret );
- goto exit;
- }
-
/* For HelloVerifyRequest cookies */
if( ( ret = mbedtls_ssl_set_client_transport_id( &ssl,
client_ip, cliip_len ) ) != 0 )
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 99d43c9..a08aa9b 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -1897,28 +1897,6 @@
mbedtls_printf( " ok\n" );
/*
- * With UDP, bind_fd is hijacked by client_fd, so bind a new one
- */
-#if defined(MBEDTLS_SSL_PROTO_DTLS)
- if( opt.transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM )
- {
- mbedtls_printf( " . Re-bind on udp://%s:%s/ ...",
- opt.server_addr ? opt.server_addr : "*",
- opt.server_port );
- fflush( stdout );
-
- if( ( ret = mbedtls_net_bind( &listen_fd, opt.server_addr,
- opt.server_port, MBEDTLS_NET_PROTO_UDP ) ) != 0 )
- {
- mbedtls_printf( " failed\n ! mbedtls_net_bind returned -0x%x\n\n", -ret );
- goto exit;
- }
-
- mbedtls_printf( " ok\n" );
- }
-#endif /* MBEDTLS_SSL_PROTO_DTLS */
-
- /*
* 4. Handshake
*/
mbedtls_printf( " . Performing the SSL/TLS handshake..." );
diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c
index 7360d8a..76e3b31 100644
--- a/programs/test/udp_proxy.c
+++ b/programs/test/udp_proxy.c
@@ -533,6 +533,8 @@
* 2. Wait until a client connects
*/
accept:
+ mbedtls_net_free( &client_fd );
+
mbedtls_printf( " . Waiting for a remote connection ..." );
fflush( stdout );
@@ -544,20 +546,6 @@
}
mbedtls_printf( " ok\n" );
- fflush( stdout );
-
- mbedtls_printf( " . Re-bind on UDP/%s/%s ...",
- opt.listen_addr, opt.listen_port );
- fflush( stdout );
-
- if( ( ret = mbedtls_net_bind( &listen_fd, opt.listen_addr, opt.listen_port,
- MBEDTLS_NET_PROTO_UDP ) ) != 0 )
- {
- mbedtls_printf( " failed\n ! mbedtls_net_bind returned %d\n\n", ret );
- goto exit;
- }
-
- mbedtls_printf( " ok\n" );
/*
* 3. Forward packets forever (kill the process to terminate it)