mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
r17495@catbus: nickm | 2008-01-07 12:48:56 -0500
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:r13054
This commit is contained in:
parent
becbafc9db
commit
a63eb68fe1
@ -10,6 +10,10 @@ Changes in version 0.2.0.16-alpha - 2008-01-??
|
|||||||
- Configuration files now accept C-style strings as values. This
|
- Configuration files now accept C-style strings as values. This
|
||||||
helps encode characters not allowed in the current configuration
|
helps encode characters not allowed in the current configuration
|
||||||
file format, such as newline or #. Addresses bug 557.
|
file format, such as newline or #. Addresses bug 557.
|
||||||
|
- 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.
|
||||||
|
|
||||||
o Minor performance improvements:
|
o Minor performance improvements:
|
||||||
- Reference-count and share copies of address policy entries; only
|
- Reference-count and share copies of address policy entries; only
|
||||||
|
@ -1280,7 +1280,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
|||||||
}
|
}
|
||||||
(void) skewed; /* skewed isn't used yet. */
|
(void) skewed; /* skewed isn't used yet. */
|
||||||
|
|
||||||
if (status_code == 503) {
|
if (status_code == 503 && body_len < 16) {
|
||||||
routerstatus_t *rs;
|
routerstatus_t *rs;
|
||||||
trusted_dir_server_t *ds;
|
trusted_dir_server_t *ds;
|
||||||
log_info(LD_DIR,"Received http status code %d (%s) from server "
|
log_info(LD_DIR,"Received http status code %d (%s) from server "
|
||||||
@ -1294,6 +1294,12 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
|||||||
|
|
||||||
tor_free(body); tor_free(headers); tor_free(reason);
|
tor_free(body); tor_free(headers); tor_free(reason);
|
||||||
return -1;
|
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);
|
plausible = body_is_plausible(body, body_len, conn->_base.purpose);
|
||||||
|
Loading…
Reference in New Issue
Block a user