diff options
Diffstat (limited to 'lib/ssl_gnutls.c')
| -rw-r--r-- | lib/ssl_gnutls.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/lib/ssl_gnutls.c b/lib/ssl_gnutls.c index b698e630..f6bdd6b2 100644 --- a/lib/ssl_gnutls.c +++ b/lib/ssl_gnutls.c @@ -235,7 +235,7 @@ struct ssl_session  static void ssl_cache_add( struct scd *conn )  { -	size_t data_size; +	size_t data_size = 0;  	struct ssl_session *data;  	char *hostname; @@ -244,7 +244,7 @@ static void ssl_cache_add( struct scd *conn )  		return;  	data = g_malloc( sizeof( struct ssl_session ) + data_size ); -	if( gnutls_session_get_data( conn->session, data->data, &data->size ) != 0 ) +	if( gnutls_session_get_data( conn->session, data->data, &data_size ) != 0 )  	{  		g_free( data );  		return; @@ -334,6 +334,9 @@ static gboolean ssl_handshake( gpointer data, gint source, b_input_condition con  	struct scd *conn = data;  	int st, stver; +	/* This function returns false, so avoid calling b_event_remove again */ +	conn->inpa = -1; +	  	if( ( st = gnutls_handshake( conn->session ) ) < 0 )  	{  		if( st == GNUTLS_E_AGAIN || st == GNUTLS_E_INTERRUPTED ) | 
