metrics-lib.git
2 months agoParse micodesc consensuses and microdescriptors. master
Karsten Loesing [Thu, 9 Jan 2014 13:24:03 +0000 (14:24 +0100)]
Parse micodesc consensuses and microdescriptors.

Required for implementing #2785.

8 months agoFix build errors on Debian systems.
Jens-Michael Hoffmann [Wed, 31 Jul 2013 14:10:27 +0000 (16:10 +0200)]
Fix build errors on Debian systems.

The local lib directory is not used anymore and respective references
were removed. The java dependencies are now specified in the build.xml
and taken from their installed locations.

In addition to git, openjdk-6-jdk and ant the following java packages
have to be installed:
 - libcommons-codec-java
 - libcommons-compress-java
 - junit4

Minor tweaks by Karsten Loesing.

8 months agoAdd tests for published lines containing milliseconds.
Karsten Loesing [Thu, 18 Jul 2013 12:21:36 +0000 (14:21 +0200)]
Add tests for published lines containing milliseconds.

Milliseconds are simply ignored, because SimpleDateFormat only looks at
"yyyy-MM-dd HH:mm:ss" and ignores everything after that.

Related to #9286 where we discovered that some relays include milliseconds
in their descriptors.

9 months agoFast exits read/write more than MAX_INT KiB per day.
Karsten Loesing [Mon, 8 Jul 2013 10:53:53 +0000 (12:53 +0200)]
Fast exits read/write more than MAX_INT KiB per day.

For example, see "other" entry in:

  exit-kibibytes-read 80=505190490,182=25102395,443=61873906,
    6881=47999666,8989=8657674,17173=7910494,21762=9138992,
    45682=5154543,50500=6086469,51413=62394452,other=2282907805

11 months agoRestrict valid keyword characters to [A-Za-z0-9-]+.
Karsten Loesing [Fri, 3 May 2013 13:32:13 +0000 (15:32 +0200)]
Restrict valid keyword characters to [A-Za-z0-9-]+.

Fixes #8798.

11 months agoSupport bridge-ip-transports lines in extra-infos.
Karsten Loesing [Fri, 19 Apr 2013 18:57:31 +0000 (20:57 +0200)]
Support bridge-ip-transports lines in extra-infos.

12 months agoParse Unmeasured=1 in w lines of consensuses.
Karsten Loesing [Tue, 9 Apr 2013 06:36:53 +0000 (08:36 +0200)]
Parse Unmeasured=1 in w lines of consensuses.

Pointed out by atagar.

14 months agoguard-tk actually stands for *weighted* time known.
Karsten Loesing [Tue, 5 Feb 2013 14:37:12 +0000 (15:37 +0100)]
guard-tk actually stands for *weighted* time known.

14 months agoParse the new flag-thresholds line in votes.
Karsten Loesing [Tue, 5 Feb 2013 13:49:28 +0000 (14:49 +0100)]
Parse the new flag-thresholds line in votes.

15 months agoAdd parsing support for ntor-onion-key line.
Karsten Loesing [Mon, 7 Jan 2013 04:23:22 +0000 (05:23 +0100)]
Add parsing support for ntor-onion-key line.

Spotted by atagar; see #7867.

15 months agoParse ipv6-policy lines in server descriptors.
Karsten Loesing [Sun, 30 Dec 2012 18:54:06 +0000 (19:54 +0100)]
Parse ipv6-policy lines in server descriptors.

Spotted by atager in related ticket #7826.

17 months agoAdd support for parsing bridge-ip-versions lines.
Karsten Loesing [Thu, 8 Nov 2012 19:18:18 +0000 (14:18 -0500)]
Add support for parsing bridge-ip-versions lines.

17 months agoAdd support for parsing geoip6-db-digest lines.
Karsten Loesing [Wed, 7 Nov 2012 18:55:23 +0000 (13:55 -0500)]
Add support for parsing geoip6-db-digest lines.

17 months agoLooks like $fingerprint~nickname is also a valid family line entry.
Karsten Loesing [Wed, 7 Nov 2012 17:27:54 +0000 (12:27 -0500)]
Looks like $fingerprint~nickname is also a valid family line entry.

Support for $fingerprint=nickname was previously added in 6a46f46.

19 months agoAllow multiple "m" lines per network status entry.
Karsten Loesing [Wed, 5 Sep 2012 08:16:41 +0000 (04:16 -0400)]
Allow multiple "m" lines per network status entry.

