[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] Attempt to track down bug in conn->package_window
Update of /home/or/cvsroot/src/or
In directory moria.mit.edu:/tmp/cvs-serv14023/or
Modified Files:
circuit.c connection.c
Log Message:
Attempt to track down bug in conn->package_window
Index: circuit.c
===================================================================
RCS file: /home/or/cvsroot/src/or/circuit.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- circuit.c 11 Aug 2003 20:22:48 -0000 1.58
+++ circuit.c 25 Aug 2003 20:57:23 -0000 1.59
@@ -405,6 +405,10 @@
(edge_type == EDGE_AP && conn->package_window > 0 && conn->cpath_layer == layer_hint)) {
connection_start_reading(conn);
connection_package_raw_inbuf(conn); /* handle whatever might still be on the inbuf */
+
+ /* If the circuit won't accept any more data, return without looking
+ * at any more of the streams. Any connections that should be stopped
+ * have already been stopped by connection_package_raw_inbuf. */
if(circuit_consider_stop_edge_reading(circ, edge_type, layer_hint))
return;
}
Index: connection.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection.c,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -d -r1.76 -r1.77
--- connection.c 23 Aug 2003 10:06:46 -0000 1.76
+++ connection.c 25 Aug 2003 20:57:23 -0000 1.77
@@ -564,6 +564,7 @@
assert(!connection_speaks_cells(conn));
repeat_connection_package_raw_inbuf:
+ assert(conn->package_window > 0);
circ = circuit_get_by_conn(conn);
if(!circ) {
@@ -620,13 +621,12 @@
}
assert(conn->package_window > 0);
- conn->package_window--;
-// if(--conn->package_window <= 0) { /* is it 0 after decrement? */
-// connection_stop_reading(conn);
-// log_fn(LOG_DEBUG,"conn->package_window reached 0.");
-// circuit_consider_stop_edge_reading(circ, conn->type, conn->cpath_layer);
-// return 0; /* don't process the inbuf any more */
-// }
+ if(--conn->package_window <= 0) { /* is it 0 after decrement? */
+ connection_stop_reading(conn);
+ log_fn(LOG_DEBUG,"conn->package_window reached 0.");
+ circuit_consider_stop_edge_reading(circ, conn->type, conn->cpath_layer);
+ return 0; /* don't process the inbuf any more */
+ }
log_fn(LOG_DEBUG,"conn->package_window is now %d",conn->package_window);
/* handle more if there's more, or return 0 if there isn't */