mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
Make dir servers include a "Date:" http header more often
Directory servers now include a "Date:" http header for response codes other than 200. Clients starting with a skewed clock and a recent consensus were getting "304 Not modified" responses from directory authorities, so without a Date header the client would never hear about a wrong clock. Fixes bug 23499; bugfix on 0.0.8rc1.
This commit is contained in:
parent
dcd0aea85e
commit
eb429232ef
6
changes/bug23499
Normal file
6
changes/bug23499
Normal file
@ -0,0 +1,6 @@
|
||||
o Minor bugfixes:
|
||||
- Directory servers now include a "Date:" http header for response
|
||||
codes other than 200. Clients starting with a skewed clock and a
|
||||
recent consensus were getting "304 Not modified" responses from
|
||||
directory authorities, so without a Date header the client would
|
||||
never hear about a wrong clock. Fixes bug 23499; bugfix on 0.0.8rc1.
|
@ -3479,14 +3479,28 @@ static void
|
||||
write_http_status_line(dir_connection_t *conn, int status,
|
||||
const char *reason_phrase)
|
||||
{
|
||||
char buf[256];
|
||||
if (!reason_phrase)
|
||||
char buf[256+RFC1123_TIME_LEN+1];
|
||||
char *datestring = NULL;
|
||||
|
||||
if (!reason_phrase) { /* bullet-proofing */
|
||||
reason_phrase = "unspecified";
|
||||
if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n\r\n",
|
||||
status, reason_phrase) < 0) {
|
||||
}
|
||||
|
||||
if (server_mode(get_options())) {
|
||||
/* include the Date: header, but only if we're a relay or bridge */
|
||||
char datebuf[RFC1123_TIME_LEN+1];
|
||||
format_rfc1123_time(datebuf, time(NULL));
|
||||
tor_asprintf(&datestring, "Date: %s\r\n", datebuf);
|
||||
}
|
||||
|
||||
if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n%s\r\n",
|
||||
status, reason_phrase, datestring?datestring:"") < 0) {
|
||||
log_warn(LD_BUG,"status line too long.");
|
||||
tor_free(datestring);
|
||||
return;
|
||||
}
|
||||
tor_free(datestring);
|
||||
|
||||
log_debug(LD_DIRSERV,"Wrote status 'HTTP/1.0 %d %s'", status, reason_phrase);
|
||||
connection_buf_add(buf, strlen(buf), TO_CONN(conn));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user