diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-09-29 09:37:01 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-09-29 09:37:01 -0400 |
commit | 1a5746f8e1a392f0b67e36083019534bf97f1fa6 (patch) | |
tree | 3209cb5f5647ef510d2ef5ed3fcabda6b05e5ba6 /src | |
parent | 82f109c2b3cf159cd3329c4c575d737cff8e2c59 (diff) | |
parent | d256d4c0a6c6a258c4f6c6839dd53c7e304fa94f (diff) | |
download | tor-1a5746f8e1a392f0b67e36083019534bf97f1fa6.tar.gz tor-1a5746f8e1a392f0b67e36083019534bf97f1fa6.zip |
Merge branch 'bug8185_025' into bug8185_031
Diffstat (limited to 'src')
-rw-r--r-- | src/or/relay.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/or/relay.c b/src/or/relay.c index cb1a0692b6..81942af1e8 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -506,6 +506,11 @@ circuit_package_relay_cell(cell_t *cell, circuit_t *circ, { channel_t *chan; /* where to send the cell */ + if (circ->marked_for_close) { + /* Circuit is marked; send nothing. */ + return 0; + } + if (cell_direction == CELL_DIRECTION_OUT) { crypt_path_t *thishop; /* counter for repeated crypts */ chan = circ->n_chan; @@ -824,6 +829,12 @@ connection_edge_send_command(edge_connection_t *fromconn, return -1; } + if (circ->marked_for_close) { + /* The circuit has been marked, but not freed yet. When it's freed, it + * will mark this connection for close. */ + return -1; + } + #ifdef MEASUREMENTS_21206 /* Keep track of the number of RELAY_DATA cells sent for directory * connections. */ |