Clean up some more fingerprint-checking logic

svn:r4954
This commit is contained in:
Nick Mathewson 2005-09-08 21:39:39 +00:00
parent 587b513ec0
commit d410c49965
2 changed files with 9 additions and 3 deletions

View File

@ -899,8 +899,12 @@ connection_dir_client_reached_eof(connection_t *conn)
} }
if (conn->requested_resource && if (conn->requested_resource &&
!strcmpstart(conn->requested_resource,"fp/")) { !strcmpstart(conn->requested_resource,"fp/")) {
int n;
which = smartlist_create(); which = smartlist_create();
smartlist_split_string(which, conn->requested_resource+3, "+", 0, -1); smartlist_split_string(which, conn->requested_resource+3, "+", 0, -1);
n = smartlist_len(which);
if (n && strlen(smartlist_get(which,n-1))==HEX_DIGEST_LEN+2)
((char*)smartlist_get(which,n-1))[HEX_DIGEST_LEN] = '\0';
} }
cp = body; cp = body;
while (*cp) { while (*cp) {

View File

@ -1247,7 +1247,9 @@ router_set_networkstatus(const char *s, time_t arrived_at,
if (requested_fingerprints && if (requested_fingerprints &&
!smartlist_string_isin(requested_fingerprints, fp)) { !smartlist_string_isin(requested_fingerprints, fp)) {
log_fn(LOG_WARN, "We received a network status with a fingerprint (%s) that we never requested. Dropping.", fp); char *requested = smartlist_join_strings(requested_fingerprints," ",0,NULL);
log_fn(LOG_WARN, "We received a network status with a fingerprint (%s) that we never requested. (%s) Dropping.", fp, requested);
tor_free(requested);
return 0; return 0;
} }
@ -1333,7 +1335,6 @@ update_networkstatus_cache_downloads(time_t now)
} }
} }
/*XXXX Should these be configurable? NM*/ /*XXXX Should these be configurable? NM*/
/** How old (in seconds) can a network-status be before we stop believing it? */ /** How old (in seconds) can a network-status be before we stop believing it? */
#define NETWORKSTATUS_MAX_VALIDITY (48*60*60) #define NETWORKSTATUS_MAX_VALIDITY (48*60*60)
@ -1405,8 +1406,9 @@ update_networkstatus_client_downloads(time_t now)
ds = smartlist_get(trusted_dir_servers, i); ds = smartlist_get(trusted_dir_servers, i);
base16_encode(cp, HEX_DIGEST_LEN+1, ds->digest, DIGEST_LEN); base16_encode(cp, HEX_DIGEST_LEN+1, ds->digest, DIGEST_LEN);
cp += HEX_DIGEST_LEN; cp += HEX_DIGEST_LEN;
*cp++ = '+';
--needed; --needed;
if (needed)
*cp++ = '+';
} }
memcpy(cp, ".z", 3); memcpy(cp, ".z", 3);
directory_get_from_dirserver(DIR_PURPOSE_FETCH_NETWORKSTATUS, resource, 1); directory_get_from_dirserver(DIR_PURPOSE_FETCH_NETWORKSTATUS, resource, 1);