From: Fabian Keil Date: Sun, 9 Jan 2011 12:08:35 +0000 (+0000) Subject: Let socks5_connect enforce the socket timeout for the negotiation response as well. X-Git-Tag: v_3_0_18~360 X-Git-Url: http://www.privoxy.org/gitweb/templates.html?a=commitdiff_plain;h=24ae510461a9161c320c6c51db9f3343da681793;p=privoxy.git Let socks5_connect enforce the socket timeout for the negotiation response as well. --- diff --git a/gateway.c b/gateway.c index b3dff394..bd6a3d9d 100644 --- a/gateway.c +++ b/gateway.c @@ -1,4 +1,4 @@ -const char gateway_rcs[] = "$Id: gateway.c,v 1.64 2009/10/03 10:37:49 fabiankeil Exp $"; +const char gateway_rcs[] = "$Id: gateway.c,v 1.65 2010/04/23 11:53:48 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/gateway.c,v $ @@ -1004,7 +1004,20 @@ static jb_socket socks5_connect(const struct forward_spec *fwd, return(JB_INVALID_SOCKET); } - if (read_socket(sfd, sbuf, sizeof(sbuf)) != 2) + if (!data_is_available(sfd, csp->config->socket_timeout)) + { + if (socket_is_still_alive(sfd)) + { + errstr = "SOCKS5 negotiation timed out"; + } + else + { + errstr = "SOCKS5 negotiation got aborted by the server"; + } + err = 1; + } + + if (!err && read_socket(sfd, sbuf, sizeof(sbuf)) != 2) { errstr = "SOCKS5 negotiation read failed"; err = 1;