summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-03-18 15:56:55 -0400
committerNick Mathewson <nickm@torproject.org>2013-03-18 15:56:55 -0400
commitdbdc99483df6f0fdba9f7af8954719d47990a8b8 (patch)
treebe5f777cbe2e172201756ed907442cfe6bed70f2
parentaa4fcc4f13ecc0959f26ac4c86a8e9b59d9c8783 (diff)
parentbd9901bef245b3880c9a60034b9fdf6d4829eb65 (diff)
downloadtor-dbdc99483df6f0fdba9f7af8954719d47990a8b8.tar.gz
tor-dbdc99483df6f0fdba9f7af8954719d47990a8b8.zip
Merge branch 'bug7947' into maint-0.2.4
-rw-r--r--changes/bug79474
-rw-r--r--src/or/relay.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/changes/bug7947 b/changes/bug7947
new file mode 100644
index 0000000000..6200ba2d8a
--- /dev/null
+++ b/changes/bug7947
@@ -0,0 +1,4 @@
+ o Minor bugfixes:
+ - Fix the handling of a TRUNCATE cell when it arrives while the circuit
+ extension is in progress. Fixes bug 7947; bugfix on 0.0.7.1.
+
diff --git a/src/or/relay.c b/src/or/relay.c
index 9ff9e1e1f4..8e80d14a87 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1398,6 +1398,14 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
"'truncate' unsupported at origin. Dropping.");
return 0;
}
+ if (circ->n_hop) {
+ if (circ->n_chan)
+ log_warn(LD_BUG, "n_chan and n_hop set on the same circuit!");
+ extend_info_free(circ->n_hop);
+ circ->n_hop = NULL;
+ tor_free(circ->n_chan_create_cell);
+ circuit_set_state(circ, CIRCUIT_STATE_OPEN);
+ }
if (circ->n_chan) {
uint8_t trunc_reason = get_uint8(cell->payload + RELAY_HEADER_SIZE);
circuit_clear_cell_queue(circ, circ->n_chan);