aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/or/connection_edge.c4
-rw-r--r--src/or/main.c7
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;