summaryrefslogtreecommitdiff
path: root/chat/bitlbee/patches/patch-ae
diff options
context:
space:
mode:
Diffstat (limited to 'chat/bitlbee/patches/patch-ae')
-rw-r--r--chat/bitlbee/patches/patch-ae23
1 files changed, 23 insertions, 0 deletions
diff --git a/chat/bitlbee/patches/patch-ae b/chat/bitlbee/patches/patch-ae
new file mode 100644
index 00000000000..c14614121af
--- /dev/null
+++ b/chat/bitlbee/patches/patch-ae
@@ -0,0 +1,23 @@
+Fix stalling issue with OpenSSL and Jabber
+From http://bugs.bitlbee.org/bitlbee/changeset/devel%2C359
+
+$NetBSD: patch-ae,v 1.1 2008/04/20 09:29:45 tonio Exp $
+
+--- protocols/jabber/io.c.orig Sat Feb 16 23:39:47 2008
++++ protocols/jabber/io.c
+@@ -240,8 +240,13 @@ static gboolean jabber_read_callback( gp
+ 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 )