mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
r17496@catbus: nickm | 2008-01-07 12:49:06 -0500
Backport: Consequence of fix for 539: when a client gets a 503 response with a nontrivial body, pretend it got a 200 response. This lets clients use information erroneously sent to them by old buggy servers. svn:r13055
This commit is contained in:
@@ -35,6 +35,10 @@ Changes in version 0.1.2.19 - 2008-01-??
|
||||
directory caches, and then we learned about a new descriptor for
|
||||
that router, we weren't resetting our failure count. Reported
|
||||
by lodger.
|
||||
- Although we fixed bug 539 (where servers would send HTTP status 503
|
||||
responses _and_ send a body too), there are still servers out there
|
||||
that haven't upgraded. Therefore, make clients parse such bodies
|
||||
when they receive them.
|
||||
|
||||
|
||||
Changes in version 0.1.2.18 - 2007-10-28
|
||||
|
||||
+7
-1
@@ -932,7 +932,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
||||
}
|
||||
(void) skewed; /* skewed isn't used yet. */
|
||||
|
||||
if (status_code == 503) {
|
||||
if (status_code == 503 && body_len < 16) {
|
||||
local_routerstatus_t *rs;
|
||||
trusted_dir_server_t *ds;
|
||||
time_t now = time(NULL);
|
||||
@@ -947,6 +947,12 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
||||
|
||||
tor_free(body); tor_free(headers); tor_free(reason);
|
||||
return -1;
|
||||
} else if (status_code == 503) {
|
||||
/* XXXX022 Remove this once every server with bug 539 is obsolete. */
|
||||
log_info(LD_DIR, "Server at '%s:%d' sent us a 503 response, but included "
|
||||
"a body anyway. We'll pretend it gave us a 200.",
|
||||
conn->_base.address, conn->_base.port);
|
||||
status_code = 200;
|
||||
}
|
||||
|
||||
plausible = body_is_plausible(body, body_len, conn->_base.purpose);
|
||||
|
||||
Reference in New Issue
Block a user