20 months agoRemove GetTor statistics parsing code.
Karsten Loesing [Tue, 7 Aug 2012 10:25:42 +0000 (12:25 +0200)]
Remove GetTor statistics parsing code.

20 months agoAccept transport lines containing more than just the transport name.
Karsten Loesing [Mon, 6 Aug 2012 06:08:44 +0000 (08:08 +0200)]
Accept transport lines containing more than just the transport name.

Sanitized bridge descriptors contain transport lines with just the
transport name.  However, there are now relays including unsanitized
transport lines, most likely because of a configuration problem.  Don't
reject the entire descriptor when encountering those lines.

20 months agoMake parse history in descriptor reader more accessible.
Karsten Loesing [Sat, 21 Jul 2012 10:11:47 +0000 (12:11 +0200)]
Make parse history in descriptor reader more accessible.

So far, the only way to prevent files from being parsed repeatedly in
distinct runs was to specify a history file that only metrics-lib was
supposed to read and write.  However, some applications may want to
specify the list of files to exclude themselves, or they may want to learn
which files have been excluded and which have been parsed.  These
applications shouldn't be forced to mess with the history file.

Add three methods to the descriptor reader for these applications.  They
should also play nicely together with the history file approach.

AFAIK, stem has methods with the same purpose but a slightly different
semantic.

21 months agoParse transport lines in bridge extra-infos.
Karsten Loesing [Fri, 29 Jun 2012 11:54:31 +0000 (13:54 +0200)]
Parse transport lines in bridge extra-infos.

21 months agoWe can parse all @type 1.x descriptor versions.
Karsten Loesing [Fri, 29 Jun 2012 11:29:05 +0000 (13:29 +0200)]
We can parse all @type 1.x descriptor versions.

21 months agoTweak build file a bit.
Karsten Loesing [Tue, 19 Jun 2012 12:36:44 +0000 (14:36 +0200)]
Tweak build file a bit.

21 months agoFix unit tests which were broken in 466725e.
Karsten Loesing [Tue, 19 Jun 2012 12:11:34 +0000 (14:11 +0200)]
Fix unit tests which were broken in 466725e.

22 months agoSupport parsing GetTor statistics files.
Karsten Loesing [Fri, 1 Jun 2012 09:45:06 +0000 (11:45 +0200)]
Support parsing GetTor statistics files.

22 months agoParse exit lists with @type annotation and Downloaded line.
Karsten Loesing [Thu, 31 May 2012 14:00:09 +0000 (16:00 +0200)]
Parse exit lists with @type annotation and Downloaded line.

22 months agoUnderstand @type annotation in bridge pool assignments.
Karsten Loesing [Thu, 31 May 2012 10:02:48 +0000 (12:02 +0200)]
Understand @type annotation in bridge pool assignments.

22 months agoParse sanitized bridge descriptor version 1.0.
Karsten Loesing [Mon, 21 May 2012 14:23:39 +0000 (16:23 +0200)]
Parse sanitized bridge descriptor version 1.0.

22 months agoParse new .tpf Torperf data format.
Karsten Loesing [Wed, 30 May 2012 08:59:09 +0000 (10:59 +0200)]
Parse new .tpf Torperf data format.

22 months agoParse v1 directories and contained server descriptors.
Karsten Loesing [Sat, 19 May 2012 17:30:28 +0000 (19:30 +0200)]
Parse v1 directories and contained server descriptors.

22 months agoAdd @type annotations for sanitized bridge descriptors.
Karsten Loesing [Sat, 19 May 2012 09:48:29 +0000 (11:48 +0200)]
Add @type annotations for sanitized bridge descriptors.

Spotted by Damian.

22 months agoFix unit tests.
Karsten Loesing [Sat, 19 May 2012 09:42:21 +0000 (11:42 +0200)]
Fix unit tests.

- Annotation lines starting with @ are now recognized.
- Unrecognized keywords in "w" lines are now ignored.

22 months agoIgnore unknown keywords in "w" lines.
Karsten Loesing [Sat, 19 May 2012 08:14:54 +0000 (10:14 +0200)]
Ignore unknown keywords in "w" lines.

moria1 added a Capped= keyword to debug #2286 which made DocTor and
metrics-db freak out.  The correct behavior is to ignore unknown keywords.

