diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2008-03-23 14:29:19 +0000 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2008-03-23 14:29:19 +0000 |
commit | 8a2221a79b177a5c6d0b55dafebd39414d7fe10a (patch) | |
tree | f6d61c6b93136e6bac705f8c9fc210836fbb19b6 /protocols/jabber/io.c | |
parent | 851a8c29c681cdc3c9838ed99486822cba927f60 (diff) |
Fixed stalling issue with OpenSSL and Jabber (#368).
Diffstat (limited to 'protocols/jabber/io.c')
-rw-r--r-- | protocols/jabber/io.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/protocols/jabber/io.c b/protocols/jabber/io.c index 9980dc8e..10efad37 100644 --- a/protocols/jabber/io.c +++ b/protocols/jabber/io.c @@ -240,8 +240,13 @@ static gboolean jabber_read_callback( gpointer data, gint fd, b_input_condition return FALSE; } - /* EAGAIN/etc or a successful read. */ - return TRUE; + if( ssl_pending( jd->ssl ) ) + /* OpenSSL empties the TCP buffers completely but may keep some + data in its internap buffers. select() won't see that, but + ssl_pending() does. */ + return jabber_read_callback( data, fd, cond ); + else + return TRUE; } gboolean jabber_connected_plain( gpointer data, gint source, b_input_condition cond ) |