diff --git a/changes/bug40499 b/changes/bug40499 new file mode 100644 index 0000000000..149e9bd200 --- /dev/null +++ b/changes/bug40499 @@ -0,0 +1,7 @@ + o Major bugfixes (client): + - Stop caching TCP connect failures to relays/bridges when we + initiated the connection as a client. Now we only cache connect + failures as a relay or bridge when we initiated them because + of an EXTEND request. Declining to re-attempt the client-based + connections could cause problems when we lose connectivity and + try to reconnect. Fixes bug 40499; bugfix on 0.3.3.4-alpha. diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c index db9f93e6f6..0018b1dfd8 100644 --- a/src/core/or/connection_or.c +++ b/src/core/or/connection_or.c @@ -1316,6 +1316,13 @@ note_or_connect_failed(const or_connection_t *or_conn) tor_assert(or_conn); + if (or_conn->potentially_used_for_bootstrapping) { + /* Don't cache connection failures for connections we initiated ourself. + * If these direct connections fail, we're supposed to recognize that + * the destination is down and stop trying. See ticket 40499. */ + return; + } + ocf = or_connect_failure_find(or_conn); if (ocf == NULL) { ocf = or_connect_failure_new(or_conn);