aboutsummaryrefslogtreecommitdiff
path: root/src/or/circuitmux.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-03-21 14:51:27 -0400
committerNick Mathewson <nickm@torproject.org>2013-06-13 10:14:00 -0400
commit43d53e6d86acaf7555c31730a8230fa0cdf31306 (patch)
treec12b3285f417aad70b913662006e8572edf708b6 /src/or/circuitmux.h
parent801eea03ad71dafd31cc6bfa06fa5e421aa95cd6 (diff)
downloadtor-43d53e6d86acaf7555c31730a8230fa0cdf31306.tar.gz
tor-43d53e6d86acaf7555c31730a8230fa0cdf31306.zip
Implementation of a fix for bug 7912
I added the code to pass a destroy cell to a queueing function rather than writing it immediately, and the code to remember that we shouldn't reuse the circuit id until the destroy is actually sent, and the code to release the circuit id once the destroy has been sent... and then I finished by hooking destroy_cell_queue into the rest of Tor.
Diffstat (limited to 'src/or/circuitmux.h')
-rw-r--r--src/or/circuitmux.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/or/circuitmux.h b/src/or/circuitmux.h
index 25644ffab7..da62196b21 100644
--- a/src/or/circuitmux.h
+++ b/src/or/circuitmux.h
@@ -120,7 +120,8 @@ unsigned int circuitmux_num_circuits(circuitmux_t *cmux);
unsigned int circuitmux_num_active_circuits(circuitmux_t *cmux);
/* Channel interface */
-circuit_t * circuitmux_get_first_active_circuit(circuitmux_t *cmux);
+circuit_t * circuitmux_get_first_active_circuit(circuitmux_t *cmux,
+ cell_queue_t **destroy_queue_out);
void circuitmux_notify_xmit_cells(circuitmux_t *cmux, circuit_t *circ,
unsigned int n_cells);
@@ -132,5 +133,9 @@ void circuitmux_clear_num_cells(circuitmux_t *cmux, circuit_t *circ);
void circuitmux_set_num_cells(circuitmux_t *cmux, circuit_t *circ,
unsigned int n_cells);
+void circuitmux_append_destroy_cell(channel_t *chan,
+ circuitmux_t *cmux, circid_t circ_id,
+ uint8_t reason);
+
#endif /* TOR_CIRCUITMUX_H */