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@torproject.org>
This commit is contained in:
David Goulet 2017-04-05 16:28:37 -04:00
parent 0e5e5ba64b
commit 0fdad78fe1
2 changed files with 10 additions and 2 deletions

3
changes/bug16706 Normal file
View File

@ -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.

View File

@ -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;
}
}