From 13fdf51bc18428b5cf5e504d61a44f08204d0e22 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 24 Mar 2005 06:05:14 +0000 Subject: Bulletproof connection_ap_handshake_attach_chosen_circuit svn:r3855 --- src/or/circuituse.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/or/circuituse.c') diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 669d96e94e..e9c20f59a8 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -979,8 +979,8 @@ consider_recording_trackhost(connection_t *conn, circuit_t *circ) { } /** Attempt to attach the connection conn to circ, and - * send a begin or resolve cell as appropriate. Return values for - * connection_ap_handshake_attach_chosen_circuit. */ + * send a begin or resolve cell as appropriate. Return values are as + * for connection_ap_handshake_attach_circuit. */ int connection_ap_handshake_attach_chosen_circuit(connection_t *conn, circuit_t *circ) @@ -992,6 +992,9 @@ connection_ap_handshake_attach_chosen_circuit(connection_t *conn, tor_assert(conn->socks_request); tor_assert(circ); + if (circ->state != CIRCUIT_STATE_OPEN) + return 0; + conn->state = AP_CONN_STATE_CIRCUIT_WAIT; if (!circ->timestamp_dirty) @@ -1001,9 +1004,11 @@ connection_ap_handshake_attach_chosen_circuit(connection_t *conn, tor_assert(conn->socks_request); if (conn->socks_request->command == SOCKS_COMMAND_CONNECT) { consider_recording_trackhost(conn, circ); - connection_ap_handshake_send_begin(conn, circ); + if (connection_ap_handshake_send_begin(conn, circ)<0) + return -1; } else { - connection_ap_handshake_send_resolve(conn, circ); + if (connection_ap_handshake_send_resolve(conn, circ)<0) + return -1; } return 1; -- cgit v1.2.3-54-g00ecf