Directory authorities should never send a 503 "busy" response to

requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
bug 959.


svn:r19189
This commit is contained in:
Roger Dingledine 2009-03-31 01:29:07 +00:00
parent b949871a1e
commit 793f1ce007
2 changed files with 7 additions and 4 deletions

View File

@ -1,4 +1,4 @@
Changes in version 0.2.1.14-??? - 2009-03-?? Changes in version 0.2.1.14-??? - 2009-04-??
o Minor bugfixes: o Minor bugfixes:
- Avoid trying to print raw memory to the logs when we decide to - Avoid trying to print raw memory to the logs when we decide to
give up on downloading a given relay descriptor. Bugfix on give up on downloading a given relay descriptor. Bugfix on
@ -16,6 +16,9 @@ Changes in version 0.2.1.14-??? - 2009-03-??
duplicating a string at the end of a page. This bug was duplicating a string at the end of a page. This bug was
harmless for now, but could have meant crashes later. Fix by harmless for now, but could have meant crashes later. Fix by
lark. Bugfix on 0.2.1.1-alpha. lark. Bugfix on 0.2.1.1-alpha.
- Directory authorities should never send a 503 "busy" response to
requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
bug 959.
o Minor features (controller): o Minor features (controller):
- Try harder to look up nicknames for routers on a circuit when - Try harder to look up nicknames for routers on a circuit when

View File

@ -2604,7 +2604,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
!strcmpstart(url,"/tor/status-vote/next/")) { !strcmpstart(url,"/tor/status-vote/next/")) {
/* XXXX If-modified-since is only implemented for the current /* XXXX If-modified-since is only implemented for the current
* consensus: that's probably fine, since it's the only vote document * consensus: that's probably fine, since it's the only vote document
* people fetch much.*/ * people fetch much. */
int current; int current;
ssize_t body_len = 0; ssize_t body_len = 0;
ssize_t estimated_len = 0; ssize_t estimated_len = 0;
@ -2670,7 +2670,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
} }
}); });
if (global_write_bucket_low(TO_CONN(conn), estimated_len, 1)) { if (global_write_bucket_low(TO_CONN(conn), estimated_len, 2)) {
write_http_status_line(conn, 503, "Directory busy, try again later."); write_http_status_line(conn, 503, "Directory busy, try again later.");
goto vote_done; goto vote_done;
} }
@ -2827,7 +2827,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
SMARTLIST_FOREACH(certs, authority_cert_t *, c, SMARTLIST_FOREACH(certs, authority_cert_t *, c,
len += c->cache_info.signed_descriptor_len); len += c->cache_info.signed_descriptor_len);
if (global_write_bucket_low(TO_CONN(conn), compressed?len/2:len, 1)) { if (global_write_bucket_low(TO_CONN(conn), compressed?len/2:len, 2)) {
write_http_status_line(conn, 503, "Directory busy, try again later."); write_http_status_line(conn, 503, "Directory busy, try again later.");
goto keys_done; goto keys_done;
} }