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 ) |