Sfoglia il codice sorgente

fix some bugs in assert_connection_ok

svn:r1118
Roger Dingledine 21 anni fa
parent
commit
7985f525ec
2 ha cambiato i file con 4 aggiunte e 8 eliminazioni
  1. 3 5
      src/or/connection.c
  2. 1 3
      src/or/dns.c

+ 3 - 5
src/or/connection.c

@@ -778,7 +778,7 @@ void assert_connection_ok(connection_t *conn, time_t now)
     if(conn->state == OR_CONN_STATE_OPEN) {
       assert(conn->bandwidth > 0);
       assert(conn->receiver_bucket >= 0);
-      assert(conn->receiver_bucket <= 10*conn->bandwidth);
+//      assert(conn->receiver_bucket <= 10*conn->bandwidth);
     }
     assert(conn->addr && conn->port);
     assert(conn->address);
@@ -795,14 +795,11 @@ void assert_connection_ok(connection_t *conn, time_t now)
     assert(!conn->done_sending);
     assert(!conn->done_receiving);
   } else {
-    assert(!conn->next_stream ||
-           conn->next_stream->type == CONN_TYPE_EXIT ||
-           conn->next_stream->type == CONN_TYPE_AP);
     if(conn->type == CONN_TYPE_AP && conn->state == AP_CONN_STATE_OPEN)
       assert(conn->cpath_layer);
     if(conn->cpath_layer)
       assert_cpath_layer_ok(conn->cpath_layer);
-    /* XXX unchecked, package window, deliver window. */
+    /* XXX unchecked: package window, deliver window. */
   }
   if (conn->type != CONN_TYPE_AP) {
     assert(!conn->socks_request);
@@ -835,6 +832,7 @@ void assert_connection_ok(connection_t *conn, time_t now)
     case CONN_TYPE_DNSWORKER:
       assert(conn->state == DNSWORKER_STATE_IDLE ||
              conn->state == DNSWORKER_STATE_BUSY);
+      break;
     case CONN_TYPE_CPUWORKER:
       assert(conn->state >= _CPUWORKER_STATE_MIN &&
              conn->state <= _CPUWORKER_STATE_MAX);

+ 1 - 3
src/or/dns.c

@@ -337,9 +337,7 @@ static void dns_found_answer(char *address, uint32_t addr) {
       if(connection_edge_end(pend->conn, END_STREAM_REASON_RESOLVEFAILED, NULL) < 0)
         log_fn(LOG_WARN,"1: I called connection_edge_end redundantly.");
     } else {
-      /* XXX should call assert_connection_ok here */
-      assert(pend->conn->type >= _CONN_TYPE_MIN);
-      assert(pend->conn->type <= _CONN_TYPE_MAX);
+      assert_connection_ok(pend->conn, time(NULL));
       connection_exit_connect(pend->conn);
     }
     resolve->pending_connections = pend->next;