diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 10bd273319..1710fb5a04 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -1418,6 +1418,12 @@ dirvote_add_vote(const char *vote_body, const char **msg_out, int *status_out) v->vote_body = new_cached_dir(tor_strdup(vote_body), vote->published); v->vote = vote; + if (end_of_vote && + !strcmpstart(end_of_vote, "network-status-version")) + goto again; + + if (!*status_out) + *status_out = 200; *msg_out = "ok"; return v; } else { @@ -1450,7 +1456,7 @@ dirvote_add_vote(const char *vote_body, const char **msg_out, int *status_out) networkstatus_vote_free(vote); if (!*msg_out) *msg_out = "Error adding vote"; - if (!*status_out) + if (!*status_out || *status_out == 200) *status_out = 400; if (end_of_vote && !strcmpstart(end_of_vote, "network-status-version "))