22 months agoCorrectly handle @type annotations when parsing descriptors.
Karsten Loesing [Fri, 18 May 2012 15:40:01 +0000 (17:40 +0200)]
Correctly handle @type annotations when parsing descriptors.

23 months agoLooks like blank lines are allowed in v2 statuses.
Karsten Loesing [Wed, 16 May 2012 15:35:17 +0000 (17:35 +0200)]
Looks like blank lines are allowed in v2 statuses.

For the moment, we still disallow blank lines in all other descriptors.
If this is not correct, we can easily fix that.

23 months agoAdd support for parsing v2 network statuses.
Karsten Loesing [Wed, 16 May 2012 15:00:46 +0000 (17:00 +0200)]
Add support for parsing v2 network statuses.

23 months agoFix unit tests.
Karsten Loesing [Wed, 16 May 2012 14:50:15 +0000 (16:50 +0200)]
Fix unit tests.

23 months agoUse the descriptor parser interface in the downloader, too.
Karsten Loesing [Wed, 9 May 2012 10:42:55 +0000 (12:42 +0200)]
Use the descriptor parser interface in the downloader, too.

23 months agoList metrics-db as another product using metrics-lib.
Karsten Loesing [Wed, 9 May 2012 10:42:29 +0000 (12:42 +0200)]
List metrics-db as another product using metrics-lib.

23 months agoAdd an in-memory descriptor parser as source.
Karsten Loesing [Wed, 9 May 2012 10:15:09 +0000 (12:15 +0200)]
Add an in-memory descriptor parser as source.

23 months agoRemove two suggested data sources from the TODO list.
Karsten Loesing [Fri, 27 Apr 2012 06:07:25 +0000 (08:07 +0200)]
Remove two suggested data sources from the TODO list.

Using Tor's control port as a data source could be useful in some cases,
but Damian and I decided it's not worth the effort.  We wouldn't learn
much new stuff compared to running a Tor client/relay and reading the
cached-* files.  Damian says that a good workaround for file permission
issues with cached-* files is to run the Tor process and Java process as
the same user.

Having a database as a data source was a nice idea, too, but we don't have
such a database.  Once we have a good database we can still write a
metrics-lib wrapper for it.

23 months agoParse certs and everything we need to verify consensuses.
Karsten Loesing [Thu, 26 Apr 2012 14:07:55 +0000 (16:07 +0200)]
Parse certs and everything we need to verify consensuses.

23 months agoFix the problems found while writing unit tests.
Karsten Loesing [Thu, 26 Apr 2012 09:54:17 +0000 (11:54 +0200)]
Fix the problems found while writing unit tests.

23 months agoAdd unit tests for all stats in extra-info descriptors.
Karsten Loesing [Thu, 26 Apr 2012 09:28:31 +0000 (11:28 +0200)]
Add unit tests for all stats in extra-info descriptors.

23 months agoOrder exit-stats numerically, not alphanumerically.
Karsten Loesing [Thu, 26 Apr 2012 06:47:41 +0000 (08:47 +0200)]
Order exit-stats numerically, not alphanumerically.

23 months agoParse annotations preceding the actual descriptors.
Karsten Loesing [Wed, 25 Apr 2012 10:08:59 +0000 (12:08 +0200)]
Parse annotations preceding the actual descriptors.

23 months agoSet file name of parsed descriptor files.
Karsten Loesing [Tue, 24 Apr 2012 13:31:43 +0000 (15:31 +0200)]
Set file name of parsed descriptor files.

23 months agoAdd a comment which descriptors had negative uptimes.
Karsten Loesing [Tue, 24 Apr 2012 10:15:57 +0000 (12:15 +0200)]
Add a comment which descriptors had negative uptimes.

23 months agoIgnore carriage returns when parsing descriptors.
Karsten Loesing [Tue, 24 Apr 2012 09:02:41 +0000 (11:02 +0200)]
Ignore carriage returns when parsing descriptors.

The problem was that BufferedReader.readLine() by default makes no
difference between \n and \r and even cannot be configured to do so.
The fix is to use the Scanner class instead.  Fixes #5637.

23 months agoThrow the right exception when parsing network statuses.
Karsten Loesing [Sat, 21 Apr 2012 06:18:50 +0000 (08:18 +0200)]
Throw the right exception when parsing network statuses.

23 months agoAdd an upper limit of 100 descriptors in the queue.
Karsten Loesing [Thu, 19 Apr 2012 18:01:54 +0000 (20:01 +0200)]
Add an upper limit of 100 descriptors in the queue.

