Adapt programs to the new NET API
diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c
index f91d42f..9962445 100644
--- a/programs/test/udp_proxy.c
+++ b/programs/test/udp_proxy.c
@@ -20,6 +20,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+/*
+ * Warning: this is an internal utility program we use for tests.
+ * It does break some abstractions from the NET layer, and is thus NOT an
+ * example of good general usage.
+ */
+
#if !defined(MBEDTLS_CONFIG_FILE)
#include "mbedtls/config.h"
#else
@@ -284,7 +290,7 @@
typedef struct
{
- int dst;
+ mbedtls_net_context *dst;
const char *way;
const char *type;
unsigned len;
@@ -306,7 +312,7 @@
int send_packet( const packet *p, const char *why )
{
int ret;
- int dst = p->dst;
+ mbedtls_net_context *dst = p->dst;
/* insert corrupted ApplicationData record? */
if( opt.bad_ad &&
@@ -317,7 +323,7 @@
++buf[p->len - 1];
print_packet( p, "corrupted" );
- if( ( ret = mbedtls_net_send( &dst, buf, p->len ) ) <= 0 )
+ if( ( ret = mbedtls_net_send( dst, buf, p->len ) ) <= 0 )
{
mbedtls_printf( " ! mbedtls_net_send returned %d\n", ret );
return( ret );
@@ -325,7 +331,7 @@
}
print_packet( p, why );
- if( ( ret = mbedtls_net_send( &dst, p->buf, p->len ) ) <= 0 )
+ if( ( ret = mbedtls_net_send( dst, p->buf, p->len ) ) <= 0 )
{
mbedtls_printf( " ! mbedtls_net_send returned %d\n", ret );
return( ret );
@@ -338,7 +344,7 @@
{
print_packet( p, "duplicated" );
- if( ( ret = mbedtls_net_send( &dst, p->buf, p->len ) ) <= 0 )
+ if( ( ret = mbedtls_net_send( dst, p->buf, p->len ) ) <= 0 )
{
mbedtls_printf( " ! mbedtls_net_send returned %d\n", ret );
return( ret );
@@ -392,14 +398,16 @@
}
}
-int handle_message( const char *way, int dst, int src )
+int handle_message( const char *way,
+ mbedtls_net_context *dst,
+ mbedtls_net_context *src )
{
int ret;
packet cur;
size_t id;
/* receive packet */
- if( ( ret = mbedtls_net_recv( &src, cur.buf, sizeof( cur.buf ) ) ) <= 0 )
+ if( ( ret = mbedtls_net_recv( src, cur.buf, sizeof( cur.buf ) ) ) <= 0 )
{
mbedtls_printf( " ! mbedtls_net_recv returned %d\n", ret );
return( ret );
@@ -432,7 +440,7 @@
strcmp( cur.type, "ApplicationData" ) != 0 &&
! ( opt.protect_hvr &&
strcmp( cur.type, "HelloVerifyRequest" ) == 0 ) &&
- prev.dst == 0 &&
+ prev.dst == NULL &&
cur.len != (size_t) opt.protect_len &&
dropped[id] < DROP_MAX &&
rand() % opt.delay == 0 ) )
@@ -446,7 +454,7 @@
return( ret );
/* send previously delayed message if any */
- if( prev.dst != 0 )
+ if( prev.dst != NULL )
{
ret = send_packet( &prev, "delayed" );
memset( &prev, 0, sizeof( packet ) );
@@ -462,13 +470,15 @@
{
int ret;
- int listen_fd = -1;
- int client_fd = -1;
- int server_fd = -1;
+ mbedtls_net_context listen_fd, client_fd, server_fd;
int nb_fds;
fd_set read_fds;
+ mbedtls_net_init( &listen_fd );
+ mbedtls_net_init( &client_fd );
+ mbedtls_net_init( &server_fd );
+
get_options( argc, argv );
/*
@@ -526,7 +536,7 @@
mbedtls_printf( " . Waiting for a remote connection ..." );
fflush( stdout );
- if( ( ret = mbedtls_net_accept( listen_fd, &client_fd,
+ if( ( ret = mbedtls_net_accept( &listen_fd, &client_fd,
NULL, 0, NULL ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_net_accept returned %d\n\n", ret );
@@ -555,19 +565,19 @@
clear_pending();
memset( dropped, 0, sizeof( dropped ) );
- nb_fds = client_fd;
- if( nb_fds < server_fd )
- nb_fds = server_fd;
- if( nb_fds < listen_fd )
- nb_fds = listen_fd;
+ nb_fds = client_fd.fd;
+ if( nb_fds < server_fd.fd )
+ nb_fds = server_fd.fd;
+ if( nb_fds < listen_fd.fd )
+ nb_fds = listen_fd.fd;
++nb_fds;
while( 1 )
{
FD_ZERO( &read_fds );
- FD_SET( server_fd, &read_fds );
- FD_SET( client_fd, &read_fds );
- FD_SET( listen_fd, &read_fds );
+ FD_SET( server_fd.fd, &read_fds );
+ FD_SET( client_fd.fd, &read_fds );
+ FD_SET( listen_fd.fd, &read_fds );
if( ( ret = select( nb_fds, &read_fds, NULL, NULL, NULL ) ) <= 0 )
{
@@ -575,20 +585,20 @@
goto exit;
}
- if( FD_ISSET( listen_fd, &read_fds ) )
+ if( FD_ISSET( listen_fd.fd, &read_fds ) )
goto accept;
- if( FD_ISSET( client_fd, &read_fds ) )
+ if( FD_ISSET( client_fd.fd, &read_fds ) )
{
if( ( ret = handle_message( "S <- C",
- server_fd, client_fd ) ) != 0 )
+ &server_fd, &client_fd ) ) != 0 )
goto accept;
}
- if( FD_ISSET( server_fd, &read_fds ) )
+ if( FD_ISSET( server_fd.fd, &read_fds ) )
{
if( ( ret = handle_message( "S -> C",
- client_fd, server_fd ) ) != 0 )
+ &client_fd, &server_fd ) ) != 0 )
goto accept;
}
}
@@ -605,11 +615,9 @@
}
#endif
- if( client_fd != -1 )
- mbedtls_net_close( client_fd );
-
- if( listen_fd != -1 )
- mbedtls_net_close( listen_fd );
+ mbedtls_net_close( &client_fd );
+ mbedtls_net_close( &server_fd );
+ mbedtls_net_close( &listen_fd );
#if defined(_WIN32)
mbedtls_printf( " Press Enter to exit this program.\n" );