Patch from lark: drop BEGIN cells from a rendevous circuit if they do not originate from the end of the circuit.

svn:r18667
This commit is contained in:
Nick Mathewson 2009-02-21 19:07:01 +00:00
parent 1b6688786c
commit 192b701fac
2 changed files with 9 additions and 0 deletions

View File

@ -28,6 +28,8 @@ Changes in version 0.2.1.13-????? - 2009-02-??
stream never finished making its connection, it would live
forever in circuit_wait state. Now we close it after SocksTimeout
seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
- Drop begin cells to a hidden service if they come from the middle of a
circuit. Patch from lark.
o Minor features:
- On Linux, use the prctl call to re-enable core dumps when the user

View File

@ -1019,6 +1019,13 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
"Relay begin request unsupported at AP. Dropping.");
return 0;
}
if (circ->purpose == CIRCUIT_PURPOSE_S_REND_JOINED &&
layer_hint != TO_ORIGIN_CIRCUIT(circ)->cpath->prev) {
log_fn(LOG_PROTOCOL_WARN, LD_APP,
"Relay begin request to Hidden Service "
"from intermediary node. Dropping.");
return 0;
}
if (conn) {
log_fn(LOG_PROTOCOL_WARN, domain,
"Begin cell for known stream. Dropping.");