aboutsummaryrefslogtreecommitdiff
path: root/src/or/router.c
AgeCommit message (Collapse)Author
2011-07-07Merge branch 'bug3263'Nick Mathewson
2011-06-14Make the get_options() return constNick Mathewson
This lets us make a lot of other stuff const, allows the compiler to generate (slightly) better code, and will make me get slightly fewer patches from folks who stick mutable stuff into or_options_t. const: because not every input is an output!
2011-06-14Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-06-14Make ControlSocketsGroupWritable work with User.Jérémy Bobbio
Original message from bug3393: check_private_dir() to ensure that ControlSocketsGroupWritable is safe to use. Unfortunately, check_private_dir() only checks against the currently running user… which can be root until privileges are dropped to the user and group configured by the User config option. The attached patch fixes the issue by adding a new effective_user argument to check_private_dir() and updating the callers. It might not be the best way to fix the issue, but it did in my tests. (Code by lunar; changelog by nickm)
2011-06-02Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/or/dirserv.c
2011-06-02Fix unit test failure in dir/formatsSebastian Hahn
options->DirPort is 0 in the unit tests, so router_get_advertised_dir_port() would return 0 so we wouldn't pick a dirport. This isn't what we want for the unit tests. Fixes bug introduced in 95ac3ea5946.
2011-05-30Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-05-30Merge branch 'bug3216_v2' into maint-0.2.2Nick Mathewson
2011-05-30Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
The conflicts were mainly caused by the routerinfo->node transition. Conflicts: src/or/circuitbuild.c src/or/command.c src/or/connection_edge.c src/or/directory.c src/or/dirserv.c src/or/relay.c src/or/rendservice.c src/or/routerlist.c
2011-05-30Merge branch 'bug3045' into maint-0.2.2Nick Mathewson
Conflicts: src/or/circuitbuild.c
2011-05-30Improve comments and defensive programming for 3045Nick Mathewson
The comment fixes are trivial. The defensive programming trick is to tolerate receiving NULL inputs on the describe functions. That should never actually happen, but it seems like the likeliest mistake for us to make in the future.
2011-05-24Don't try to build descriptors when router_get_advertised_or_port()==0Nick Mathewson
The previous attempt was incomplete: it told us not to publish a descriptor, but didn't stop us from generating one. Now we treat an absent OR port the same as not knowing our address. (This means that when we _do_ get an OR port, we need to mark the descriptor dirty.) More attempt to fix bug3216.
2011-05-24Don't build descriptors if ORPort auto is set and we have no OR listenerNick Mathewson
This situation can happen easily if you set 'ORPort auto' and 'AccountingMax'. Doing so means that when you have no ORPort, you won't be able to set an ORPort in a descriptor, so instead you would just generate lots of invalid descriptors, freaking out all the time. Possible fix for 3216; fix on 0.2.2.26-beta.
2011-05-23Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/common/Makefile.am src/or/control.c
2011-05-21don't mark our descriptor dirty if our onion key hasn't changedRoger Dingledine
2011-05-21naked constants are uglyRoger Dingledine
2011-05-21finish a comment nickm started in 8ebceeb3Roger Dingledine
2011-05-21Merge branch 'maint-0.2.2'Roger Dingledine
2011-05-21remove some (confusing) dead codeRoger Dingledine
2011-05-20Merge branch 'maint-0.2.2'Roger Dingledine
2011-05-19log the reason for publishing a new relay descriptorRoger Dingledine
now we have a better chance of hunting down the root cause of bug 1810.
2011-05-15Log descriptions of nodes, not just nicknames.Nick Mathewson
This patch introduces a few new functions in router.c to produce a more helpful description of a node than its nickame, and then tweaks nearly all log messages taking a nickname as an argument to call these functions instead. There are a few cases where I left the old log messages alone: in these cases, the nickname was that of an authority (whose nicknames are useful and unique), or the message already included an identity and/or an address. I might have missed a couple more too. This is a fix for bug 3045.
2011-05-13Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/or/config.c src/or/dirserv.c src/or/or.h
2011-05-13Advertise correct DirPort/ORPort when configured with "auto"Nick Mathewson
We'll eventually want to do more work here to make sure that the ports are stable over multiple invocations. Otherwise, turning your node on and off will get you a new DirPort/ORPort needlessly.
2011-05-11Reapply the automated memcmp conversion to 0.2.3 to catch newly added memcmpsNick Mathewson
2011-05-11Merge remote-tracking branch 'public/bug3122_memcmp_022' into bug3122_memcmp_023Nick Mathewson
Conflicts in various places, mainly node-related. Resolved them in favor of HEAD, with copying of tor_mem* operations from bug3122_memcmp_022. src/common/Makefile.am src/or/circuitlist.c src/or/connection_edge.c src/or/directory.c src/or/microdesc.c src/or/networkstatus.c src/or/router.c src/or/routerlist.c src/test/test_util.c
2011-05-11Merge remote-tracking branch 'public/3122_memcmp_squashed' into ↵Nick Mathewson
bug3122_memcmp_022 Conflicts throughout. All resolved in favor of taking HEAD and adding tor_mem* or fast_mem* ops as appropriate. src/common/Makefile.am src/or/circuitbuild.c src/or/directory.c src/or/dirserv.c src/or/dirvote.c src/or/networkstatus.c src/or/rendclient.c src/or/rendservice.c src/or/router.c src/or/routerlist.c src/or/routerparse.c src/or/test.c
2011-05-11Hand-conversion and audit phase of memcmp transitionNick Mathewson
Here I looked at the results of the automated conversion and cleaned them up as follows: If there was a tor_memcmp or tor_memeq that was in fact "safe"[*] I changed it to a fast_memcmp or fast_memeq. Otherwise if there was a tor_memcmp that could turn into a tor_memneq or tor_memeq, I converted it. This wants close attention. [*] I'm erring on the side of caution here, and leaving some things as tor_memcmp that could in my opinion use the data-dependent fast_memcmp variant.
2011-05-11Automated conversion of memcmp to tor_memcmp/tor_mem[n]eqNick Mathewson
This commit is _exactly_ the result of perl -i -pe 's/\bmemcmp\(/tor_memcmp\(/g' src/*/*.[ch] perl -i -pe 's/\!\s*tor_memcmp\(/tor_memeq\(/g' src/*/*.[ch] perl -i -pe 's/0\s*==\s*tor_memcmp\(/tor_memeq\(/g' src/*/*.[ch] perl -i -pe 's/0\s*!=\s*tor_memcmp\(/tor_memneq\(/g' src/*/*.[ch] git checkout src/common/di_ops.[ch] git checkout src/or/test.c git checkout src/common/test.h
2011-05-05Code to make clients fetch and use microdescriptors for circuit buildingNick Mathewson
To turn this on, set UseMicrodescriptors to "1" (or "auto" if you want it on-if-you're-a-client). It should go auto-by-default once 0.2.3.1-alpha is released. Because of our node logic, directory caches will never use microdescriptors when they have the right routerinfo available.
2011-05-05Replace _AUTHORITY enum values with _DIRINFO values (automted)Nick Mathewson
2011-05-05Automated rename from authority_type_t to dirinfo_type_tNick Mathewson
We were already overloading this type to mean "a directory that can serve us X" in addition to "a directory that is an authority for X."
2011-05-05Add a new configuration type, "AUTOBOOL", to handle 1/0/auto typesNick Mathewson
We only have one of these now, but I'm about to add a few more. Yes, I have already thought of the "Filenotfoundian logic" joke.
2011-04-28Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-04-28Avoid false positives from proxy_mode()Nick Mathewson
Previously it would erroneously return true if ListenAddr was set for a client port, even if that port itself was 0. This would give false positives, which were not previously harmful... but which were about to become.
2011-04-27Merge maint-0.2.2 for the bug1090-part1-squashed branchNick Mathewson
Resolved conflicts in: doc/tor.1.txt src/or/circuitbuild.c src/or/circuituse.c src/or/connection_edge.c src/or/connection_edge.h src/or/directory.c src/or/rendclient.c src/or/routerlist.c src/or/routerlist.h These were mostly releated to the routerinfo_t->node_t conversion.
2011-04-26Fix a log msgSebastian Hahn
2011-04-26If we're excluded, and StrictNodes is set, do not do self-tests.Nick Mathewson
2011-04-26three more cases where maybe we want to excludeRoger Dingledine
2011-04-06Merge remote-tracking branch 'public/bug2402_again' into maint-0.2.1Nick Mathewson
2011-03-14Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
Fixed conflict: router_get_my_routerinfo now returns const Conflicts: src/or/router.c
2011-03-14Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
2011-03-13we're not reachable if we don't have a routerinfo yetRoger Dingledine
2011-03-11Backport: Generate version tags using Git, not (broken) svn revisions.Nick Mathewson
Partial backport of daa0326aaaa85a760be94ee2360cfa61a9fb5be2 . Resolves bug 2402. Bugfix on 0.2.1.15 (for the part where we switched to git) and on 0.2.1.30 (for the part where we dumped micro-revisions.)
2011-02-22Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/or/policies.c src/or/policies.h
2011-02-22Don't let bad DNS make exit policy and declared exit policy get out of syncNick Mathewson
Patch from "postman" on trac. Fixes bg 2366. Bug on 0.1.2.5-alpha.
2011-02-22Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
2011-02-16Don't crash a bridge authority on SIGHUP if it's not in the consensusRobert Ransom
Fixes bug 2572.
2011-01-15Merge branch 'maint-0.2.2'Roger Dingledine
2011-01-15Sanity-check consensus param valuesSebastian Hahn
We need to make sure that the worst thing that a weird consensus param can do to us is to break our Tor (and only if the other Tors are reliably broken in the same way) so that the majority of directory authorities can't pull any attacks that are worse than the DoS that they can trigger by simply shutting down. One of these worse things was the cbtnummodes parameter, which could lead to heap corruption on some systems if the value was sufficiently large. This commit fixes this particular issue and also introduces sanity checking for all consensus parameters.