Explorar o código

In connection_ap_handshake_process_socks(), mark the socks request as finished if a reply is send after a parse error

Silences the log message:
[warn] {BUG} _connection_mark_unattached_ap(): Bug: stream (marked at connection_edge.c:2224) sending two socks replies?
after the client triggered the "Tor is not an HTTP Proxy" response.

No additional socks reply was sent, though.
Fabian Keil %!s(int64=14) %!d(string=hai) anos
pai
achega
2888644a9f
Modificáronse 1 ficheiros con 5 adicións e 0 borrados
  1. 5 0
      src/or/connection_edge.c

+ 5 - 0
src/or/connection_edge.c

@@ -2319,6 +2319,11 @@ connection_ap_handshake_process_socks(entry_connection_t *conn)
     connection_write_to_buf((const char*)socks->reply, socks->replylen,
     connection_write_to_buf((const char*)socks->reply, socks->replylen,
                             base_conn);
                             base_conn);
     socks->replylen = 0;
     socks->replylen = 0;
+    if (sockshere == -1) {
+      /* An invalid request just got a reply, no additional
+       * one is necessary. */
+      socks->has_finished = 1;
+    }
   }
   }
 
 
   if (sockshere == 0) {
   if (sockshere == 0) {