diff options
author | Roger Dingledine <arma@torproject.org> | 2009-07-27 21:01:24 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2009-07-27 21:58:32 -0400 |
commit | 2b63fa40e8349e0e6c40d0660d9df5b0ba73937e (patch) | |
tree | 533c7b62fa1081b970c9ab9965f133cb222c4405 /src/or/command.c | |
parent | f39cee375472a6e3a4f0decb7e2f91c5768a2165 (diff) | |
download | tor-2b63fa40e8349e0e6c40d0660d9df5b0ba73937e.tar.gz tor-2b63fa40e8349e0e6c40d0660d9df5b0ba73937e.zip |
three hacks to workaround bug 1038
The problem is that clients and hidden services are receiving
relay_early cells, and they tear down the circuit.
Hack #1 is for rendezvous points to rewrite relay_early cells to
relay cells. That way there are never any incoming relay_early cells.
Hack #2 is for clients and hidden services to never send a relay_early
cell on an established rendezvous circuit. That works around rendezvous
points that haven't upgraded yet.
Hack #3 is for clients and hidden services to not tear down the circuit
when they receive an inbound relay_early cell. We already refuse extend
cells at clients.
Diffstat (limited to 'src/or/command.c')
-rw-r--r-- | src/or/command.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/or/command.c b/src/or/command.c index 9481e5bcc6..c36874be5c 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -395,12 +395,8 @@ command_process_relay_cell(cell_t *cell, or_connection_t *conn) * gotten no more than MAX_RELAY_EARLY_CELLS_PER_CIRCUIT of them. */ if (cell->command == CELL_RELAY_EARLY) { if (direction == CELL_DIRECTION_IN) { - log_fn(LOG_PROTOCOL_WARN, LD_OR, - "Received an inbound RELAY_EARLY cell on circuit %d from %s:%d." - " Closing circuit.", - cell->circ_id, conn->_base.address, conn->_base.port); - circuit_mark_for_close(circ, END_CIRC_REASON_TORPROTOCOL); - return; + /* XXX Allow an unlimited number of inbound relay_early cells for + * now, for hidden service compatibility. See bug 1038. -RD */ } else { or_circuit_t *or_circ = TO_OR_CIRCUIT(circ); if (or_circ->remaining_relay_early_cells == 0) { |