diff --git a/ChangeLog b/ChangeLog index ab192a01aa..1c0b8ee52d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,11 @@ Changes in version 0.2.1.13-????? - 2009-0?-?? We previously did this from the startup script, but that was no help to people who didn't use the startup script. Resolves bug 863. + - When we had picked an exit node for a connection, but marked it as + "optional", and it turned out we had no onion key for the exit, + stop preferring the exit and try again. This situation may not be + possible now, but will probably become feasible with proposal 158. + Spotted by rovv. Fixes another case of bug 752. o Minor features: - On Linux, use the prctl call to re-enable core dumps when the user diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 4bc6fcbe8f..a1c8d1c148 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -1165,7 +1165,10 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, if (opt) { conn->chosen_exit_optional = 0; tor_free(conn->chosen_exit_name); - return 0; + /* Try again with no requested exit */ + return circuit_get_open_circ_or_launch(conn, + desired_circuit_purpose, + circp); } return -1; }