From 5ba4eaba1cfe1858cc152a9945d0bb6c2d1838b4 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Mon, 30 Apr 2007 11:10:45 +0000 Subject: Let the controller specify HOP=%d as an argument to ATTACHSTREAM, so we can exit from the middle of the circuit. svn:r10056 --- src/or/connection_edge.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/or/connection_edge.c') diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 0e5aa8fd72..035eecafc1 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -1181,7 +1181,8 @@ addressmap_get_mappings(smartlist_t *sl, time_t min_expires, */ int connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, - origin_circuit_t *circ) + origin_circuit_t *circ, + crypt_path_t *cpath) { socks_request_t *socks = conn->socks_request; hostname_type_t addresstype; @@ -1337,8 +1338,8 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, tor_fragile_assert(); } conn->_base.state = AP_CONN_STATE_CIRCUIT_WAIT; - if ((circ && - connection_ap_handshake_attach_chosen_circuit(conn, circ) < 0) || + if ((circ && connection_ap_handshake_attach_chosen_circuit( + conn, circ, cpath) < 0) || (!circ && connection_ap_handshake_attach_circuit(conn) < 0)) { connection_mark_unattached_ap(conn, END_STREAM_REASON_CANT_ATTACH); @@ -1583,7 +1584,7 @@ connection_ap_handshake_process_socks(edge_connection_t *conn) conn->_base.state = AP_CONN_STATE_CONTROLLER_WAIT; return 0; } - return connection_ap_handshake_rewrite_and_attach(conn, NULL); + return connection_ap_handshake_rewrite_and_attach(conn, NULL, NULL); } /** connection_init_accepted_conn() found a new trans AP conn. @@ -1625,7 +1626,7 @@ connection_ap_process_transparent(edge_connection_t *conn) conn->_base.state = AP_CONN_STATE_CONTROLLER_WAIT; return 0; } - return connection_ap_handshake_rewrite_and_attach(conn, NULL); + return connection_ap_handshake_rewrite_and_attach(conn, NULL, NULL); } /** connection_edge_process_inbuf() found a conn in state natd_wait. See if @@ -1704,7 +1705,7 @@ connection_ap_process_natd(edge_connection_t *conn) } conn->_base.state = AP_CONN_STATE_CIRCUIT_WAIT; - return connection_ap_handshake_rewrite_and_attach(conn, NULL); + return connection_ap_handshake_rewrite_and_attach(conn, NULL, NULL); } /** Iterate over the two bytes of stream_id until we get one that is not -- cgit v1.2.3-54-g00ecf