diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-06-05 11:39:31 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-06-05 11:40:31 -0400 |
commit | 64167e1772b62a06fe8853b84c3cd027abcc7f74 (patch) | |
tree | b8c7059825920481c8358553af414377ec9081b2 /src/or/circuitbuild.c | |
parent | 1e95a4a1f6d074e5f5f0033f596dd5ee66eea58a (diff) | |
download | tor-64167e1772b62a06fe8853b84c3cd027abcc7f74.tar.gz tor-64167e1772b62a06fe8853b84c3cd027abcc7f74.zip |
Minor changes to bug5603
* Minor stylistic changes to comments and doxygen
* Use strcmp_opt; it already exists.
* Tighten bridge_has_digest implementation a little.
Diffstat (limited to 'src/or/circuitbuild.c')
-rw-r--r-- | src/or/circuitbuild.c | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 8e7948c6e0..b80c7130eb 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -4912,52 +4912,34 @@ learned_router_identity(const tor_addr_t *addr, uint16_t port, } } -/** Returns true if <b>bridge</b> has the same identity digest as - * <b>digest</b>. <b>digest</b> is optional in which case it matches - * bridges without identity digests. */ +/** Return true if <b>bridge</b> has the same identity digest as + * <b>digest</b>. If <b>digest</b> is NULL, it matches + * bridges with unspecified identity digests. */ static int bridge_has_digest(const bridge_info_t *bridge, const char *digest) { - if (!digest && tor_digest_is_zero(bridge->identity)) - return 1; - if (digest && tor_memeq(digest, bridge->identity, DIGEST_LEN)) - return 1; - return 0; -} - -/** Returns true if <b>bridge</b> uses the same pluggable transport as - * <b>transport_name</b>. <b>transport_name</b> is optional in which - * case it matches bridges without pluggable transports. */ -static int -bridge_has_transport_name(const bridge_info_t *bridge, - const char *transport_name) -{ - if (!transport_name && !bridge->transport_name) - return 1; - if (transport_name && !strcmp(transport_name, bridge->transport_name)) - return 1; - return 0; + if (digest) + return tor_memeq(digest, bridge->identity, DIGEST_LEN); + else + return tor_digest_is_zero(bridge->identity); } -/** We want to add a new bridge at <b>addr</b>:<b>port</b>, with - * optional <b>digest</b> and <b>transport_name</b>. See if this - * generates any conflicts with already registered bridges, try to - * resolve them and warn the user. - * - * This function might end up marking already registered bridges to - * be deleted. +/** We are about to add a new bridge at <b>addr</b>:<b>port</b>, with optional + * <b>digest</b> and <b>transport_name</b>. Mark for removal any previously + * existing bridge with the same address and port, and warn the user as + * appropriate. */ static void bridge_resolve_conflicts(const tor_addr_t *addr, uint16_t port, const char *digest, const char *transport_name) { - /** Iterate the already-registered bridge list: + /* Iterate the already-registered bridge list: - If you find a bridge with the same adress and port, mark it for - removal. It doesn't make sense to have two active bridges with - the same IP:PORT. If the bridge in question has a different - digest or transport than <b>digest</b>/<b>transport_name</b>, - it's probably a misconfiguration and we should warn the user. + If you find a bridge with the same adress and port, mark it for + removal. It doesn't make sense to have two active bridges with + the same IP:PORT. If the bridge in question has a different + digest or transport than <b>digest</b>/<b>transport_name</b>, + it's probably a misconfiguration and we should warn the user. */ SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, bridge) { if (bridge->marked_for_removal) @@ -4968,7 +4950,7 @@ bridge_resolve_conflicts(const tor_addr_t *addr, uint16_t port, bridge->marked_for_removal = 1; if (!bridge_has_digest(bridge, digest) || - !bridge_has_transport_name(bridge, transport_name)) { + strcmp_opt(bridge->transport_name, transport_name)) { /* warn the user */ char *bridge_description_new, *bridge_description_old; tor_asprintf(&bridge_description_new, "%s:%u:%s:%s", |