aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2006-05-13 12:42:37 +0200
committerWilmer van der Gaast <wilmer@gaast.net>2006-05-13 12:42:37 +0200
commit2b7d2d1537040cac6841a63437e6c04d8a7441bc (patch)
tree3f922201e6049f1846ab66e71771d14e9c544fe6
parentfc2ee0f84c1746cb17c448ee75c4206dca548325 (diff)
Fixed GnuTLS support.
-rw-r--r--protocols/events.h3
-rw-r--r--protocols/ssl_gnutls.c26
2 files changed, 13 insertions, 16 deletions
diff --git a/protocols/events.h b/protocols/events.h
index dcd45abe..5b684f8c 100644
--- a/protocols/events.h
+++ b/protocols/events.h
@@ -48,7 +48,8 @@ typedef gboolean (*b_event_handler)(gpointer data, gint fd, b_input_condition co
#define GAIM_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL)
#define GAIM_ERR_COND (G_IO_HUP | G_IO_ERR | G_IO_NVAL)
-#define event_debug( x... ) printf( x )
+// #define event_debug( x... ) printf( x )
+#define event_debug( x... )
G_MODULE_EXPORT void b_main_init();
G_MODULE_EXPORT void b_main_run();
diff --git a/protocols/ssl_gnutls.c b/protocols/ssl_gnutls.c
index 024dc423..3ebe1756 100644
--- a/protocols/ssl_gnutls.c
+++ b/protocols/ssl_gnutls.c
@@ -47,7 +47,7 @@ struct scd
gnutls_certificate_credentials xcred;
};
-static void ssl_connected( gpointer data, gint source, b_input_condition cond );
+static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond );
void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data )
@@ -80,9 +80,9 @@ void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data
return( conn );
}
-static void ssl_handshake( gpointer data, gint source, b_input_condition cond );
+static gboolean ssl_handshake( gpointer data, gint source, b_input_condition cond );
-static void ssl_connected( gpointer data, gint source, b_input_condition cond )
+static gboolean ssl_connected( gpointer data, gint source, b_input_condition cond )
{
struct scd *conn = data;
@@ -95,32 +95,26 @@ static void ssl_connected( gpointer data, gint source, b_input_condition cond )
g_free( conn );
- return;
+ return FALSE;
}
sock_make_nonblocking( conn->fd );
gnutls_transport_set_ptr( conn->session, (gnutls_transport_ptr) conn->fd );
- ssl_handshake( data, source, cond );
+ return ssl_handshake( data, source, cond );
}
-static void ssl_handshake( gpointer data, gint source, b_input_condition cond )
+static gboolean ssl_handshake( gpointer data, gint source, b_input_condition cond )
{
struct scd *conn = data;
int st;
- if( conn->inpa != -1 )
- {
- gaim_input_remove( conn->inpa );
- conn->inpa = -1;
- }
-
if( ( st = gnutls_handshake( conn->session ) ) < 0 )
{
if( st == GNUTLS_E_AGAIN || st == GNUTLS_E_INTERRUPTED )
{
- conn->inpa = gaim_input_add( conn->fd, ssl_getdirection( conn ),
- ssl_handshake, data );
+ conn->inpa = b_input_add( conn->fd, ssl_getdirection( conn ),
+ ssl_handshake, data );
}
else
{
@@ -141,6 +135,8 @@ static void ssl_handshake( gpointer data, gint source, b_input_condition cond )
conn->established = TRUE;
conn->func( conn->data, conn, cond );
}
+
+ return FALSE;
}
int ssl_read( void *conn, char *buf, int len )
@@ -186,7 +182,7 @@ void ssl_disconnect( void *conn_ )
struct scd *conn = conn_;
if( conn->inpa != -1 )
- gaim_input_remove( conn->inpa );
+ b_event_remove( conn->inpa );
if( conn->established )
gnutls_bye( conn->session, GNUTLS_SHUT_WR );