2 years agoAccept negative uptimes and uptimes > MAXINT.
Karsten Loesing [Tue, 17 Apr 2012 16:20:54 +0000 (18:20 +0200)]
Accept negative uptimes and uptimes > MAXINT.

2 years agoAccept dates at least until signed 32-bit timestamps run out.
Karsten Loesing [Tue, 17 Apr 2012 16:10:44 +0000 (18:10 +0200)]
Accept dates at least until signed 32-bit timestamps run out.

2 years agoIgnore Eclipse's project files.
Karsten Loesing [Tue, 17 Apr 2012 15:33:09 +0000 (17:33 +0200)]
Ignore Eclipse's project files.

2 years agoImprove reading descriptors from tarballs.
Karsten Loesing [Tue, 17 Apr 2012 15:30:05 +0000 (17:30 +0200)]
Improve reading descriptors from tarballs.

2 years agoUpdate test method names.
Karsten Loesing [Tue, 17 Apr 2012 14:29:04 +0000 (16:29 +0200)]
Update test method names.

2 years agoFix indentation.
Karsten Loesing [Tue, 17 Apr 2012 14:11:23 +0000 (16:11 +0200)]
Fix indentation.

2 years agoDon't catch an exception that the caller should handle.
Karsten Loesing [Tue, 17 Apr 2012 14:10:37 +0000 (16:10 +0200)]
Don't catch an exception that the caller should handle.

2 years agoSupport reading descriptor tarballs.
Karsten Loesing [Fri, 30 Mar 2012 13:09:45 +0000 (15:09 +0200)]
Support reading descriptor tarballs.

2 years agoParse crypto parts in server descriptors.
Karsten Loesing [Fri, 30 Mar 2012 11:16:55 +0000 (13:16 +0200)]
Parse crypto parts in server descriptors.

2 years agoAdd metrics-web to the list of software using this lib.
Karsten Loesing [Fri, 30 Mar 2012 07:40:08 +0000 (09:40 +0200)]
Add metrics-web to the list of software using this lib.

2 years agoFix copy-paste bug in calculating descriptor digests.
Karsten Loesing [Fri, 23 Mar 2012 12:02:05 +0000 (13:02 +0100)]
Fix copy-paste bug in calculating descriptor digests.

Also, fix the check that had the only purpose of detecting problems,
which it totally failed to do.

2 years agoCalculate descriptor digests.
Karsten Loesing [Thu, 22 Mar 2012 14:43:12 +0000 (15:43 +0100)]
Calculate descriptor digests.

2 years agoAdd geoip and bridge stats to the interface.
Karsten Loesing [Wed, 21 Mar 2012 15:20:32 +0000 (16:20 +0100)]
Add geoip and bridge stats to the interface.

2 years agoClarify that platforms can be null.
Karsten Loesing [Wed, 21 Mar 2012 15:19:46 +0000 (16:19 +0100)]
Clarify that platforms can be null.

2 years agoClarify that stats lengths are in seconds.
Karsten Loesing [Wed, 21 Mar 2012 12:57:07 +0000 (13:57 +0100)]
Clarify that stats lengths are in seconds.

2 years agoAdd Onionoo to list of software using metrics-lib.
Karsten Loesing [Wed, 21 Mar 2012 10:23:57 +0000 (11:23 +0100)]
Add Onionoo to list of software using metrics-lib.

2 years agoAttempt to fix non-terminating DocTor runs.
Karsten Loesing [Sun, 11 Mar 2012 06:54:16 +0000 (07:54 +0100)]
Attempt to fix non-terminating DocTor runs.

Some DocTor runs had download threads running into a NullPointerException
when delivering their results.  If such a thread was the last running
download thread, it failed to complete downloads and Java didn't
terminate.

2 years agoRemove Torperf and GetTor stats readers.
Karsten Loesing [Sun, 19 Feb 2012 18:02:46 +0000 (10:02 -0800)]
Remove Torperf and GetTor stats readers.

These readers are yet unimplemented.  Also, we're going to read Torperf
and GetTor stats files using DescriptorReader.

2 years agoStart a test class for extra-info descriptors.
Karsten Loesing [Fri, 17 Feb 2012 20:04:37 +0000 (12:04 -0800)]
Start a test class for extra-info descriptors.

The various statistics contained in extra-info descriptors need more
testing.  But now there's at least some testing infrastructure for
extra-info descriptors.

