aboutsummaryrefslogtreecommitdiff
path: root/src/or/directory.c
Commit message (Expand)AuthorAge
* Use dirreq_id from channel_t when appropriateAndrea Shepard2012-10-08
* Split the routerset code out of routerlist.cNick Mathewson2012-09-14
* Fix directory self-testing logic•••When I removed version_supports_begindir, I accidentally removed the mechanism we had been using to make a directory cache self-test its directory port. This caused bug 6815, which caused 6814 (both in 0.2.4.2-alpha). To fix this bug, I'm replacing the "anonymized_connection" argument to directory_initiate_command_* with an enumeration to say how indirectly to connect to a directory server. (I don't want to reinstate the "version_supports_begindir" argument as "begindir_ok" or anything -- these functions already take too many arguments.) For safety, I made sure that passing 0 and 1 for 'indirection' gives the same result as you would have gotten before -- just in case I missed any 0s or 1s. Nick Mathewson2012-09-12
* Merge remote-tracking branch 'origin/maint-0.2.3'Nick Mathewson2012-09-11
|\
| * Merge remote-tracking branch 'origin/maint-0.2.2' into maint-0.2.3•••Conflicts: src/test/test_util.c Nick Mathewson2012-09-11
| |\
| | * Fix assertion failure in tor_timegm.•••Fixes bug 6811. Nick Mathewson2012-09-11
* | | Remove version_supports checks for versions before 0.2.2.Nick Mathewson2012-09-07
|/ /
* | Don't infer we have a FooPort from the presence of a FooPort line•••Thanks to the changes we started making with SocksPort and friends in 0.2.3.3-alpha, any of our code that did "if (options->Sockport)" became wrong, since "SocksPort 0" would make that test true whereas using the default SocksPort value would make it false. (We didn't actually do "if (options->SockPort)" but we did have tests for TransPort. When we moved DirPort, ORPort, and ControlPort over to the same system in 0.2.3.9-alpha, the problem got worse, since our code is littered with checks for DirPort and ORPort as booleans. This code renames the current linelist-based FooPort options to FooPort_lines, and adds new FooPort_set options which get set at parse-and-validate time on the or_options_t. FooPort_set is true iff we will actually try to open a listener of the given type. (I renamed the FooPort options rather than leave them alone so that every previous user of a FooPort would need to get inspected, and so that any new code that forgetfully uses FooPort will need fail to compile.) Fix for bug 6507. Nick Mathewson2012-08-09
* | Change all SMARTLIST_FOREACH loops of >=10 lines to use BEGIN/END•••The SMARTLIST_FOREACH macro is more convenient than BEGIN/END when you have a nice short loop body, but using it for long bodies makes your preprocessor tell the compiler that all the code is on the same line. That causes grief, since compiler warnings and debugger lines will all refer to that one line. So, here's a new style rule: SMARTLIST_FOREACH blocks need to be short. Nick Mathewson2012-07-17
* | Check the correct consensus before giving it to the client•••Previously, a directory would check the latest NS consensus for having the signatures the client wanted, and use that consensus's valid_until time to set the HTTP lifetime. With this patch, the directory looks at NS consensus or the microdesc consensus, depending on what the client asked for. Nick Mathewson2012-06-15
* | Update copyright dates to 2012; add a few missing copyright statementsNick Mathewson2012-06-04
* | Add about 60 more DOCDOC comments to 0.2.3•••Also, try to resolve some doxygen issues. First, define a magic "This is doxygen!" macro so that we take the correct branch in various #if/#else/#endifs in order to get the right documentation. Second, add in a few grouping @{ and @} entries in order to get some variables and fields to get grouped together. Nick Mathewson2012-06-04
* | Resolve all currently pending DOCDOC items in masterNick Mathewson2012-06-04
* | When downloading bridge descs from a bridge authority, always be anonymousNick Mathewson2012-04-27
* | Don't fetch v2 networkstatuses from caches, even if auths are down•••Fix for 5635; fix on 0.2.2.26-beta, where caches stopped fetching this information. Nick Mathewson2012-04-17
* | Merge branch 'maint-0.2.2'•••Conflicts: src/or/config.c Roger Dingledine2012-04-01
|\|
| * put a _ before or_options_t elements that aren't configurable•••it's fine with me if we change the current convention, but we should actually decide to change it if we want to. Roger Dingledine2012-04-01
* | Merge remote-tracking branch 'origin/maint-0.2.2'•••Conflicts: src/or/config.c Conflict was in or_options_free, where two newly added fields had free calls in the same place. Nick Mathewson2012-04-01
|\|
| * Do not use strcmp() to compare an http authenticator to its expected value•••This fixes a side-channel attack on the (fortunately unused!) BridgePassword option for bridge authorities. Fix for bug 5543; bugfix on 0.2.0.14-alpha. Nick Mathewson2012-04-01
* | Roger notes that address and addr are two different things.Karsten Loesing2012-02-09
* | Count IPv6 connections in bridge and entry stats.Karsten Loesing2012-02-09
* | Allow 0.2.3.x clients to use 0.2.2.x bridges.•••Previously the client would ask the bridge for microdescriptors, which are only supported in 0.2.3.x and later, and then fail to bootstrap when it didn't get the answers it wanted. Fixes bug 4013; bugfix on 0.2.3.2-alpha. The fix here is to revert to using normal descriptors if any of our bridges are known to not support microdescs. This is not ideal, a) because we'll start downloading a microdesc consensus as soon as we get a bridge descriptor, and that will waste time if we later get a bridge descriptor that tells us we don't like microdescriptors; and b) by changing our mind we're leaking to our other bridges that we have an old-version bridge. The alternate fix would have been to change we_use_microdescriptors_for_circuits() to ask if *any* of our bridges can support microdescriptors, and then change the directory logic that picks a bridge to only select from those that do. For people living in the future, where 0.2.2.x is obsolete, there won't be a difference. Note that in either of these potential fixes, we have risk of oscillation if our one funny-looking bridges goes away / comes back. Roger Dingledine2012-01-25
* | Rename nonconformant identifiers.•••Fixes bug 4893. These changes are pure mechanical, and were generated with this perl script: /usr/bin/perl -w -i.bak -p s/crypto_pk_env_t/crypto_pk_t/g; s/crypto_dh_env_t/crypto_dh_t/g; s/crypto_cipher_env_t/crypto_cipher_t/g; s/crypto_digest_env_t/crypto_digest_t/g; s/aes_free_cipher/aes_cipher_free/g; s/crypto_free_cipher_env/crypto_cipher_free/g; s/crypto_free_digest_env/crypto_digest_free/g; s/crypto_free_pk_env/crypto_pk_free/g; s/_crypto_dh_env_get_dh/_crypto_dh_get_dh/g; s/_crypto_new_pk_env_rsa/_crypto_new_pk_from_rsa/g; s/_crypto_pk_env_get_evp_pkey/_crypto_pk_get_evp_pkey/g; s/_crypto_pk_env_get_rsa/_crypto_pk_get_rsa/g; s/crypto_new_cipher_env/crypto_cipher_new/g; s/crypto_new_digest_env/crypto_digest_new/g; s/crypto_new_digest256_env/crypto_digest256_new/g; s/crypto_new_pk_env/crypto_pk_new/g; s/crypto_create_crypto_env/crypto_cipher_new/g; s/connection_create_listener/connection_listener_new/g; s/smartlist_create/smartlist_new/g; s/transport_create/transport_new/g; Nick Mathewson2012-01-18
* | Convert instances of tor_malloc+tor_snprintf into tor_asprintf•••These were found by looking for tor_snprintf() instances that were preceeded closely by tor_malloc(), though I probably converted some more snprintfs as well. (In every case, make sure that the length variable (if any) is removed, renamed, or lowered, so that anything else that might have assumed a longer buffer doesn't exist.) Nick Mathewson2012-01-16
* | Convert instances of tor_snprintf+strdup into tor_asprintf•••These were found by looking for tor_snprintf() instances that were followed closely by tor_strdup(), though I probably converted some other snprintfs as well. Nick Mathewson2012-01-16
* | Try to use smartlist_add_asprintf consistently•••(To ensure correctness, in every case, make sure that the temporary variable is deleted, renamed, or lowered in scope, so we can't have any bugs related to accidentally relying on the no-longer-filled variable.) Nick Mathewson2012-01-16
* | cid 432: Remove dead code if we don't handle a consensus•••Bugfix on 0.2.3.1, fixes the second half of bug 4637. Sebastian Hahn2011-12-04
* | Merge branch 'feature2553-v4-rebased'Nick Mathewson2011-11-30
|\ \
| * | Add ifdefs to disable #3332 assertionsRobert Ransom2011-11-30
* | | Use correct address family where necessary for bridges on IPv6.Linus Nordberg2011-11-30
* | | Add some logging and comments.Linus Nordberg2011-11-30
* | | Initial hacking for proposal 186.•••This code handles the new ORPort options, and incidentally makes all remaining port types use the new port configuration systems. There are some rough edges! It doesn't do well in the case where your Address says one thing but you say to Advertise another ORPort. It doesn't handle AllAddrs. It doesn't actually advertise anything besides the first listed advertised IPv4 ORPort and DirPort. It doesn't do port forwarding to them either. It's not tested either, it needs more documentation, and it probably forgets to put the milk back in the refrigerator. Nick Mathewson2011-11-30
|/ /
* | Merge branch 'maint-0.2.2'Roger Dingledine2011-09-28
|\|
| * bug 4115: make bridges use begindir for their dir fetches•••removes another avenue for enumerating bridges. Roger Dingledine2011-09-28
* | Report reason for generating descriptor in an HTTP header•••Suggested by arma; based on 3327. Nick Mathewson2011-09-07
* | Clean up HTTP request header generation a little•••Use a list of headers rather than trying to printf every header that might exist. Nick Mathewson2011-09-07
* | Merge remote-tracking branch 'public/split_entry_conn'•••Conflicts: src/or/connection.c src/or/connection_edge.c src/or/connection_edge.h src/or/dnsserv.c Some of these were a little tricky, since they touched code that changed because of the prop171 fixes. Nick Mathewson2011-09-07
|\ \
| * | Move entry-only fields from edge_connection_t to entry_connection_t•••Also, refactor the code accordingly. Nick Mathewson2011-07-21
* | | Fix a bufferevent-related bug that killed tunneled dirserv conns•••Because tunneled connections are implemented with buffervent_pair, writing to them can cause an immediate flush. This means that added to them and then checking to see whether their outbuf is empty is _not_ an adequate way to see whether you added anything. This caused a problem in directory server connections, since they would try spooling a little more data out, and then close the connection if there was no queued data to send. This fix should improve matters; it only closes the connection if there is no more data to spool, and all of the spooling callbacks are supposed to put the dirconn into dir_spool_none on completion. This is bug 3814; Sebastian found it; bugfix on 0.2.3.1-alpha. Nick Mathewson2011-08-26
|/ /
* | Implement sensible isolation for tunneled directory conns•••One-hop dirconn streams all share a session group, and get the ISO_SESSIONGRP flag: they may share circuits with each other and nothing else. Anonymized dirconn streams get a new internal-use-only ISO_STREAM flag: they may not share circuits with anything, including each other. Nick Mathewson2011-07-19
* | Only download microdesc consensus from caches that support it•••Bugfix on 0.2.3.1-alpha; found by arma; never got a bug number. Nick Mathewson2011-07-14
* | Make a function static•••Now that connection_dir_about_to_close() is in directory.c, there's no reason to expose connection_dir_request_failed(). Nick Mathewson2011-07-11
* | Split connection_about_to_close_connection into separate functions•••This patch does NOTHING but: - move code - add declarations and includes as needed to make the new code work - declare the new functions. Nick Mathewson2011-07-11
* | Kill redundant checks around routerset_contains_*()•••All of the routerset_contains*() functions return 0 if their routerset_t argument is NULL. Therefore, there's no point in doing "if (ExcludeNodes && routerset_contains*(ExcludeNodes...))", for example. This patch fixes every instance of if (X && routerstatus_contains*(X,...)) Note that there are other patterns that _aren't_ redundant. For example, we *don't* want to change: if (EntryNodes && !routerstatus_contains(EntryNodes,...)) Fixes #2797. No bug here; just needless code. Nick Mathewson2011-07-07
* | Don't shadow parameters with local variables•••This is a little error-prone when the local has a different type from the parameter, and is very error-prone with both have the same type. Let's not do this. Fixes CID #437,438,439,440,441. Nick Mathewson2011-07-01
* | Merge remote-tracking branch 'rransom-tor/bug3332-v2'Nick Mathewson2011-06-15
|\ \
| * | Assert that HS operations are not performed using single-hop circuits•••(with fixes by Nick Mathewson to unbreak the build) Robert Ransom2011-06-14
* | | Make the get_options() return const•••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! Nick Mathewson2011-06-14
|/ /
* | Merge remote-tracking branch 'origin/maint-0.2.2'•••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 Nick Mathewson2011-05-30
|\|
| * Merge branch 'bug3045' into maint-0.2.2•••Conflicts: src/or/circuitbuild.c Nick Mathewson2011-05-30
| |\