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 | |
| parent | 851a8c29c681cdc3c9838ed99486822cba927f60 (diff) | |
Fixed stalling issue with OpenSSL and Jabber (#368).
Diffstat (limited to 'protocols')
| -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 ) | 
