aboutsummaryrefslogtreecommitdiff
path: root/src/or
Commit message (Collapse)AuthorAge
* Add a simple integer-ceiling-division macro before we get it wrongNick Mathewson2010-09-14
|
* Merge branch 'bug1899'Nick Mathewson2010-09-14
|\
| * Extract the "do these routers have the same addr:orport" logic into a fnNick Mathewson2010-09-14
| |
| * Launch reachability tests for routers whose IP or ORPort changeNick Mathewson2010-09-03
| | | | | | | | Implements #1899, suggested by Sebastian. Depends on #911 fix.
* | Merge branch 'bug911'Nick Mathewson2010-09-14
|\ \
| * | Tweak some issues found by arma in bug911 review.Nick Mathewson2010-09-14
| |/
| * Move code for launching tests out of router_add_to_routerlist()Nick Mathewson2010-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | router_add_to_routerlist() is supposed to be a nice minimal function that only touches the routerlist structures, but it included a call to dirserv_single_reachability_test(). We have a function that gets called _after_ adding descriptors successfully: routerlist_descriptors_added. This patch moves the responsibility for testing there. Because the decision of whether to test or not depends on whether there was an old routerinfo for this router or not, we have to first detect whether we _will_ want to run the tests if the router is added. We make this the job of routers_update_status_from_consensus_networkstatus(). Finally, this patch makes the code notice if a router is going from hibernating to non-hibernating, and if so causes a reachability test to get launched.
| * Allow some skew in checking when a router said it was hibernatingNick Mathewson2010-08-18
| | | | | | | | | | | | | | | | This solves the problem Roger noted as: What if the router has a clock that's 5 minutes off, so it publishes a descriptor for 5 minutes in the future, and we test it three minutes in. In this edge case, we will continue to advertise it as Running for the full 45 minute period.
| * Clarify AssumeReachable semantics wrt hibernationNick Mathewson2010-08-18
| |
| * Add some braces to make arma happyNick Mathewson2010-08-18
| |
| * If a router is hibernating, never vote that it is Running.Nick Mathewson2010-07-31
| | | | | | | | | | Also, clean up and comment some of the logic in dirserv_set_router_is_running.
* | Merge remote branch 'sebastian/bug1776_v3'Nick Mathewson2010-09-14
|\ \
| * | Allow clients to use relays as bridgesSebastian Hahn2010-08-20
| | |
* | | Make circuit_resume_edge_reading_helper treat streams more fairly.Nick Mathewson2010-09-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously[*], the function would start with the first stream on the circuit, and let it package as many cells as it wanted before proceeding to the next stream in turn. If a circuit had many live streams that all wanted to package data, the oldest would get preference, and the newest would get ignored. Now, we figure out how many cells we're willing to send per stream, and try to allocate them fairly. Roger diagnosed this in the comments for bug 1298. [*] This bug has existed since before the first-ever public release of Tor. It was added by r152 of Tor on 26 Jan 2003, which was the first commit to implement streams (then called "topics"). This is not the oldest bug to be fixed in 0.2.2.x: that honor goes to the windowing bug in r54, which got fixed in e50b7768 by Roger with diagnosis by Karsten. This is, however, the most long-lived bug to be fixed in 0.2.2.x: the r54 bug was fixed 2580 days after it was introduced, whereas I am writing this commit message 2787 days after r152.
* | | Add a max_cells arg to connection_edge_process_raw_inbufNick Mathewson2010-09-13
| | | | | | | | | | | | | | | | | | | | | I'm going to use this to implement more fairness in circuit_resume_edge_reading_helper in an attempt to fix bug 1298. (Updated with fixes from arma and Sebastian)
* | | Fix function declaration linebreaks at start of relay.cNick Mathewson2010-09-13
| | |
* | | Merge remote branch 'public/pretty-signature-log'Nick Mathewson2010-09-13
|\ \ \
| * | | Complicate the rules on WARN vs INFO in consensus verificationNick Mathewson2010-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's normal when bootstrapping to have a lot of different certs missing, so we don't want missing certs to make us warn... unless the certs we're missing are ones that we've tried to fetch a couple of times and failed at. May fix bug 1145.
| * | | Make the "2 unknown, 7 missing key..." messages easier to understandNick Mathewson2010-08-19
| | | | | | | | | | | | | | | | | | | | | | | | This patch should fix the cases we care about for bugs 1290 and 1145. "30-56-99 are correct. Limited 4 and 8 are missing".
* | | | Merge remote branch 'sebastian/bug1525'Nick Mathewson2010-09-13
|\ \ \ \
| * | | | Update some documentation for the bug 1525 fixSebastian Hahn2010-08-08
| | | | |
| * | | | Ensure controller RESOLVE commands respect __LeaveStreamsUnattachedRobert Hogan2010-08-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://trac.torproject.org/projects/tor/ticket/1525 "The codepath taken by the control port "RESOLVE" command to create a synthetic SOCKS resolve request isn't the same as the path taken by a real SOCKS request from 'tor-resolve'. This prevents controllers who set LeaveStreamsUnattached=1 from being able to attach RESOLVE streams to circuits of their choosing." Create a new function connection_ap_rewrite_and_attach_if_allowed() and call that when Tor needs to attach a stream to a circuit but needs to know if the controller permits it. No tests added.
* | | | | Merge branch 'bug1138'Nick Mathewson2010-09-12
|\ \ \ \ \
| * | | | | Clean up a couple more bug1138 issues mentioned by roger on code reviewNick Mathewson2010-09-12
| | | | | |
| * | | | | Handle null conn->requested_resource rather than assertRobert Hogan2010-09-12
| | | | | | | | | | | | | | | | | | | | | | | | Per arma's comments in bug1138
| * | | | | Nick points out:Robert Hogan2010-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tor_assert(!conn->_base.purpose == DIR_PURPOSE_FETCH_EXTRAINFO) != tor_assert(conn->_base.purpose != DIR_PURPOSE_FETCH_EXTRAINFO) !!
| * | | | | Amend per Sebastian's comments:Robert Hogan2010-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Move checks for extra_info to callers - Change argument name from failed to descs - Use strlen("fp/") instead of a magic number - I passed on the suggestion to rename functions from *_failed() to *_handle_failure(). There are a lot of these so for now just follow the house style.
| * | | | | Fall back to direct descriptor request to bridges whenRobert Hogan2010-08-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | requests to authorities fail due to a network error. Bug#1138 "When a Tor client starts up using a bridge, and UpdateBridgesFromAuthority is set, Tor will go to the authority first and look up the bridge by fingerprint. If the bridge authority is filtered, Tor will never notice that the bridge authority lookup failed. So it will never fall back." Add connection_dir_bridge_routerdesc_failed(), a function for unpacking the bridge information from a failed request, and ensure connection_dir_request_failed() calls it if the failed request was for a bridge descriptor. Test: 1. for ip in `grep -iR 'router ' cached-descriptors|cut -d ' ' -f 3`; do sudo iptables -A OUTPUT -p tcp -d $ip -j DROP; done 2. remove all files from user tor directory 3. Put the following in torrc: UseBridges 1 UpdateBridgesFromAuthority 1 Bridge 85.108.88.19:443 7E1B28DB47C175392A0E8E4A287C7CB8686575B7 4. Launch tor - it should fall back to downloading descriptors directly from the bridge. Initial patch reviewed and corrected by mingw-san.
* | | | | | Make authorities download consensuses if appropriateNick Mathewson2010-09-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An authority should never download a consensus if it has a live one, but when it doesn't, it should admit that it's not going to get one, and see if anybody else can give it one. Fixes 1300, fix on 0.2.0.9-alpha
* | | | | | fix regression introduced by 1a65bdd2Roger Dingledine2010-09-12
| | | | | | | | | | | | | | | | | | | | | | | | noticed while reviewing hoganrobert/bug1138
* | | | | | be more consistent in using streamid_tNick Mathewson2010-09-08
| | | | | |
* | | | | | Merge branch 'bug1653'Nick Mathewson2010-09-08
|\ \ \ \ \ \
| * | | | | | Fix a missing stream_id argument; found by "tracktor"Nick Mathewson2010-09-03
| | | | | | |
| * | | | | | Fix behavior of adding a cell to a blocked queue.Nick Mathewson2010-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We frequently add cells to stream-blocked queues for valid reasons that don't mean we need to block streams. The most obvious reason is if the cell arrives over a circuit rather than from an edge: we don't block circuits, no matter how full queues get. The next most obvious reason is that we allow CONNECTED cells from a newly created stream to get delivered just fine. This patch changes the behavior so that we only iterate over the streams on a circuit when the cell in question came from a stream, and we only block the stream that generated the cell, so that other streams can still get their CONNECTEDs in.
| * | | | | | Detect if we try to put a cell onto a supposedly blocked cell queue.Nick Mathewson2010-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When this happens, run through the streams on the circuit and make sure they're all blocked. If some aren't, that's a bug: block them all and log it! If they all are, where did the cell come from? Log it! (I suspect that this actually happens pretty frequently, so I'm making these log messages appear at INFO.)
| * | | | | | Decide whether to ignore SENDMEs based on streams_blocked, not queue sizeNick Mathewson2010-08-18
| | | | | | |
| * | | | | | Avoid over-filling cell queues when we receive a SENDMEyetonetime2010-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not start reading on exit streams when we get a SENDME unless we have space in the appropriate circuit's cell queue. Draft fix for bug 1653. (commit message by nickm)
* | | | | | | Merge remote branch 'origin/maint-0.2.1'Nick Mathewson2010-09-08
|\ \ \ \ \ \ \
| * | | | | | | Remove a needless keep_open_until_flushedNick Mathewson2010-09-08
| | | | | | | |
| * | | | | | | Close a non-open OR connection *only* after KeepalivePeriod.Nick Mathewson2010-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we introduced the code to close non-open OR connections after KeepalivePeriod had passed, we replaced some code that said if (!connection_is_open(conn)) { /* let it keep handshaking forever */ } else if (do other tests here) { ... with new code that said if (!connection_is_open(conn) && past_keepalive) { /* let it keep handshaking forever */ } else if (do other tests here) { ... This was a mistake, since it made all the other tests start applying to non-open connections, thus causing bug 1840, where non-open connections get closed way early. Fixes bug 1840. Bugfix on 0.2.1.26 (commit 67b38d50).
* | | | | | | | Merge remote branch 'public/win_unicode_fixes'Nick Mathewson2010-09-06
|\ \ \ \ \ \ \ \
| * | | | | | | | Make the windows build succeed with or without -DUNICODE enabled.Nick Mathewson2010-08-20
| | |_|_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should keep WinCE working (unicode always-on) and get Win98 working again (unicode never-on). There are two places where we explicitly use ASCII-only APIs, still: in ntmain.c and in the unit tests. This patch also fixes a bug in windoes tor_listdir that would cause the first file to be listed an arbitrary number of times that was also introduced with WinCE support. Should fix bug 1797.
* | | | | | | | Merge branch 'ratelim'Nick Mathewson2010-08-31
|\ \ \ \ \ \ \ \
| * | | | | | | | Fix some issues in rate-limiting noticed by SebastianNick Mathewson2010-08-31
| | | | | | | | |
| * | | | | | | | Add a generic rate-limited log mechanism, and use it in a few placesNick Mathewson2010-08-18
| | |_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | Incidentally fixes bug 1042.
* | | | | | | | Fix a compile warning on OpenBSDSebastian Hahn2010-08-22
| |/ / / / / / |/| | | | | |
* | | | | | | Warn for bad combination of cookie optionsSebastian Hahn2010-08-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting CookieAuthFileGroupReadable but without setting CookieAuthFile makes no sense, because unix directory permissions for the data directory prevent the group from accessing the file anyways.
* | | | | | | Fix up compilation on windows.Nick Mathewson2010-08-19
| |_|_|_|/ / |/| | | | |
* | | | | | delay geoip stats even more for relays-turned-bridgesRoger Dingledine2010-08-18
|/ / / / /
* | | | | Merge commit 'origin/maint-0.2.1'Nick Mathewson2010-08-18
|\| | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/or/reasons.c