mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Do not mark directories as down simply because they dont have the router descs we want.
svn:r5595
This commit is contained in:
parent
5965b3849e
commit
713c995adb
@ -818,9 +818,9 @@ body_is_plausible(const char *body, size_t len, int purpose)
|
|||||||
/** We are a client, and we've finished reading the server's
|
/** We are a client, and we've finished reading the server's
|
||||||
* response. Parse and it and act appropriately.
|
* response. Parse and it and act appropriately.
|
||||||
*
|
*
|
||||||
* If we're happy with the result (we get it and it's useful),
|
* If we're still happy with using this directory server in the future, return
|
||||||
* return 0. Otherwise return -1, and the caller should consider
|
* 0. Otherwise return -1; and the caller should consider trying the request
|
||||||
* trying the request again.
|
* again.
|
||||||
*
|
*
|
||||||
* The caller will take care of marking the connection for close.
|
* The caller will take care of marking the connection for close.
|
||||||
*/
|
*/
|
||||||
@ -1041,11 +1041,11 @@ connection_dir_client_reached_eof(connection_t *conn)
|
|||||||
n_asked_for = smartlist_len(which);
|
n_asked_for = smartlist_len(which);
|
||||||
}
|
}
|
||||||
if (status_code != 200) {
|
if (status_code != 200) {
|
||||||
int no_warn = status_code == 404 ||
|
int dir_okay = status_code == 404 ||
|
||||||
(status_code == 400 && !strcmp(reason, "Servers unavailable."));
|
(status_code == 400 && strcmp(reason, "Servers unavailable."));
|
||||||
/* 404 means that it didn't have them; no big deal.
|
/* 404 means that it didn't have them; no big deal.
|
||||||
* Older (pre-0.1.1.8) servers said 400 Servers unavailable instead. */
|
* Older (pre-0.1.1.8) servers said 400 Servers unavailable instead. */
|
||||||
log_fn(no_warn ? LOG_INFO : LOG_WARN, LD_DIR,
|
log_fn(dir_okay ? LOG_INFO : LOG_WARN, LD_DIR,
|
||||||
"Received http status code %d (\"%s\") from server '%s:%d' "
|
"Received http status code %d (\"%s\") from server '%s:%d' "
|
||||||
"while fetching \"/tor/server/%s\". I'll try again soon.",
|
"while fetching \"/tor/server/%s\". I'll try again soon.",
|
||||||
status_code, reason, conn->address, conn->port,
|
status_code, reason, conn->address, conn->port,
|
||||||
@ -1058,7 +1058,7 @@ connection_dir_client_reached_eof(connection_t *conn)
|
|||||||
smartlist_free(which);
|
smartlist_free(which);
|
||||||
}
|
}
|
||||||
tor_free(body); tor_free(headers); tor_free(reason);
|
tor_free(body); tor_free(headers); tor_free(reason);
|
||||||
return -1;
|
return dir_okay ? 0 : -1;
|
||||||
}
|
}
|
||||||
/* Learn the routers, assuming we requested by fingerprint or "all".
|
/* Learn the routers, assuming we requested by fingerprint or "all".
|
||||||
* Right now, we only use "authority" to fetch ourself, so we don't want
|
* Right now, we only use "authority" to fetch ourself, so we don't want
|
||||||
@ -1182,15 +1182,6 @@ connection_dir_reached_eof(connection_t *conn)
|
|||||||
int retval;
|
int retval;
|
||||||
if (conn->state != DIR_CONN_STATE_CLIENT_READING) {
|
if (conn->state != DIR_CONN_STATE_CLIENT_READING) {
|
||||||
info(LD_HTTP,"conn reached eof, not reading. Closing.");
|
info(LD_HTTP,"conn reached eof, not reading. Closing.");
|
||||||
/* This check is temporary; it's to let us know whether we should consider
|
|
||||||
* parsing partial serverdesc responses. */
|
|
||||||
if (conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC &&
|
|
||||||
buf_datalen(conn->inbuf)>=(24*1024)) {
|
|
||||||
notice(LD_DIR,
|
|
||||||
"Directory connection closed early after downloading %d bytes of "
|
|
||||||
"descriptors. If this happens often, please file a bug report.",
|
|
||||||
(int)buf_datalen(conn->inbuf));
|
|
||||||
}
|
|
||||||
connection_close_immediate(conn); /* error: give up on flushing */
|
connection_close_immediate(conn); /* error: give up on flushing */
|
||||||
connection_mark_for_close(conn);
|
connection_mark_for_close(conn);
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user