Преглед изворни кода

minor race condition

(it seemed to work anyway, but...)


svn:r100
Roger Dingledine пре 22 година
родитељ
комит
1e4e0244dd
2 измењених фајлова са 4 додато и 4 уклоњено
  1. 3 2
      src/or/connection.c
  2. 1 2
      src/or/connection_ap.c

+ 3 - 2
src/or/connection.c

@@ -635,8 +635,9 @@ int connection_consider_sending_sendme(connection_t *conn) {
 
   circ = circuit_get_by_conn(conn);
   if(!circ) {
-    log(LOG_DEBUG,"connection_consider_sending_sendme(): Bug: no circuit associated with conn. Closing.");
-    return -1;
+    /* this can legitimately happen if the destroy has already arrived and torn down the circuit */
+    log(LOG_DEBUG,"connection_consider_sending_sendme(): No circuit associated with conn. Skipping.");
+    return 0;
   }
   sendme.command = CELL_SENDME;
   sendme.length = RECEIVE_WINDOW_INCREMENT;

+ 1 - 2
src/or/connection_ap.c

@@ -365,8 +365,7 @@ int connection_ap_finished_flushing(connection_t *conn) {
     case AP_CONN_STATE_OPEN:
       /* FIXME down the road, we'll clear out circuits that are pending to close */
       connection_stop_writing(conn);
-      connection_consider_sending_sendme(conn);
-      return 0;
+      return connection_consider_sending_sendme(conn);
     default:
       log(LOG_DEBUG,"Bug: connection_ap_finished_flushing() called in unexpected state.");
       return 0;