|
@@ -147,6 +147,10 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
|
|
|
int no_save, time_t listed_at,
|
|
|
smartlist_t *requested_digests256)
|
|
|
{
|
|
|
+ void * const DIGEST_REQUESTED = (void*)1;
|
|
|
+ void * const DIGEST_RECEIVED = (void*)2;
|
|
|
+ void * const DIGEST_INVALID = (void*)3;
|
|
|
+
|
|
|
smartlist_t *descriptors, *added;
|
|
|
const int allow_annotations = (where != SAVED_NOWHERE);
|
|
|
smartlist_t *invalid_digests = smartlist_new();
|
|
@@ -162,15 +166,16 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
|
|
|
digestmap_t *requested; /* XXXX actually we should just use a
|
|
|
digest256map */
|
|
|
requested = digestmap_new();
|
|
|
- /* Set requested[d] to 1 for every md we requested. */
|
|
|
+ /* Set requested[d] to DIGEST_REQUESTED for every md we requested. */
|
|
|
SMARTLIST_FOREACH(requested_digests256, const char *, cp,
|
|
|
- digestmap_set(requested, cp, (void*)1));
|
|
|
- /* Set requested[d] to 3 for every md we requested which we will never be
|
|
|
- * able to parse. Remove the ones we didn't request from invalid_digests.
|
|
|
+ digestmap_set(requested, cp, DIGEST_REQUESTED));
|
|
|
+ /* Set requested[d] to DIGEST_INVALID for every md we requested which we
|
|
|
+ * will never be able to parse. Remove the ones we didn't request from
|
|
|
+ * invalid_digests.
|
|
|
*/
|
|
|
SMARTLIST_FOREACH_BEGIN(invalid_digests, char *, cp) {
|
|
|
if (digestmap_get(requested, cp)) {
|
|
|
- digestmap_set(requested, cp, (void*)3);
|
|
|
+ digestmap_set(requested, cp, DIGEST_INVALID);
|
|
|
} else {
|
|
|
tor_free(cp);
|
|
|
SMARTLIST_DEL_CURRENT(invalid_digests, cp);
|
|
@@ -181,7 +186,7 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
|
|
|
*/
|
|
|
SMARTLIST_FOREACH_BEGIN(descriptors, microdesc_t *, md) {
|
|
|
if (digestmap_get(requested, md->digest)) {
|
|
|
- digestmap_set(requested, md->digest, (void*)2);
|
|
|
+ digestmap_set(requested, md->digest, DIGEST_RECEIVED);
|
|
|
} else {
|
|
|
log_fn(LOG_PROTOCOL_WARN, LD_DIR, "Received non-requested microdesc");
|
|
|
microdesc_free(md);
|
|
@@ -192,7 +197,7 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
|
|
|
*/
|
|
|
SMARTLIST_FOREACH_BEGIN(requested_digests256, char *, cp) {
|
|
|
void *status = digestmap_get(requested, cp);
|
|
|
- if (status == (void*)2 || status == (void*)3) {
|
|
|
+ if (status == DIGEST_RECEIVED || status == DIGEST_INVALID) {
|
|
|
tor_free(cp);
|
|
|
SMARTLIST_DEL_CURRENT(requested_digests256, cp);
|
|
|
}
|