diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/or/connection_edge.c | 4 | ||||
-rw-r--r-- | src/or/main.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 0bfca3987..fea18fc8f 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -757,7 +757,9 @@ static int connection_ap_handshake_process_socks(connection_t *conn) { return connection_ap_handshake_attach_circuit(conn); } else { conn->state = AP_CONN_STATE_RENDDESC_WAIT; - if(!connection_get_by_type_rendquery(CONN_TYPE_DIR, conn->rend_query)) { + if(connection_get_by_type_rendquery(CONN_TYPE_DIR, conn->rend_query)) { + log_fn(LOG_INFO,"Would fetch a new renddesc here (for %s), but one is already in progress.", conn->rend_query); + } else { /* not one already; initiate a dir rend desc lookup */ directory_initiate_command(router_pick_directory_server(), DIR_PURPOSE_FETCH_RENDDESC, diff --git a/src/or/main.c b/src/or/main.c index c80737bf5..5276f0862 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -306,6 +306,13 @@ static void run_connection_housekeeping(int i, time_t now) { cell_t cell; connection_t *conn = connection_array[i]; + if(conn->type == CONN_TYPE_DIR && + conn->timestamp_created + 5*60 > now) { + log_fn(LOG_INFO,"Expiring wedged directory conn (purpose %d)", conn->purpose); + connection_mark_for_close(conn,0); + return; + } + /* check connections to see whether we should send a keepalive, expire, or wait */ if(!connection_speaks_cells(conn)) return; |