Directory authorities should go to the proper authority when asking for a networkstatus, even when they want a compressed one. (Also, bullet-proof the logic in case we ever accidentally request a networkstatus for a non-authority.)

svn:r5740
This commit is contained in:
Nick Mathewson 2006-01-06 18:05:48 +00:00
parent 65f76bad4f
commit f0fb9f6b0c

View File

@ -167,13 +167,14 @@ directory_get_from_dirserver(uint8_t purpose, const char *resource,
if (directconn) {
if (fetch_fresh_first && purpose == DIR_PURPOSE_FETCH_NETWORKSTATUS &&
!strcmpstart(resource,"fp/") && strlen(resource) == HEX_DIGEST_LEN+3) {
!strcmpstart(resource,"fp/") && strlen(resource) >= HEX_DIGEST_LEN+3) {
/* Try to ask the actual dirserver its opinion. */
char digest[DIGEST_LEN];
trusted_dir_server_t *ds;
base16_decode(digest, DIGEST_LEN, resource+3, HEX_DIGEST_LEN);
ds = router_get_trusteddirserver_by_digest(digest);
rs = &(ds->fake_status);
if (ds)
rs = &(ds->fake_status);
}
if (!rs && fetch_fresh_first) {
/* only ask authdirservers, and don't ask myself */