From 1af0ae38a3416655ab9e7bac57758be7340e3b57 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sat, 24 Dec 2011 15:28:45 +0000 Subject: [PATCH] Do not expect a response from the SOCKS4/4A server until it got something to respond to Hohoho. Fixes #3459781 reported by qqqqqw and tracked down by Lee. Regression introduced in 3.0.18 by the usual suspect. --- gateway.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gateway.c b/gateway.c index b65991ac..aedbc89e 100644 --- a/gateway.c +++ b/gateway.c @@ -1,4 +1,4 @@ -const char gateway_rcs[] = "$Id: gateway.c,v 1.81 2011/10/23 11:21:09 fabiankeil Exp $"; +const char gateway_rcs[] = "$Id: gateway.c,v 1.82 2011/10/23 11:21:28 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/gateway.c,v $ @@ -808,6 +808,13 @@ static jb_socket socks4_connect(const struct forward_spec * fwd, /* The error an its reason have already been logged by connect_to() */ return(JB_INVALID_SOCKET); } + else if (write_socket(sfd, (char *)c, csiz)) + { + errstr = "SOCKS4 negotiation write failed."; + log_error(LOG_LEVEL_CONNECT, "socks4_connect: %s", errstr); + err = 1; + close_socket(sfd); + } else if (!data_is_available(sfd, csp->config->socket_timeout)) { if (socket_is_still_alive(sfd)) @@ -822,13 +829,6 @@ static jb_socket socks4_connect(const struct forward_spec * fwd, err = 1; close_socket(sfd); } - else if (write_socket(sfd, (char *)c, csiz)) - { - errstr = "SOCKS4 negotiation write failed."; - log_error(LOG_LEVEL_CONNECT, "socks4_connect: %s", errstr); - err = 1; - close_socket(sfd); - } else if (read_socket(sfd, buf, sizeof(buf)) != sizeof(*s)) { errstr = "SOCKS4 negotiation read failed."; -- 2.39.2