aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/or/connection_edge.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d722b967..29b0160fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -51,6 +51,9 @@ Changes in version 0.2.1.1-alpha - 2008-??-??
servers. Fix for bug 652.
- Authorities correctly free policies on bad servers on
exit. Fixes bug 672.
+ - When tunneling an encrypted directory connection, and its first circuit
+ fails do not leave it unattached and ask the controller to deal. Fixes
+ the second part of bug 681.
o Minor features:
- Allow separate log levels to be configured for different logging
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index e059850df..06d1dacd1 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -549,7 +549,9 @@ connection_ap_detach_retriable(edge_connection_t *conn, origin_circuit_t *circ,
{
control_event_stream_status(conn, STREAM_EVENT_FAILED_RETRIABLE, reason);
conn->_base.timestamp_lastread = time(NULL);
- if (! get_options()->LeaveStreamsUnattached) {
+ if (!get_options()->LeaveStreamsUnattached || conn->use_begindir) {
+ /* If we're attaching streams ourself, or if this connection is
+ * a tunneled directory connection, then just attach it. */
conn->_base.state = AP_CONN_STATE_CIRCUIT_WAIT;
circuit_detach_stream(TO_CIRCUIT(circ),conn);
return connection_ap_handshake_attach_circuit(conn);