|
@@ -637,6 +637,13 @@ run_connection_housekeeping(int i, time_t now)
|
|
|
if (best && best != conn &&
|
|
|
(conn->state == OR_CONN_STATE_OPEN ||
|
|
|
now > conn->timestamp_created + TLS_TIMEOUT)) {
|
|
|
+ /* We only mark as obsolete connections that already are in
|
|
|
+ * OR_CONN_STATE_OPEN, i.e. that have finished their TLS handshaking.
|
|
|
+ * This is necessay because authorities judge whether a router is
|
|
|
+ * reachable based on whether they were able to TLS handshake with it
|
|
|
+ * recently. Without this check we would expire connections too
|
|
|
+ * early for router->last_reachable to be updated.
|
|
|
+ */
|
|
|
log_info(LD_OR,
|
|
|
"Marking duplicate conn to %s:%d obsolete "
|
|
|
"(fd %d, %d secs old).",
|