smartlist_add(items, (char*)item);
} else if (!strcmp(url, "authority")) {
const cached_dir_t *d;
- if ((d=dirvote_get_vote(NULL, 1, current, !current)))
+ int flags = DGV_BY_ID |
+ (current ? DGV_INCLUDE_PREVIOUS : DGV_INCLUDE_PENDING);
+ if ((d=dirvote_get_vote(NULL, flags)))
smartlist_add(dir_items, (cached_dir_t*)d);
} else {
const cached_dir_t *d;
smartlist_t *fps = smartlist_create();
- int by_id, include_pending, include_previous;
+ int flags;
if (!strcmpstart(url, "d/")) {
url += 2;
- by_id = 0;
- include_pending = include_previous = 1;
+ flags = DGV_BY_ID | DGV_INCLUDE_PENDING | DGV_INCLUDE_PREVIOUS;
} else {
- by_id = 1;
- include_pending = current;
- include_previous = !current;
+ flags = DGV_BY_ID |
+ (current ? DGV_INCLUDE_PREVIOUS : DGV_INCLUDE_PENDING);
}
dir_split_resource_into_fingerprints(url, fps, NULL, 1, 1);
SMARTLIST_FOREACH(fps, char *, fp, {
- if ((d = dirvote_get_vote(fp, by_id,
- include_pending, include_previous)))
+ if ((d = dirvote_get_vote(fp, flags)))
smartlist_add(dir_items, (cached_dir_t*)d);
tor_free(fp);
});
{
if (!(ds->type & V3_AUTHORITY))
continue;
- if (!dirvote_get_vote(ds->v3_identity_digest, 1, 0, 1)) {
+ if (!dirvote_get_vote(ds->v3_identity_digest,
+ DGV_BY_ID|DGV_INCLUDE_PENDING)) {
char *cp = tor_malloc(HEX_DIGEST_LEN+1);
base16_encode(cp, HEX_DIGEST_LEN+1, ds->v3_identity_digest,
DIGEST_LEN);
* consensus that's in progress. May return NULL if we have no vote for the
* authority in question. */
const cached_dir_t *
-dirvote_get_vote(const char *fp, int by_id, int include_previous,
- int include_pending)
+dirvote_get_vote(const char *fp, int flags)
{
+ int by_id = flags & DGV_BY_ID;
+ const int include_pending = flags & DGV_INCLUDE_PENDING;
+ const int include_previous = flags & DGV_INCLUDE_PREVIOUS;
+
if (!pending_vote_list && !previous_vote_list)
return NULL;
if (fp == NULL) {
/* Item access */
const char *dirvote_get_pending_consensus(void);
const char *dirvote_get_pending_detached_signatures(void);
-const cached_dir_t *dirvote_get_vote(const char *fp, int by_id,
- int include_pending,
- int include_previous);
+#define DGV_BY_ID 1
+#define DGV_INCLUDE_PENDING 2
+#define DGV_INCLUDE_PREVIOUS 4
+const cached_dir_t *dirvote_get_vote(const char *fp, int flags);
#ifdef DIRVOTE_PRIVATE
int networkstatus_check_voter_signature(networkstatus_vote_t *consensus,