ソースを参照

since we don't support truncateds much, don't bother sending them;
just close the circ.

(this wasn't relevant before, because we were mis-handling destroys.)


svn:r1711

Roger Dingledine 21 年 前
コミット
fb2279b90b
3 ファイル変更14 行追加6 行削除
  1. 3 0
      src/or/circuit.c
  2. 10 5
      src/or/command.c
  3. 1 1
      src/or/connection.c

+ 3 - 0
src/or/circuit.c

@@ -1573,9 +1573,12 @@ int circuit_extend(cell_t *cell, circuit_t *circ) {
     struct in_addr in;
     in.s_addr = htonl(circ->n_addr);
     log_fn(LOG_INFO,"Next router (%s:%d) not connected. Closing.", inet_ntoa(in), circ->n_port);
+#if 0 /* if we do truncateds, no need to kill circ */
     connection_edge_send_command(NULL, circ, RELAY_COMMAND_TRUNCATED,
                                  NULL, 0, NULL);
     return 0;
+#endif
+    return -1;
   }
 
   circ->n_addr = n_conn->addr; /* these are different if we found a twin instead */

+ 10 - 5
src/or/command.c

@@ -200,15 +200,20 @@ static void command_process_destroy_cell(cell_t *cell, connection_t *conn) {
     onion_pending_remove(circ);
   }
 
-  if(cell->circ_id == circ->p_circ_id || CIRCUIT_IS_ORIGIN(circ)) {
-    /* either the destroy came from behind, or we're the AP */
+  if(cell->circ_id == circ->p_circ_id) {
+    /* the destroy came from behind */
     circ->p_conn = NULL;
     circuit_mark_for_close(circ);
   } else { /* the destroy came from ahead */
     circ->n_conn = NULL;
-    log_fn(LOG_DEBUG, "Delivering 'truncated' back.");
-    connection_edge_send_command(NULL, circ, RELAY_COMMAND_TRUNCATED,
-                                 NULL, 0, NULL);
+#if 0
+    if(!CIRCUIT_IS_ORIGIN(circ)) {
+      log_fn(LOG_DEBUG, "Delivering 'truncated' back.");
+      connection_edge_send_command(NULL, circ, RELAY_COMMAND_TRUNCATED,
+                                   NULL, 0, NULL);
+    }
+#endif
+    circuit_mark_for_close(circ);
   }
 }
 

+ 1 - 1
src/or/connection.c

@@ -635,7 +635,7 @@ int connection_read_to_buf(connection_t *conn) {
       case TOR_TLS_ERROR:
       case TOR_TLS_CLOSE:
         log_fn(LOG_INFO,"tls error. breaking (nickname %s).",
-               conn->nickname ? conn->nickname : "not set yet");
+               conn->nickname ? conn->nickname : "not set");
         return -1; /* XXX deal with close better */
       case TOR_TLS_WANTWRITE:
         connection_start_writing(conn);