Explorar o código

don't crash, if a conn that sent a begin has suddenly lost its circuit

svn:r1704
Roger Dingledine %!s(int64=21) %!d(string=hai) anos
pai
achega
9e5d2ad91c
Modificáronse 1 ficheiros con 5 adicións e 0 borrados
  1. 5 0
      src/or/connection_edge.c

+ 5 - 0
src/or/connection_edge.c

@@ -620,6 +620,11 @@ void connection_ap_expire_beginning(void) {
       continue;
     conn->num_retries++;
     circ = circuit_get_by_conn(conn);
+    if(!circ) { /* it's vanished? */
+      log_fn(LOG_INFO,"Conn is in connect-wait, but lost its circ.");
+      connection_mark_for_close(conn,0);
+      continue;
+    }
     if(circ->purpose == CIRCUIT_PURPOSE_C_REND_JOINED) {
       if (now - conn->timestamp_lastread > 45) {
         log_fn(LOG_WARN,"Rend stream is %d seconds late. Giving up.",