Hi,

Especially with SSL and short data transfers, it could happen that
the client closed before the connection to the server has been
established.  Then the relay closed immediately before transferring
any data.  The solution is to delay the close until the other side
has an event buffer.

ok?

bluhm


Index: usr.sbin/relayd/relay.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/relayd/relay.c,v
retrieving revision 1.138
diff -u -p -r1.138 relay.c
--- usr.sbin/relayd/relay.c     20 May 2011 09:43:53 -0000      1.138
+++ usr.sbin/relayd/relay.c     1 Sep 2011 12:14:05 -0000
@@ -1892,7 +1895,8 @@ relay_error(struct bufferevent *bev, sho
                        dst = EVBUFFER_OUTPUT(cre->dst->bev);
                        if (EVBUFFER_LENGTH(dst))
                                return;
-               }
+               } else
+                       return;
 
                relay_close(con, "done");
                return;

Reply via email to