Explorar o código

bugfix: let socks do multiple rounds of negotiation again
(which is needed for socks5)


svn:r2970

Roger Dingledine %!s(int64=21) %!d(string=hai) anos
pai
achega
0eebfe3558
Modificáronse 1 ficheiros con 1 adicións e 0 borrados
  1. 1 0
      src/or/connection_edge.c

+ 1 - 0
src/or/connection_edge.c

@@ -365,6 +365,7 @@ static int connection_ap_handshake_process_socks(connection_t *conn) {
     if(socks->replylen) { /* we should send reply back */
     if(socks->replylen) { /* we should send reply back */
       log_fn(LOG_DEBUG,"reply is already set for us. Using it.");
       log_fn(LOG_DEBUG,"reply is already set for us. Using it.");
       connection_ap_handshake_socks_reply(conn, socks->reply, socks->replylen, 0);
       connection_ap_handshake_socks_reply(conn, socks->reply, socks->replylen, 0);
+      socks->replylen = 0; /* zero it out so we can do another round of negotiation */
     } else if(sockshere == -1) { /* send normal reject */
     } else if(sockshere == -1) { /* send normal reject */
       log_fn(LOG_WARN,"Fetching socks handshake failed. Closing.");
       log_fn(LOG_WARN,"Fetching socks handshake failed. Closing.");
       connection_ap_handshake_socks_reply(conn, NULL, 0, -1);
       connection_ap_handshake_socks_reply(conn, NULL, 0, -1);