[tor-commits] [tor/master] cell: Do not warn on hidden service invalid port

nickm at torproject.org nickm at torproject.org
Mon Apr 10 16:12:54 UTC 2017


commit 0fdad78fe1f20955ba1c0c93c752e20063c0bb58
Author: David Goulet <dgoulet at torproject.org>
Date:   Wed Apr 5 16:28:37 2017 -0400

    cell: Do not warn on hidden service invalid port
    
    When a client tried to connect to an invalid port of an hidden service, a
    warning was printed:
    
      [warn] connection_edge_process_relay_cell (at origin) failed.
    
    This is because the connection subsystem wants to close the circuit because
    the port can't be found and then returns a negative reason to achieve that.
    However, that specific situation triggered a warning. This commit prevents it
    for the specific case of an invalid hidden service port.
    
    Fixes #16706
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 changes/bug16706 | 3 +++
 src/or/relay.c   | 9 +++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/changes/bug16706 b/changes/bug16706
new file mode 100644
index 0000000..9c1e315
--- /dev/null
+++ b/changes/bug16706
@@ -0,0 +1,3 @@
+  o Minor bugfixes (hidden service):
+    - Stop printing cryptic warning when a client tries to connect on an
+      invalid port of the service. Fixes #16706.; bugfix on tor-0.2.6.3-alpha.
diff --git a/src/or/relay.c b/src/or/relay.c
index a7a5071..5139036 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -257,8 +257,13 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
       log_debug(LD_OR,"Sending to origin.");
       if ((reason = connection_edge_process_relay_cell(cell, circ, conn,
                                                        layer_hint)) < 0) {
-        log_warn(LD_OR,
-                 "connection_edge_process_relay_cell (at origin) failed.");
+        /* If a client is trying to connect to unknown hidden service port,
+         * END_CIRC_AT_ORIGIN is sent back so we can then close the circuit.
+         * Do not log warn as this is an expected behavior for a service. */
+        if (reason != END_CIRC_AT_ORIGIN) {
+          log_warn(LD_OR,
+                   "connection_edge_process_relay_cell (at origin) failed.");
+        }
         return reason;
       }
     }





More information about the tor-commits mailing list