diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2011-11-14 18:43:03 +0800 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2011-11-14 18:43:03 +0800 |
commit | 80acb6db8133ebd16c3257d33721994ed164ba9f (patch) | |
tree | 68775e4feeb4aa81f19524a8389d5a8d7ad91b8b /lib/ssl_gnutls.c | |
parent | 03a8f8ec82719512f059fdd2c0dca3bb919b059c (diff) |
GnuTLS now also needs ssl_pending() implemented. Bug #860.
Diffstat (limited to 'lib/ssl_gnutls.c')
-rw-r--r-- | lib/ssl_gnutls.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/ssl_gnutls.c b/lib/ssl_gnutls.c index 72517e72..d72b17f5 100644 --- a/lib/ssl_gnutls.c +++ b/lib/ssl_gnutls.c @@ -134,7 +134,9 @@ static gboolean ssl_connected( gpointer data, gint source, b_input_condition con gnutls_certificate_allocate_credentials( &conn->xcred ); gnutls_init( &conn->session, GNUTLS_CLIENT ); - gnutls_transport_set_lowat( conn->session, 1 ); +#if GNUTLS_VERSION_NUMBER < 0x020c00 + gnutls_transport_set_lowat( conn->session, 0 ); +#endif gnutls_set_default_priority( conn->session ); gnutls_credentials_set( conn->session, GNUTLS_CRD_CERTIFICATE, conn->xcred ); @@ -186,7 +188,7 @@ int ssl_read( void *conn, char *buf, int len ) if( !((struct scd*)conn)->established ) { ssl_errno = SSL_NOHANDSHAKE; - return( -1 ); + return -1; } st = gnutls_record_recv( ((struct scd*)conn)->session, buf, len ); @@ -207,7 +209,7 @@ int ssl_write( void *conn, const char *buf, int len ) if( !((struct scd*)conn)->established ) { ssl_errno = SSL_NOHANDSHAKE; - return( -1 ); + return -1; } st = gnutls_record_send( ((struct scd*)conn)->session, buf, len ); @@ -221,10 +223,18 @@ int ssl_write( void *conn, const char *buf, int len ) return st; } -/* See ssl_openssl.c for an explanation. */ int ssl_pending( void *conn ) { - return 0; + if( conn == NULL ) + return 0; + + if( !((struct scd*)conn)->established ) + { + ssl_errno = SSL_NOHANDSHAKE; + return 0; + } + + return gnutls_record_check_pending( ((struct scd*)conn)->session ) != 0; } void ssl_disconnect( void *conn_ ) |