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