summaryrefslogtreecommitdiff
path: root/src/or/rendclient.c
AgeCommit message (Collapse)Author
2012-09-17Avoid sign-extending when computing rend auth type.Nick Mathewson
Right-shifting negative values has implementation-defined behavior. On all the platforms we work on right now, the behavior is to sign-extend the input. That isn't what we wanted in auth_type_val = (descriptor_cookie_tmp[16] >> 4) + 1; Fix for 6861; bugfix on 0.2.1.5-alpha; reported pseudonymously. The broken behavior didn't actually hurt anything, I think, since the only way to get sign-extension to happen would be to have the top bit of descriptor_cookie_tmp[16] set, which would make the value of descriptor_cookie_tmp[16] >> 4 somewhere between 0b11111111 and 0b11111000 (that is, between -1 and -8). So auth_type_val would be between -7 and 0. And the immediate next line does: if (auth_type_val < 1 || auth_type_val > 2) { So the incorrectly computed auth_type_val would be rejected as invalid, just as a correctly computed auth_type_val would be. Still, this stuff shouldn't sit around the codebase.
2012-09-14Split the routerset code out of routerlist.cNick Mathewson
2012-09-12Fix directory self-testing logicNick Mathewson
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.
2012-06-15Appease make check-spacesAndrea Shepard
2012-06-15Clean up keys on stack in rend_parse_service_authorization()Andrea Shepard
2012-06-15Clean up keys on stack in rend_client_refetch_v2_renddesc()Andrea Shepard
2012-06-15Clean up keys on stack in rend_client_send_introduction()Andrea Shepard
2012-06-15Triage the XXX023 and XXX022 comments: postpone many.Nick Mathewson
2012-06-04Update copyright dates to 2012; add a few missing copyright statementsNick Mathewson
2012-01-18Rename nonconformant identifiers.Nick Mathewson
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;
2012-01-11Merge branch 'feature3457-v4-nm-squashed'Nick Mathewson
Conflicts: src/or/rendclient.c
2012-01-09Fix brown-paper-bag bug in #4759 fixRobert Ransom
Fixes #4883, not yet in any release.
2011-12-27Don't close HS client circs which are 'almost connected' on timeoutRobert Ransom
2011-12-22Look up the rend circ whose INTRODUCE1 is being ACKed correctlyRobert Ransom
This change cannibalizes circuit_get_by_rend_query_and_purpose because it had exactly one caller.
2011-12-22Mark each intro circ with the rend cookie sent in its INTRODUCE1 cellRobert Ransom
Needed by fix for #4759.
2011-12-09Remove comment complaining that we try to attach all streams to circsRobert Ransom
It's inefficient, but the more efficient solution (only try to attach streams aiming for this HS) would require far more complexity for a gain that should be tiny.
2011-12-09Clear stream-isolation state on rend circs if needed to attach streamsRobert Ransom
Fixes bug 4655; bugfix on 0.2.3.3-alpha.
2011-11-30Merge branch 'feature2553-v4-rebased'Nick Mathewson
2011-11-30Add ifdefs to disable #3332 assertionsRobert Ransom
2011-11-30Perform single-hop HS desc fetches when in tor2web modeRobert Ransom
2011-11-30First chunk of support for bridges on IPv6Linus Nordberg
Comments below focus on changes, see diff for added code. New type tor_addr_port_t holding an IP address and a TCP/UDP port. New flag in routerinfo_t, ipv6_preferred. This should go in the node_t instead but not now. Replace node_get_addr() with - node_get_prim_addr() for primary address, i.e. IPv4 for now - node_get_pref_addr() for preferred address, IPv4 or IPv6. Rename node_get_addr_ipv4h() node_get_prim_addr_ipv4h() for consistency. The primary address will not allways be an IPv4 address. Same for node_get_orport() -> node_get_prim_orport(). Rewrite node_is_a_configured_bridge() to take all OR ports into account. Extend argument list to extend_info_from_node and extend_info_from_router with a flag indicating if we want to use the routers primary address or the preferred address. Use the preferred address in as few situtations as possible for allowing clients to connect to bridges over IPv6.
2011-11-24Log whenever a circuit's purpose is changedRobert Ransom
2011-11-07Merge remote-tracking branch 'rransom-tor/bug4411'Nick Mathewson
2011-11-07Fix assert on clients of and authorities for v0 HS descsRobert Ransom
2011-11-07Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-11-07Remove an extraneous "if" in the 4424 fixNick Mathewson
2011-11-07Don't leak an extend_info_t in rend_client_any_intro_points_usableRobert Ransom
2011-10-11Fix a bunch of whitespace errorsNick Mathewson
2011-10-10Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-10-10Update documentation comment for rend_client_reextend_intro_circuitRobert Ransom
One of its callers assumes a non-zero result indicates a permanent failure (i.e. the current attempt to connect to this HS either has failed or is doomed). The other caller only requires that this function's result never equal -2. Bug reported by Sebastian Hahn.
2011-10-10Don't launch a useless circuit in rend_client_reextend_intro_circuitRobert Ransom
Fixes bug 4212. Bug reported by katmagic and found by Sebastian.
2011-10-03Merge remote-tracking branch 'rransom-tor/bug3335-v2'Nick Mathewson
Conflicts: src/or/connection_edge.c src/or/rendclient.c
2011-10-02Remove an HS's last_hid_serv_requests entries when a conn. attempt endsRobert Ransom
2011-10-02Record the HS's address in last_hid_serv_request keysRobert Ransom
2011-10-02Fix comment typoRobert Ransom
2011-10-02Detect and remove unreachable intro pointsRobert Ransom
2011-10-02Clear the timed_out flag when an HS connection attempt endsRobert Ransom
2011-10-02Record intro point timeouts in rend_intro_point_tRobert Ransom
2011-10-02Refetch an HS's desc if we don't have a usable oneRobert Ransom
Previously, we wouldn't refetch an HS's descriptor unless we didn't have one at all. That was equivalent to refetching iff we didn't have a usable one, but the next commit will make us keep some non-usable HS descriptors around in our cache. Code bugfix on the release that introduced the v2 HS directory system, because rend_client_refetch_v2_renddesc's documentation comment should have described what it actually did, not what its behaviour happened to be equivalent to; no behaviour change in this commit.
2011-07-21Move entry-only fields from edge_connection_t to entry_connection_tNick Mathewson
Also, refactor the code accordingly.
2011-07-15Fix bug in upload/download of hsdesc with microdescsNick Mathewson
Previously we were using router_get_by_id(foo) to test "do we have a descriptor that will let us make an anonymous circuit to foo". But that isn't right for microdescs: we should have been using node_t. Fixes bug 3601; bugfix on 0.2.3.1-alpha.
2011-07-07Kill redundant checks around routerset_contains_*()Nick Mathewson
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.
2011-06-15Merge remote-tracking branch 'rransom-tor/bug3332-v2'Nick Mathewson
2011-06-14Assert that HS operations are not performed using single-hop circuitsRobert Ransom
(with fixes by Nick Mathewson to unbreak the build)
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-02Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/or/rendclient.c
2011-06-02Add info-level log messages during HS-client-state purgeRobert Ransom
I hope these will never be useful, but having them and not needing them is better than needing them and not having them.
2011-06-02Refactor HS client state-clearing code into a separate functionRobert Ransom
2011-06-02Clear last_hid_serv_requests on SIGNAL NEWNYMRobert Ransom
Fixes bug #3309.
2011-06-02Make last_hid_serv_requests functions less fragileRobert Ransom
Previously, Tor would dereference a NULL pointer and crash if lookup_last_hid_serv_request were called before the first call to directory_clean_last_hid_serv_requests. As far as I can tell, that's currently impossible, but I want that undocumented invariant to go away in case I^Wwe break it someday.