[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] make cannibalizing for rend circs prey on the pleb circs fi...
- To: or-cvs@xxxxxxxxxxxxx
- Subject: [or-cvs] make cannibalizing for rend circs prey on the pleb circs fi...
- From: arma@xxxxxxxx (Roger Dingledine)
- Date: Wed, 19 Jan 2005 18:13:23 -0500 (EST)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Wed, 19 Jan 2005 18:14:17 -0500
- Reply-to: or-dev@xxxxxxxxxxxxx
- Sender: owner-or-cvs@xxxxxxxxxxxxx
Update of /home2/or/cvsroot/tor/src/or
In directory moria.mit.edu:/home2/arma/work/onion/cvs/tor/src/or
Modified Files:
circuitlist.c
Log Message:
make cannibalizing for rend circs prey on the pleb circs first
if possible, rather than the elite ones.
Index: circuitlist.c
===================================================================
RCS file: /home2/or/cvsroot/tor/src/or/circuitlist.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- circuitlist.c 17 Jan 2005 18:13:09 -0000 1.23
+++ circuitlist.c 19 Jan 2005 23:13:20 -0000 1.24
@@ -295,11 +295,16 @@
/** Return a circuit that is open, has specified <b>purpose</b>,
* has a timestamp_dirty value of 0, and is uptime/capacity/internal
* if required; or NULL if no circuit fits this description.
+ *
+ * Avoid returning need_uptime circuits if not necessary.
+ * FFFF As a more important goal, not yet implemented, avoid returning
+ * internal circuits if not necessary.
*/
circuit_t *
circuit_get_clean_open(uint8_t purpose, int need_uptime,
int need_capacity, int internal) {
circuit_t *circ;
+ circuit_t *best=NULL;
log_fn(LOG_DEBUG,"Hunting for a circ to cannibalize: purpose %d, uptime %d, capacity %d, internal %d", purpose, need_uptime, need_capacity, internal);
@@ -311,10 +316,12 @@
!circ->timestamp_dirty &&
(!need_uptime || circ->build_state->need_uptime) &&
(!need_capacity || circ->build_state->need_capacity) &&
- (!internal || circ->build_state->is_internal))
- return circ;
+ (!internal || circ->build_state->is_internal)) {
+ if (!best || (best->build_state->need_uptime && !need_uptime))
+ best = circ;
+ }
}
- return NULL;
+ return best;
}
/** Mark <b>circ</b> to be closed next time we call