Draft: Implement a retry-after-delay mechanism for FallbackDirs
Similar to the behavior of guards, we now penalize FallbackDir
s when they give us invalid information, and don't try them again for a while.
This approach still needs fine-tuning, and parts of the code are a bit unsightly. It marginally improves our behavior under some circumstances for #329 (closed), though, and enables further efficiency improvements.
edited to add:
I can confirm that this resolves #406 (closed). Previous behavior was:
TCP stats: TcpCount { n_connect_attempt: 2140, n_connect_ok: 2140, n_accept: 0, n_bytes_send: 2446020, n_bytes_recv: 7411362 }
Total events: Trace: 25698, Debug: 3680, Info: 4206, Warn: 26, Error: 0
With this branch:
TCP stats: TcpCount { n_connect_attempt: 10, n_connect_ok: 10, n_accept: 0, n_bytes_send: 11430, n_bytes_recv: 34754 }
Total events: Trace: 128, Debug: 38, Info: 33, Warn: 1, Error: 0
So: Closes #406 (closed).
Edited by Nick Mathewson