Adapt programs to the new NET API
diff --git a/programs/ssl/ssl_pthread_server.c b/programs/ssl/ssl_pthread_server.c
index 7a4c2b2..4bd3671 100644
--- a/programs/ssl/ssl_pthread_server.c
+++ b/programs/ssl/ssl_pthread_server.c
@@ -106,7 +106,7 @@
}
typedef struct {
- int client_fd;
+ mbedtls_net_context client_fd;
int thread_complete;
const mbedtls_ssl_config *config;
} thread_info_t;
@@ -124,7 +124,7 @@
{
int ret, len;
thread_info_t *thread_info = (thread_info_t *) data;
- int client_fd = thread_info->client_fd;
+ mbedtls_net_context *client_fd = &thread_info->client_fd;
long int thread_id = (long int) pthread_self();
unsigned char buf[1024];
mbedtls_ssl_context ssl;
@@ -132,7 +132,7 @@
/* Make sure memory references are valid */
mbedtls_ssl_init( &ssl );
- mbedtls_printf( " [ #%ld ] Client FD %d\n", thread_id, client_fd );
+ mbedtls_printf( " [ #%ld ] Setting up SSL/TLS data\n", thread_id );
/*
* 4. Get the SSL context ready
@@ -144,7 +144,7 @@
goto thread_exit;
}
- mbedtls_ssl_set_bio( &ssl, &client_fd, mbedtls_net_send, mbedtls_net_recv, NULL );
+ mbedtls_ssl_set_bio( &ssl, client_fd, mbedtls_net_send, mbedtls_net_recv, NULL );
/*
* 5. Handshake
@@ -273,7 +273,7 @@
return( NULL );
}
-static int thread_create( int client_fd )
+static int thread_create( mbedtls_net_context *client_fd )
{
int ret, i;
@@ -302,9 +302,10 @@
*/
memcpy( &threads[i].data, &base_info, sizeof(base_info) );
threads[i].active = 1;
- threads[i].data.client_fd = client_fd;
+ memcpy( &threads[i].data.client_fd, client_fd, sizeof( mbedtls_net_context ) );
- if( ( ret = pthread_create( &threads[i].thread, NULL, handle_ssl_connection, &threads[i].data ) ) != 0 )
+ if( ( ret = pthread_create( &threads[i].thread, NULL, handle_ssl_connection,
+ &threads[i].data ) ) != 0 )
{
return( ret );
}
@@ -315,8 +316,7 @@
int main( void )
{
int ret;
- int listen_fd;
- int client_fd = -1;
+ mbedtls_net_context listen_fd, client_fd;
const char pers[] = "ssl_pthread_server";
mbedtls_entropy_context entropy;
@@ -346,6 +346,8 @@
mbedtls_ssl_config_init( &conf );
mbedtls_ctr_drbg_init( &ctr_drbg );
memset( threads, 0, sizeof(threads) );
+ mbedtls_net_init( &listen_fd );
+ mbedtls_net_init( &client_fd );
mbedtls_mutex_init( &debug_mutex );
@@ -474,11 +476,9 @@
/*
* 3. Wait until a client connects
*/
- client_fd = -1;
-
mbedtls_printf( " [ main ] Waiting for a remote connection\n" );
- if( ( ret = mbedtls_net_accept( listen_fd, &client_fd,
+ if( ( ret = mbedtls_net_accept( &listen_fd, &client_fd,
NULL, 0, NULL ) ) != 0 )
{
mbedtls_printf( " [ main ] failed: mbedtls_net_accept returned -0x%04x\n", ret );
@@ -488,10 +488,10 @@
mbedtls_printf( " [ main ] ok\n" );
mbedtls_printf( " [ main ] Creating a new thread\n" );
- if( ( ret = thread_create( client_fd ) ) != 0 )
+ if( ( ret = thread_create( &client_fd ) ) != 0 )
{
mbedtls_printf( " [ main ] failed: thread_create returned %d\n", ret );
- mbedtls_net_close( client_fd );
+ mbedtls_net_close( &client_fd );
goto reset;
}
@@ -508,6 +508,8 @@
mbedtls_entropy_free( &entropy );
mbedtls_ssl_config_free( &conf );
+ mbedtls_net_free( &listen_fd );
+
mbedtls_mutex_free( &debug_mutex );
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)