commit 8b814ef8db2b83af1fb9cd1ed69f3d2d92a33331 Author: Karsten Loesing karsten.loesing@gmx.net Date: Fri May 20 11:36:06 2016 +0200
Make "consensus-methods" line optional in votes. --- CHANGELOG.md | 2 ++ .../torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java | 8 +++++--- .../descriptor/impl/RelayNetworkStatusVoteImplTest.java | 7 +++++-- 3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md index e5789c1..45ce45f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ * Minor changes - Include a Torperf results line with more than one unrecognized key only once in the unrecognized lines. + - Make "consensus-methods" line optional in network statuses votes, + which would mean that only method 1 is supported. - Stop reporting "-----END .*-----" lines in directory key certificates as unrecognized.
diff --git a/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java b/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java index 7d59282..886612f 100644 --- a/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java +++ b/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java @@ -42,14 +42,15 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl throws DescriptorParseException { super(voteBytes, failUnrecognizedDescriptorLines, false, false); Set<String> exactlyOnceKeywords = new HashSet<>(Arrays.asList(( - "vote-status,consensus-methods,published,valid-after,fresh-until," + "vote-status,published,valid-after,fresh-until," + "valid-until,voting-delay,known-flags,dir-source," + "dir-key-certificate-version,fingerprint,dir-key-published," + "dir-key-expires,dir-identity-key,dir-signing-key," + "dir-key-certification,directory-signature").split(","))); this.checkExactlyOnceKeywords(exactlyOnceKeywords); Set<String> atMostOnceKeywords = new HashSet<>(Arrays.asList(( - "client-versions,server-versions,flag-thresholds,params,contact," + "consensus-methods,client-versions,server-versions," + + "flag-thresholds,params,contact," + "legacy-key,dir-key-crosscert,dir-address,directory-footer"). split(","))); this.checkAtMostOnceKeywords(atMostOnceKeywords); @@ -499,7 +500,8 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
private Integer[] consensusMethods; public List<Integer> getConsensusMethods() { - return Arrays.asList(this.consensusMethods); + return this.consensusMethods == null ? null : + Arrays.asList(this.consensusMethods); }
private long publishedMillis; diff --git a/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java b/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java index 17f59a8..6111b59 100644 --- a/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java +++ b/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java @@ -4,6 +4,7 @@ package org.torproject.descriptor.impl;
import org.torproject.descriptor.DescriptorParseException; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue;
import java.util.ArrayList; @@ -622,10 +623,12 @@ public class RelayNetworkStatusVoteImplTest { "vote-status TheMagicVoteStatus"); }
- @Test(expected = DescriptorParseException.class) + @Test() public void testConsensusMethodNoLine() throws DescriptorParseException { - VoteBuilder.createWithConsensusMethodsLine(null); + RelayNetworkStatusVote vote = + VoteBuilder.createWithConsensusMethodsLine(null); + assertNull(vote.getConsensusMethods()); }
@Test(expected = DescriptorParseException.class)
tor-commits@lists.torproject.org