tor-hsservice: Retry any failed descriptor uploads.
This builds on top of !1812 (merged)
Note the publisher already had a mechanism for retrying failed uploads:
our existing retry mechanism involves retrying the failed upload until
it succeeds, or until the the timeout specified in
PublisherBackoffSchedule::timeout()
elapses.
Previously, if the descriptor could not be uploaded after
PublisherBackoffSchedule::timeout()
time units of trying, it would be
declared a failure (UploadStatus::Failure), and never retried again.
Now, if the UploadStatus
of any given HsDir
is Failure
, the
publisher reschedules the upload at a later time (which will cause it to
be retried again until it succeeds, or gets rescheduled yet again).
There is no upper limit for the number of times we retry an upload (but
perhaps there should be).
Closes #1098