浏览代码

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

svn:r1704
Roger Dingledine 21 年之前
父节点
当前提交
9e5d2ad91c
共有 1 个文件被更改,包括 5 次插入0 次删除
  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.",