Nick Mathewson [Thu, 25 Oct 2007 03:41:30 +0000 (03:41 +0000)]
r16136@catbus: nickm | 2007-10-24 23:40:15 -0400
Proposal 103 is closed too: it has been implemented and merged into dir-spec. Proposal 111 is "finished": it has been implemented, but still needs to be merged into the spec.
Nick Mathewson [Wed, 24 Oct 2007 19:53:11 +0000 (19:53 +0000)]
r16112@catbus: nickm | 2007-10-24 15:52:03 -0400
Fix logic for downloading consensuses: make getting an duplicate or not-currently-valid consensus count as a failure. Make running out of time to get certificates count as a failure. Delay while fetching certificates.
Nick Mathewson [Wed, 24 Oct 2007 19:53:08 +0000 (19:53 +0000)]
r16111@catbus: nickm | 2007-10-24 15:03:57 -0400
Allow multiple download schedules to exist. At the moment, we use one for consensus, and the other one for everything else.
Nick Mathewson [Wed, 24 Oct 2007 18:42:16 +0000 (18:42 +0000)]
r16108@catbus: nickm | 2007-10-24 14:41:12 -0400
Refactor the arguments for router_pick_{directory_|trusteddir}server[_impl] so that they all take the same flags, and so that their flags have names. Fix their documentation too.
Nick Mathewson [Wed, 24 Oct 2007 15:45:45 +0000 (15:45 +0000)]
r16101@catbus: nickm | 2007-10-24 11:44:40 -0400
Detect mmap failures from empty descriptor files, and only warn if the file was not supposed to be empty. Fixes bug 533
Roger Dingledine [Wed, 24 Oct 2007 03:34:03 +0000 (03:34 +0000)]
Authorities no longer send back "400 you're unreachable please fix
it" errors to Tor servers that aren't online all the time. We're
supposed to tolerate these servers now.
Roger Dingledine [Tue, 23 Oct 2007 15:44:13 +0000 (15:44 +0000)]
Don't complain that "your server has not managed to confirm that its
ports are reachable" if we haven't been able to build any circuits
yet. Bug found by spending four hours without a v3 consensus.
Roger Dingledine [Tue, 23 Oct 2007 06:38:16 +0000 (06:38 +0000)]
When there's no concensus, we were forming a vote every 30
minutes, but writing the "valid-after" line in our vote based
on our configured V3AuthVotingInterval: so unless the intervals
matched up, we immediately rejected our own vote because it didn't
start at the voting interval that caused us to construct a vote.
This caused log entries like:
Oct 23 01:16:16.303 [notice] Choosing expected valid-after time
as 2007-10-23 05:30:00: consensus_set=0, interval=1800
...
Oct 23 01:20:01.203 [notice] Choosing valid-after time in vote as
2007-10-23 06:00:00: consensus_set=0, interval=3600
Oct 23 01:20:01.290 [warn] Rejecting vote with valid-after time of
2007-10-23 06:00:00; we were expecting 2007-10-23 05:30:00
Oct 23 01:20:01.291 [warn] Couldn't store my own vote! (I told
myself, 'Bad valid-after time'.)
Nick, you should look at this, as it's your design. :)
Nick Mathewson [Tue, 23 Oct 2007 00:23:33 +0000 (00:23 +0000)]
r16054@catbus: nickm | 2007-10-22 20:22:13 -0400
Make authorities start accepting (and advertising their acceptance of) consensus method 2. If all goes well, we'll have a working Unnamed flag. Otherwise, we'll have a fun backtrace.
Nick Mathewson [Tue, 23 Oct 2007 00:23:32 +0000 (00:23 +0000)]
r16053@catbus: nickm | 2007-10-22 20:20:23 -0400
Note that consensus-method is not a means for making backward-incompatible format changes. Because any point that confuses Roger will *definitely* confuse many non-Roger readers of dir-spec.txt ;)
Nick Mathewson [Mon, 22 Oct 2007 17:31:26 +0000 (17:31 +0000)]
r16042@catbus: nickm | 2007-10-22 13:30:49 -0400
Move functions into and out of dirvote.c so that it contains all the v3 authority functionality, and no non-authority functionality.
Nick Mathewson [Mon, 22 Oct 2007 16:32:04 +0000 (16:32 +0000)]
r16032@catbus: nickm | 2007-10-22 11:56:53 -0400
When our directory status or our v3 authority status changes, reschedule operations as appropriate. (Fixes some xxxx020 items)
Nick Mathewson [Mon, 22 Oct 2007 16:32:01 +0000 (16:32 +0000)]
r16031@catbus: nickm | 2007-10-22 11:45:00 -0400
Remove an unused and unneeded layer of abstraction: we only have one store for routers. (I had thought we might need a second one for annotated routers, but that's silly.
Nick Mathewson [Mon, 22 Oct 2007 00:44:42 +0000 (00:44 +0000)]
r16016@catbus: nickm | 2007-10-21 20:44:19 -0400
Check a platform assumption we have made without checking for too long: "Characters are represented in ascii."
Nick Mathewson [Mon, 22 Oct 2007 00:26:02 +0000 (00:26 +0000)]
r15997@catbus: nickm | 2007-10-21 20:25:40 -0400
New code (disabled for now) to use the SSL context's cert store instead of using its "extra chain cert" list to get our identity certificate sent. This is a little close to what OpenSSL expects people to do, and it has the advantage that we should be able to keep the id cert from being sent by setting the NO_CHAIN_CERT bit. I have tried turning new code on, and it seemed to work fine.
Nick Mathewson [Sun, 21 Oct 2007 04:41:00 +0000 (04:41 +0000)]
r15995@catbus: nickm | 2007-10-21 00:40:46 -0400
More fixes for bad behavior when downloading extrainfos: do not download an ei if we lack the key to verify it, and do not download it if we already got it and found (weirdly) that it didn't match the corresponding server descriptor.
Roger Dingledine [Sun, 21 Oct 2007 04:15:28 +0000 (04:15 +0000)]
Bugfix on r7072, which turned out to basically be a no-op:
Respond to INT and TERM SIGNAL commands before we execute the
signal, in case the signal shuts us down. We had a patch in
0.1.2.1-alpha that tried to do this by queueing the response on
the connection's buffer before shutting down, but that really
isn't the same thing. Bug located by Matt Edman.
This is a bug in 0.1.2.x too, but there's no way we should backport
this fix. Speaking of which, can somebody double-check it? :)
Nick Mathewson [Sun, 21 Oct 2007 00:08:35 +0000 (00:08 +0000)]
r15991@catbus: nickm | 2007-10-20 20:08:29 -0400
Fix a nasty bug in DownloadExtraInfo implementation where we would discard, download, discard, download ad infinitum.
Nick Mathewson [Sat, 20 Oct 2007 23:48:35 +0000 (23:48 +0000)]
r15989@catbus: nickm | 2007-10-20 19:48:29 -0400
Fix implementation of sdmap_size and rimap_size() and eimap_size(). Nobody was using them, so no backport needed.
Nick Mathewson [Fri, 19 Oct 2007 20:48:46 +0000 (20:48 +0000)]
r15974@catbus: nickm | 2007-10-19 16:47:27 -0400
When we decode to use consensus method 2 or later, compute Unnamed and Named more or less as described in 122. Don't actually use consensus method 2 yet, so we can be sure we didn't screw up v1..
Nick Mathewson [Fri, 19 Oct 2007 18:56:30 +0000 (18:56 +0000)]
r15968@catbus: nickm | 2007-10-19 14:39:51 -0400
Implement code to compute which method to use to compute a consensus. Also, fix leak in consensus calculation.
Nick Mathewson [Fri, 19 Oct 2007 18:56:28 +0000 (18:56 +0000)]
r15967@catbus: nickm | 2007-10-19 14:14:47 -0400
Change meaning of "freefn" argument to smartlist_uniq so that we can remove duplicates from a list without freeing them.
Nick Mathewson [Fri, 19 Oct 2007 16:41:32 +0000 (16:41 +0000)]
r15961@catbus: nickm | 2007-10-19 12:40:15 -0400
Learn the difference between "mismatched vote digest" and "mismatched vote times": the latter is more informative.
Nick Mathewson [Fri, 19 Oct 2007 02:15:47 +0000 (02:15 +0000)]
r15939@catbus: nickm | 2007-10-18 22:14:15 -0400
Remember the valid-until time of the most recent consensus that listed
a router, and (if we are a cache) never delete the routerdesc until
that conensus is expired. This is way easier than retaining multiple
consensuses. (Of course, the info isn't retained across restarts,
but that only affects a few caches at a time.)
Peter Palfrader [Fri, 19 Oct 2007 00:29:16 +0000 (00:29 +0000)]
Call routers_update_all_from_networkstatus() from router_reload_consensus_networkstatus() so that we warn about old versions when we startup Tor, not when we fetch the next consensus document
Nick Mathewson [Thu, 18 Oct 2007 19:51:14 +0000 (19:51 +0000)]
r15934@catbus: nickm | 2007-10-18 15:32:56 -0400
When we have plenty of directory information, don't try to launch descriptor downloads quite so eagerly.
Nick Mathewson [Thu, 18 Oct 2007 14:58:45 +0000 (14:58 +0000)]
r15919@catbus: nickm | 2007-10-18 10:57:47 -0400
Add a log message to router_remove_old_routers to try to figure out why peacetime has such a big cache.
Nick Mathewson [Thu, 18 Oct 2007 14:27:42 +0000 (14:27 +0000)]
r15915@catbus: nickm | 2007-10-18 10:26:44 -0400
Stop incessant notices about when we think the expected valid-after time should be, if we are not an authority.
Nick Mathewson [Thu, 18 Oct 2007 14:19:56 +0000 (14:19 +0000)]
r15907@catbus: nickm | 2007-10-18 10:18:53 -0400
Fix up logic for choosing the time at which to download a consensus: Never attempt it when the current consensus is still the most recent.
Nick Mathewson [Thu, 18 Oct 2007 11:50:20 +0000 (11:50 +0000)]
r15899@catbus: nickm | 2007-10-18 07:49:15 -0400
"if (!router_get_trusted_dirservers())" is a bad test: router_get_trusted_dirservers() always returns a list. Instead, check for whether the list is empty.
Nick Mathewson [Wed, 17 Oct 2007 21:47:28 +0000 (21:47 +0000)]
r15891@catbus: nickm | 2007-10-17 17:46:40 -0400
Apply changes to rend-spec.txt from Karsten's proposal-114 work. Points that need to be clarified are marked with a [XXXX].
Nick Mathewson [Wed, 17 Oct 2007 21:26:22 +0000 (21:26 +0000)]
r15887@catbus: nickm | 2007-10-17 17:25:32 -0400
When a networkstatus consensus download fails, do not wait 60 seconds to decide whether to retry. (Also, log the time at which we'll try to replace the current networkstatus.)
Nick Mathewson [Wed, 17 Oct 2007 19:23:56 +0000 (19:23 +0000)]
r15882@catbus: nickm | 2007-10-17 15:23:05 -0400
oprofile was telling me that a fair bit of our time in openssl was spent in base64_decode, so replace base64_decode with an all-at-once fairly optimized implementation. For decoding keys and digests, it seems 3-3.5x faster than calling out to openssl. (Yes, I wrote it from scratch.)
Nick Mathewson [Wed, 17 Oct 2007 16:55:44 +0000 (16:55 +0000)]
r15877@catbus: nickm | 2007-10-17 12:54:56 -0400
Make unverified-consensus get removed when it is accepted or rejected. Make a new get_datadir_fname*() set of functions to eliminate the common code of "get the options, get the datadir, append some stuff".