commit f3a170fb74e753d71d6c2513f4c09fc789286ad4 Author: Karsten Loesing karsten.loesing@gmx.net Date: Tue Jun 17 20:32:55 2014 +0200
Clear sets used to validate at-most-once/exactly-once keywords.
Related to 5caa384. Similarly, keeping these sets around just wastes heap space. --- src/org/torproject/descriptor/impl/DirSourceEntryImpl.java | 6 ++++-- src/org/torproject/descriptor/impl/ExitListEntryImpl.java | 5 +++-- src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java | 5 +++++ 3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java b/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java index bd97948..0156790 100644 --- a/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java +++ b/src/org/torproject/descriptor/impl/DirSourceEntryImpl.java @@ -33,7 +33,7 @@ public class DirSourceEntryImpl implements DirSourceEntry { failUnrecognizedDescriptorLines; this.initializeKeywords(); this.parseDirSourceEntryBytes(); - this.checkKeywords(); + this.checkAndClearKeywords(); }
private SortedSet<String> exactlyOnceKeywords, atMostOnceKeywords; @@ -63,11 +63,13 @@ public class DirSourceEntryImpl implements DirSourceEntry { this.atMostOnceKeywords.remove(keyword); }
- private void checkKeywords() throws DescriptorParseException { + private void checkAndClearKeywords() throws DescriptorParseException { if (!this.exactlyOnceKeywords.isEmpty()) { throw new DescriptorParseException("dir-source does not contain a '" + this.exactlyOnceKeywords.first() + "' line."); } + this.exactlyOnceKeywords = null; + this.atMostOnceKeywords = null; }
private void parseDirSourceEntryBytes() diff --git a/src/org/torproject/descriptor/impl/ExitListEntryImpl.java b/src/org/torproject/descriptor/impl/ExitListEntryImpl.java index 958fd68..fc7d286 100644 --- a/src/org/torproject/descriptor/impl/ExitListEntryImpl.java +++ b/src/org/torproject/descriptor/impl/ExitListEntryImpl.java @@ -33,7 +33,7 @@ public class ExitListEntryImpl implements ExitListEntry { failUnrecognizedDescriptorLines; this.initializeKeywords(); this.parseExitListEntryBytes(); - this.checkKeywords(); + this.checkAndClearKeywords(); }
private SortedSet<String> exactlyOnceKeywords; @@ -54,11 +54,12 @@ public class ExitListEntryImpl implements ExitListEntry { this.exactlyOnceKeywords.remove(keyword); }
- private void checkKeywords() throws DescriptorParseException { + private void checkAndClearKeywords() throws DescriptorParseException { for (String missingKeyword : this.exactlyOnceKeywords) { throw new DescriptorParseException("Missing '" + missingKeyword + "' line in exit list entry."); } + this.exactlyOnceKeywords = null; }
private void parseExitListEntryBytes() diff --git a/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java b/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java index 3962009..d8aa5f0 100644 --- a/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java +++ b/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java @@ -39,6 +39,7 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry { failUnrecognizedDescriptorLines; this.initializeKeywords(); this.parseStatusEntryBytes(); + this.clearAtMostOnceKeywords(); }
private SortedSet<String> atMostOnceKeywords; @@ -218,6 +219,10 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry { } }
+ private void clearAtMostOnceKeywords() { + this.atMostOnceKeywords = null; + } + private String nickname; public String getNickname() { return this.nickname;
tor-commits@lists.torproject.org