[or-cvs] prune abandoned circs better

Roger Dingledine arma at seul.org
Wed Apr 14 23:52:32 UTC 2004


Update of /home/or/cvsroot/src/or
In directory moria.mit.edu:/home2/arma/work/onion/cvs/src/or

Modified Files:
	circuit.c connection_edge.c rendservice.c 
Log Message:
prune abandoned circs better
add debugging info for the bug weasel found


Index: circuit.c
===================================================================
RCS file: /home/or/cvsroot/src/or/circuit.c,v
retrieving revision 1.209
retrieving revision 1.210
diff -u -d -r1.209 -r1.210
--- circuit.c	14 Apr 2004 21:40:50 -0000	1.209
+++ circuit.c	14 Apr 2004 23:52:29 -0000	1.210
@@ -474,11 +474,15 @@
      * intro or rend, then mark it for close */
     if(victim->state != CIRCUIT_STATE_OPEN ||
        victim->purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND ||
+       victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING ||
        victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO ||
+
        /* c_rend_ready circs measure age since timestamp_dirty,
         * because that's set when they switch purposes
         */
-       (victim->purpose == CIRCUIT_PURPOSE_C_REND_READY &&
+       ((victim->purpose == CIRCUIT_PURPOSE_C_REND_READY ||
+         victim->purpose == CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED ||
+         victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) &&
         victim->timestamp_dirty + MIN_SECONDS_BEFORE_EXPIRING_CIRC > now)) {
       if(victim->n_conn)
         log_fn(LOG_INFO,"Abandoning circ %s:%d:%d (state %d:%s)",

Index: connection_edge.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection_edge.c,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -d -r1.161 -r1.162
--- connection_edge.c	14 Apr 2004 05:18:21 -0000	1.161
+++ connection_edge.c	14 Apr 2004 23:52:29 -0000	1.162
@@ -1150,19 +1150,24 @@
     return 0;
   }
 
+  log_fn(LOG_DEBUG,"finished adding conn");
+
   /* add it into the linked list of streams on this circuit */
   n_stream->next_stream = circ->n_streams;
   circ->n_streams = n_stream;
 
   if(circ->purpose == CIRCUIT_PURPOSE_S_REND_JOINED) {
+    log_fn(LOG_DEBUG,"begin is for rendezvous. configuring stream.");
     n_stream->address = tor_strdup("(rendezvous)");
     n_stream->state = EXIT_CONN_STATE_CONNECTING;
     strcpy(n_stream->rend_query, circ->rend_query);
+    assert(n_stream->rend_query[0]);
     if(rend_service_set_connection_addr_port(n_stream, circ) < 0) {
       log_fn(LOG_WARN,"Didn't find rendezvous service (port %d)",n_stream->port);
       connection_mark_for_close(n_stream,0 /* XXX */);
       return 0;
     }
+    log_fn(LOG_DEBUG,"Finished assigning addr/port");
     n_stream->cpath_layer = circ->cpath->prev; /* link it */
     connection_exit_connect(n_stream);
     return 0;
@@ -1196,6 +1201,7 @@
     return;
   }
 
+  log_fn(LOG_DEBUG,"about to try connecting");
   switch(connection_connect(conn, conn->address, conn->addr, conn->port)) {
     case -1:
       connection_mark_for_close(conn, END_STREAM_REASON_CONNECTFAILED);

Index: rendservice.c
===================================================================
RCS file: /home/or/cvsroot/src/or/rendservice.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- rendservice.c	14 Apr 2004 21:40:50 -0000	1.52
+++ rendservice.c	14 Apr 2004 23:52:29 -0000	1.53
@@ -884,6 +884,7 @@
   char serviceid[REND_SERVICE_ID_LEN];
 
   assert(circ->purpose == CIRCUIT_PURPOSE_S_REND_JOINED);
+  log_fn(LOG_DEBUG,"beginning to hunt for addr/port");
   if (base32_encode(serviceid, REND_SERVICE_ID_LEN+1,
                     circ->rend_pk_digest,10)) {
     return -1;



More information about the tor-commits mailing list