[metrics-db/master] Handle @type annotations when reading descriptors.

commit 65c525c2ac7f2f4a751615a3cab901b52ce99b6f Author: Karsten Loesing <karsten.loesing@gmx.net> Date: Fri May 11 16:17:09 2012 +0200 Handle @type annotations when reading descriptors. --- .../torproject/ernie/db/RelayDescriptorParser.java | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/src/org/torproject/ernie/db/RelayDescriptorParser.java b/src/org/torproject/ernie/db/RelayDescriptorParser.java index f3e90f2..be54656 100644 --- a/src/org/torproject/ernie/db/RelayDescriptorParser.java +++ b/src/org/torproject/ernie/db/RelayDescriptorParser.java @@ -69,7 +69,10 @@ public class RelayDescriptorParser { * anyway. */ BufferedReader br = new BufferedReader(new StringReader(new String( data, "US-ASCII"))); - String line = br.readLine(); + String line; + do { + line = br.readLine(); + } while (line != null && line.startsWith("@")); if (line == null) { this.logger.fine("We were given an empty descriptor for " + "parsing. Ignoring."); @@ -227,6 +230,15 @@ public class RelayDescriptorParser { String sigToken = "\nrouter-signature\n"; String digest = null; int start = ascii.indexOf(startToken); + if (start > 0) { + /* Do not confuse "extra-info " in "@type extra-info 1.0" with + * "extra-info 0000...". TODO This is a hack that should be + * solved by using metrics-lib some day. */ + start = ascii.indexOf("\n" + startToken); + if (start > 0) { + start++; + } + } int sig = ascii.indexOf(sigToken) + sigToken.length(); if (start >= 0 || sig >= 0 || sig > start) { byte[] forDigest = new byte[sig - start];
participants (1)
-
karsten@torproject.org