diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-12-04 11:43:11 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-12-04 11:43:11 -0500 |
commit | f50d64b62eeb7c07f2e0dd7f23499880d208a434 (patch) | |
tree | 570acef7b146b40d140a5d7420c274b1286d7a49 /src/or/dirserv.c | |
parent | cf3da63b9023875e93c05d30fb6d76e047bebe70 (diff) | |
parent | a2c09f67512e79ed2c714e698c0234b7c8fad8a9 (diff) | |
download | tor-f50d64b62eeb7c07f2e0dd7f23499880d208a434.tar.gz tor-f50d64b62eeb7c07f2e0dd7f23499880d208a434.zip |
Merge branch 'bug23826-23828_squashed'
Diffstat (limited to 'src/or/dirserv.c')
-rw-r--r-- | src/or/dirserv.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 432fe6ae2b..ce737d0b1d 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1903,21 +1903,28 @@ version_from_platform(const char *platform) /** Helper: write the router-status information in <b>rs</b> into a newly * allocated character buffer. Use the same format as in network-status * documents. If <b>version</b> is non-NULL, add a "v" line for the platform. + * + * consensus_method is the current consensus method when format is + * NS_V3_CONSENSUS or NS_V3_CONSENSUS_MICRODESC. It is ignored for other + * formats: pass ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD. + * * Return 0 on success, -1 on failure. * * The format argument has one of the following values: * NS_V2 - Output an entry suitable for a V2 NS opinion document * NS_V3_CONSENSUS - Output the first portion of a V3 NS consensus entry + * for consensus_method. * NS_V3_CONSENSUS_MICRODESC - Output the first portion of a V3 microdesc - * consensus entry. + * consensus entry for consensus_method. * NS_V3_VOTE - Output a complete V3 NS vote. If <b>vrs</b> is present, * it contains additional information for the vote. - * NS_CONTROL_PORT - Output a NS document for the control port + * NS_CONTROL_PORT - Output a NS document for the control port. */ char * routerstatus_format_entry(const routerstatus_t *rs, const char *version, const char *protocols, routerstatus_format_type_t format, + int consensus_method, const vote_routerstatus_t *vrs) { char *summary; @@ -1948,8 +1955,10 @@ routerstatus_format_entry(const routerstatus_t *rs, const char *version, * networkstatus_type_t values, with an additional control port value * added -MP */ - /* V3 microdesc consensuses don't have "a" lines. */ - if (format == NS_V3_CONSENSUS_MICRODESC) + /* V3 microdesc consensuses only have "a" lines in later consensus methods + */ + if (format == NS_V3_CONSENSUS_MICRODESC && + consensus_method < MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS) goto done; /* Possible "a" line. At most one for now. */ @@ -1958,7 +1967,7 @@ routerstatus_format_entry(const routerstatus_t *rs, const char *version, fmt_addrport(&rs->ipv6_addr, rs->ipv6_orport)); } - if (format == NS_V3_CONSENSUS) + if (format == NS_V3_CONSENSUS || format == NS_V3_CONSENSUS_MICRODESC) goto done; smartlist_add_asprintf(chunks, |