2 years agoAccept exit policy lines with IPv4 masks in dotted-quad format.
Karsten Loesing [Fri, 17 Feb 2012 11:39:39 +0000 (12:39 +0100)]
Accept exit policy lines with IPv4 masks in dotted-quad format.

2 years agoParse old server descriptors with "opt read-history " lines.
Karsten Loesing [Fri, 17 Feb 2012 08:19:26 +0000 (09:19 +0100)]
Parse old server descriptors with "opt read-history  " lines.

2 years agoeventdns lines have 1 and 0 for true and false.
Karsten Loesing [Fri, 17 Feb 2012 08:02:56 +0000 (09:02 +0100)]
eventdns lines have 1 and 0 for true and false.

2 years agodirectory-footer lines were optional before consensus method 9.
Karsten Loesing [Fri, 17 Feb 2012 07:06:56 +0000 (08:06 +0100)]
directory-footer lines were optional before consensus method 9.

2 years agoFix legacy-dir-key line parsing in votes.
Karsten Loesing [Fri, 17 Feb 2012 06:48:53 +0000 (07:48 +0100)]
Fix legacy-dir-key line parsing in votes.

2 years agoAdd support for parsing exit lists.
Karsten Loesing [Thu, 2 Feb 2012 07:11:15 +0000 (08:11 +0100)]
Add support for parsing exit lists.

2 years agoUse a single interface for reading descriptors.
Karsten Loesing [Thu, 2 Feb 2012 07:08:07 +0000 (08:08 +0100)]
Use a single interface for reading descriptors.

2 years agoRename some copied-and-pasted variables.
Karsten Loesing [Thu, 2 Feb 2012 06:55:17 +0000 (07:55 +0100)]
Rename some copied-and-pasted variables.

2 years agoHandle exceptions when reading descriptors from disk.
Karsten Loesing [Wed, 1 Feb 2012 10:26:40 +0000 (11:26 +0100)]
Handle exceptions when reading descriptors from disk.

2 years agoIgnore directory certificate files for the moment.
Karsten Loesing [Wed, 1 Feb 2012 10:09:03 +0000 (11:09 +0100)]
Ignore directory certificate files for the moment.

2 years agoParse all statistics in extra-info descriptors.
Karsten Loesing [Wed, 1 Feb 2012 10:04:21 +0000 (11:04 +0100)]
Parse all statistics in extra-info descriptors.

2 years agoDisallow reconfiguring readers after starting to read.
Karsten Loesing [Tue, 31 Jan 2012 17:00:21 +0000 (18:00 +0100)]
Disallow reconfiguring readers after starting to read.

2 years agoAdd a config option to handle unrecognized lines.
Karsten Loesing [Tue, 31 Jan 2012 16:47:15 +0000 (17:47 +0100)]
Add a config option to handle unrecognized lines.

Most applications don't care about unrecognized lines in descriptors as
long as the lines they care about are contained.  But some applications
rather want to skip a descriptor with unrecognized lines, e.g., the bridge
descriptor sanitizer.

Add a switch to downloaders and readers to control the desired behavior,
that is, to either fail parsing or ignore unrecognized lines.  In the
latter case, unrecognized are written to a list for later inspection by
the application.

Corrupt lines with known keywords always lead to failing the parse step.

2 years agoRemove examples.
Karsten Loesing [Tue, 31 Jan 2012 10:22:07 +0000 (11:22 +0100)]
Remove examples.

Example were useful when starting to design the API.  Now that there are
actual applications using the library, there's no need to main the
examples anymore.

2 years agoFix the download logic some more.
Karsten Loesing [Tue, 31 Jan 2012 08:52:43 +0000 (09:52 +0100)]
Fix the download logic some more.

Yet another edge case was biting us.  When delivering responses, the
download threads check whether there's more to download for anyone, and
if not, they tell the client (here: DocTor).  This check was broken for
directory authorities taking very long to download a consensus.  Fixed.

2 years agoFiddle around with the download logic some more.
Karsten Loesing [Thu, 26 Jan 2012 12:49:17 +0000 (13:49 +0100)]
Fiddle around with the download logic some more.

2 years agoUse timeouts in URLConnection instead of own timeout thread.
Karsten Loesing [Mon, 23 Jan 2012 18:40:26 +0000 (19:40 +0100)]
Use timeouts in URLConnection instead of own timeout thread.

