[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Supply better and less frequent warnings on circID exhaustion
commit bb9b4c37f8e7f5cf78918f382e90d8b11ff42551
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Fri Apr 18 12:28:30 2014 -0400
Supply better and less frequent warnings on circID exhaustion
Fixes the surface behavior of #11553
---
changes/bug11553 | 5 +++++
src/or/channel.h | 2 ++
src/or/circuitbuild.c | 9 ++++++++-
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/changes/bug11553 b/changes/bug11553
new file mode 100644
index 0000000..1540f46
--- /dev/null
+++ b/changes/bug11553
@@ -0,0 +1,5 @@
+ o Minor features:
+ - When we run out of usable circuit IDs on a channel, log only one
+ warning for the whole channel, and include a description of
+ how many circuits there were on the channel. Fix for part of ticket
+ #11553.
diff --git a/src/or/channel.h b/src/or/channel.h
index 2dca817..29ba40e 100644
--- a/src/or/channel.h
+++ b/src/or/channel.h
@@ -148,6 +148,8 @@ struct channel_s {
ENUM_BF(circ_id_type_t) circ_id_type:2;
/** DOCDOC*/
unsigned wide_circ_ids:1;
+ /** Have we logged a warning about circID exhaustion on this channel? */
+ unsigned warned_circ_ids_exhausted:1;
/*
* Which circ_id do we try to use next on this connection? This is
* always in the range 0..1<<15-1.
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index e47a278..2b4d3c3 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -127,7 +127,14 @@ get_unique_circ_id_by_chan(channel_t *chan)
/* Make sure we don't loop forever if all circ_id's are used. This
* matters because it's an external DoS opportunity.
*/
- log_warn(LD_CIRC,"No unused circ IDs. Failing.");
+ if (! chan->warned_circ_ids_exhausted) {
+ chan->warned_circ_ids_exhausted = 1;
+ log_warn(LD_CIRC,"No unused circIDs found on channel %s wide "
+ "circID support, with %u inbound and %u outbound circuits. "
+ "Failing a circuit.",
+ chan->wide_circ_ids ? "with" : "without",
+ chan->num_p_circuits, chan->num_n_circuits);
+ }
return 0;
}
test_circ_id |= high_bit;
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits