From c6d7c7f5dcb7f4648b44f64849707fa9b0ba7e5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 7 Nov 2004 11:28:56 +0000 Subject: [PATCH] Implement net_* virtualization with TLS module --- include/vlc_tls.h | 10 ++++++---- modules/misc/gnutls.c | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/include/vlc_tls.h b/include/vlc_tls.h index 912517e2d5..3f2b8521a0 100644 --- a/include/vlc_tls.h +++ b/include/vlc_tls.h @@ -24,6 +24,8 @@ #ifndef _VLC_TLS_H # define _VLC_TLS_H +# include "network.h" + struct tls_t { VLC_COMMON_MEMBERS @@ -56,10 +58,9 @@ struct tls_session_t void *p_sys; + struct virtual_socket_t sock; tls_session_t * (*pf_handshake) ( tls_session_t *, int ); void (*pf_close) ( tls_session_t * ); - int (*pf_send) ( tls_session_t *, const char *, int ); - int (*pf_recv) ( tls_session_t *, char *, int ); }; @@ -105,8 +106,9 @@ VLC_EXPORT( void, tls_ClientDelete, ( tls_session_t * ) ); # define tls_SessionClose( a ) (((tls_session_t *)a)->pf_close (a)) # define __tls_ClientDelete( a ) tls_SessionClose( a ) -# define tls_Send( a, b, c ) (((tls_session_t *)a)->pf_send (a, b, c )) +/* NOTE: It is assumed that a->sock.p_sys = a */ +# define tls_Send( a, b, c ) (((tls_session_t *)a)->sock.pf_send (a, b, c )) -# define tls_Recv( a, b, c ) (((tls_session_t *)a)->pf_recv (a, b, c )) +# define tls_Recv( a, b, c ) (((tls_session_t *)a)->sock.pf_recv (a, b, c )) #endif diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c index 83da9cb3e7..439442bb90 100644 --- a/modules/misc/gnutls.c +++ b/modules/misc/gnutls.c @@ -88,12 +88,12 @@ typedef struct tls_client_sys_t * Sends data through a TLS session. *****************************************************************************/ static int -gnutls_Send( tls_session_t *p_session, const char *buf, int i_length ) +gnutls_Send( void *p_session, const void *buf, int i_length ) { int val; - val = gnutls_record_send( *(gnutls_session *)(p_session->p_sys), - buf, i_length ); + val = gnutls_record_send( *(gnutls_session *)(((tls_session_t *)p_session) + ->p_sys), buf, i_length ); return val < 0 ? -1 : val; } @@ -104,12 +104,12 @@ gnutls_Send( tls_session_t *p_session, const char *buf, int i_length ) * Receives data through a TLS session. *****************************************************************************/ static int -gnutls_Recv( tls_session_t *p_session, char *buf, int i_length ) +gnutls_Recv( void *p_session, void *buf, int i_length ) { int val; - val = gnutls_record_recv( *(gnutls_session *)(p_session->p_sys), - buf, i_length ); + val = gnutls_record_recv( *(gnutls_session *)(((tls_session_t *)p_session) + ->p_sys), buf, i_length ); return val < 0 ? -1 : val; } @@ -269,10 +269,11 @@ gnutls_ClientCreate( tls_t *p_tls, const char *psz_ca_path ) p_session->p_tls = p_tls; p_session->p_server = NULL; p_session->p_sys = p_sys; + p_session->sock.p_sys = p_session; + p_session->sock.pf_send = gnutls_Send; + p_session->sock.pf_recv = gnutls_Recv; p_session->pf_handshake = gnutls_SessionHandshake; p_session->pf_close = gnutls_SessionClose; - p_session->pf_send = gnutls_Send; - p_session->pf_recv = gnutls_Recv; return p_session; } @@ -350,10 +351,11 @@ gnutls_ServerSessionPrepare( tls_server_t *p_server ) p_session->p_tls = p_server->p_tls; p_session->p_server = p_server; p_session->p_sys = p_sys; + p_session->sock.p_sys = p_session; + p_session->sock.pf_send = gnutls_Send; + p_session->sock.pf_recv = gnutls_Recv; p_session->pf_handshake = gnutls_SessionHandshake; p_session->pf_close = gnutls_SessionClose; - p_session->pf_send = gnutls_Send; - p_session->pf_recv = gnutls_Recv; return p_session; } -- 2.39.5