2 years agoFix the logic what descriptors are left to download.
Karsten Loesing [Mon, 23 Jan 2012 18:38:10 +0000 (19:38 +0100)]
Fix the logic what descriptors are left to download.

2 years agoFix an awful copy-and-paste error.
Karsten Loesing [Mon, 23 Jan 2012 17:36:08 +0000 (18:36 +0100)]
Fix an awful copy-and-paste error.

2 years agoAvoid static initializer blocks.
Karsten Loesing [Mon, 23 Jan 2012 17:26:36 +0000 (18:26 +0100)]
Avoid static initializer blocks.

Commit 1bf8a7f introduced a problem with parsing perfectly valid date
strings.  Changing the SimpleDateFormat class member to a local variable
and avoiding its initialization in a static initializer block solved the
problem.  It's unclear what exactly the problem was, possibly related to
class loader weirdness.  Using a local variable fixed it.  Wasted enough
time on this problem.

2 years agoLet Eclipse organize imports.
Karsten Loesing [Mon, 23 Jan 2012 09:12:49 +0000 (10:12 +0100)]
Let Eclipse organize imports.

2 years agoAdd basic support for or-address lines.
Karsten Loesing [Mon, 23 Jan 2012 09:11:27 +0000 (10:11 +0100)]
Add basic support for or-address lines.

2 years agoUse a separate JVM for running the unit tests.
Karsten Loesing [Thu, 19 Jan 2012 16:47:03 +0000 (17:47 +0100)]
Use a separate JVM for running the unit tests.

Otherwise we'll run into weird problems with Ant when overriding Java's
URL stream handler to test the downloading code (not merged yet).

2 years agoImprove downloader a bit.
Karsten Loesing [Thu, 19 Jan 2012 16:36:13 +0000 (17:36 +0100)]
Improve downloader a bit.

2 years agoMake ConsensusBuilder an own class for better testing.
Karsten Loesing [Thu, 19 Jan 2012 15:36:46 +0000 (16:36 +0100)]
Make ConsensusBuilder an own class for better testing.

We'll want to create sample consensuses for testing the descriptor
downloader and reader, not just for testing the parsing code.

2 years agoMake DownloadCoordinator interface to facilitate testing.
Karsten Loesing [Thu, 19 Jan 2012 14:21:50 +0000 (15:21 +0100)]
Make DownloadCoordinator interface to facilitate testing.

2 years agoFix a few warnings found by Eclipse.
Karsten Loesing [Thu, 19 Jan 2012 12:30:02 +0000 (13:30 +0100)]
Fix a few warnings found by Eclipse.

2 years agoLet Eclipse organize the imports.
Karsten Loesing [Wed, 18 Jan 2012 13:40:09 +0000 (14:40 +0100)]
Let Eclipse organize the imports.

2 years agoFix a couple of compile warnings and a real bug.
Karsten Loesing [Wed, 18 Jan 2012 13:21:27 +0000 (14:21 +0100)]
Fix a couple of compile warnings and a real bug.

Hint: The getter in DescriptorFileImpl was the bug.

2 years agoFix a problem with downloading relay descriptors.
Karsten Loesing [Tue, 17 Jan 2012 10:20:35 +0000 (11:20 +0100)]
Fix a problem with downloading relay descriptors.

The consensus-health checker recently reported quite often that it
couldn't download any consensuses.  What happened was that the first
directory authority immediately with an error.  We decided that there's
nothing to download anymore, because a) we requested the consensus from
all authorities and didn't know about any votes yet that we could
download.  However, what we need to do is wait until all running consensus
downloads finish.

2 years agoSplit relay descriptor downloader into three classes.
Karsten Loesing [Tue, 17 Jan 2012 08:48:42 +0000 (09:48 +0100)]
Split relay descriptor downloader into three classes.

The three classes are:
 - The "user"-facing RelayDescriptorDownloaderImpl that is used to
   configure what descriptors shall be downloaded.
 - The DownloadCoordinator that memorizes which descriptors still need to
   be downloaded, which downloads are in progress, and which downloads are
   completed or have failed.
 - The DirectoryDownloader that sends the actual requests to one directory
   authority or mirror and reports back to DownloadCoordinator for
   finished downloads.

2 years agoLooks like $fingerprint=nickname is a valid family line entry.
Karsten Loesing [Mon, 16 Jan 2012 11:42:25 +0000 (12:42 +0100)]
Looks like $fingerprint=nickname is a valid family line entry.