aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-06-05 11:39:31 -0400
committerNick Mathewson <nickm@torproject.org>2012-06-05 11:40:31 -0400
commit64167e1772b62a06fe8853b84c3cd027abcc7f74 (patch)
treeb8c7059825920481c8358553af414377ec9081b2
parent1e95a4a1f6d074e5f5f0033f596dd5ee66eea58a (diff)
downloadtor-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.
-rw-r--r--src/or/circuitbuild.c54
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",