summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--DESIGN19
1 files changed, 19 insertions, 0 deletions
diff --git a/DESIGN b/DESIGN
index 323a753..d365fb5 100644
--- a/DESIGN
+++ b/DESIGN
@@ -81,6 +81,25 @@ finish a sweep in OT_CLEAN_INTERVAL_MINUTES. At the default bucket count that
81is one bucket every 117 ms. 81is one bucket every 117 ms.
82 82
83 83
84A refused announce is answered over UDP with a well formed announce for an
85empty swarm rather than with the error action. BEP 15 binds a client to the
86interval it is handed and says nothing about what a client should do with an
87error, so an error puts the client on its own retry schedule instead. Over
88five minutes against one blacklisted torrent, libtorrent 2.0.8 sent seven
89connects and three announces to a tracker answering with the error and two of
90each to one answering with an empty swarm, and was still going on a widening
91backoff. Transmission 3.00 retries twenty seconds after an error, then at
92five, fifteen, thirty, sixty and finally every hundred and twenty minutes.
93That last figure sets OT_CLIENT_REJECT_INTERVAL: at anything under two hours
94Transmission's own backoff would be the cheaper of the two in steady state.
95Neither client bounds a tracker's interval from above, and libtorrent clamps
96it from below at five minutes.
97
98The reject interval is a constant and not a config entry, because the
99ordinary announce interval is a constant too and an operator has nothing to
100measure a different value against. Over HTTP a refusal stays a failure
101reason, which is the only place a user is told why.
102
84Startup and teardown order 103Startup and teardown order
85-------------------------- 104--------------------------
86 105