identify the exit node correctly when we timeout and detach

from a circuit, even if the exit node is in the middle.

there are probably a few more places that need this fix too.


svn:r10076
This commit is contained in:
Roger Dingledine 2007-04-30 23:24:38 +00:00
parent 95734e73ff
commit 590c6ff33d
2 changed files with 4 additions and 6 deletions

View File

@ -1190,7 +1190,7 @@ consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ)
/** Attempt to attach the connection <b>conn</b> to <b>circ</b>, and send a
* begin or resolve cell as appropriate. Return values are as for
* connection_ap_handshake_attach_circuit. The stream will exit from the hop
* indicatd by <b>cpath</b>, or to the last hop in circ's cpath if
* indicated by <b>cpath</b>, or from the last hop in circ's cpath if
* <b>cpath</b> is NULL. */
int
connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn,

View File

@ -346,7 +346,6 @@ connection_ap_expire_beginning(void)
connection_t **carray;
edge_connection_t *conn;
circuit_t *circ;
const char *nickname;
int n, i;
time_t now = time(NULL);
or_options_t *options = get_options();
@ -407,13 +406,12 @@ connection_ap_expire_beginning(void)
continue;
}
tor_assert(circ->purpose == CIRCUIT_PURPOSE_C_GENERAL);
nickname = build_state_get_exit_nickname(
TO_ORIGIN_CIRCUIT(circ)->build_state);
log_fn(cutoff < 15 ? LOG_INFO : severity, LD_APP,
"We tried for %d seconds to connect to '%s' using exit '%s'."
" Retrying on a new circuit.",
seconds_idle, safe_str(conn->socks_request->address),
nickname ? nickname : "*unnamed*");
conn->cpath_layer ?
conn->cpath_layer->extend_info->nickname : "*unnamed*");
/* send an end down the circuit */
connection_edge_end(conn, END_STREAM_REASON_TIMEOUT);
/* un-mark it as ending, since we're going to reuse it */
@ -1180,7 +1178,7 @@ addressmap_get_mappings(smartlist_t *sl, time_t min_expires,
* rendezvous descriptor is already here and fresh enough).
*
* The stream will exit from the hop
* indicatd by <b>cpath</b>, or to the last hop in circ's cpath if
* indicated by <b>cpath</b>, or from the last hop in circ's cpath if
* <b>cpath</b> is NULL.
*/
int