aboutsummaryrefslogtreecommitdiff
path: root/src/feature/relay/selftest.c
diff options
context:
space:
mode:
authorteor <teor@torproject.org>2020-04-30 21:11:12 +1000
committerteor <teor@torproject.org>2020-04-30 23:26:58 +1000
commit01d940e71b02fd133eda56e0bc9bee113854af7c (patch)
tree0d0ba661bcb50eed395655b57292bfda6e1347df /src/feature/relay/selftest.c
parenta250dd6042c6d5afd108d793e4fab8079c9818a1 (diff)
downloadtor-01d940e71b02fd133eda56e0bc9bee113854af7c.tar.gz
tor-01d940e71b02fd133eda56e0bc9bee113854af7c.zip
relay: Refactor dirport self-test circuit launch
Remove some redundant variables, and improve some comments. Explain that there are no advertised IPv6 DirPorts. Part of 33222.
Diffstat (limited to 'src/feature/relay/selftest.c')
-rw-r--r--src/feature/relay/selftest.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/feature/relay/selftest.c b/src/feature/relay/selftest.c
index fe2da42bb4..8214225972 100644
--- a/src/feature/relay/selftest.c
+++ b/src/feature/relay/selftest.c
@@ -193,26 +193,28 @@ router_do_orport_reachability_checks(const routerinfo_t *me,
/** Launch a self-testing circuit, and ask an exit to connect to our DirPort.
* <b>me</b> is our own routerinfo.
*
+ * Relays don't advertise IPv6 DirPorts, so this function only supports IPv4.
+ *
* See router_do_reachability_checks() for details. */
static void
router_do_dirport_reachability_checks(const routerinfo_t *me)
{
- tor_addr_t addr;
- tor_addr_from_ipv4h(&addr, me->addr);
+ tor_addr_port_t my_dirport;
+ tor_addr_from_ipv4h(&my_dirport.addr, me->addr);
+ my_dirport.port = me->dir_port;
+
+ /* If there is already a pending connection, don't open another one. */
if (!connection_get_by_type_addr_port_purpose(
- CONN_TYPE_DIR, &addr, me->dir_port,
+ CONN_TYPE_DIR,
+ &my_dirport.addr, my_dirport.port,
DIR_PURPOSE_FETCH_SERVERDESC)) {
- /* XXX IPv6 self testing */
- tor_addr_port_t my_dirport;
- memcpy(&my_dirport.addr, &addr, sizeof(addr));
- my_dirport.port = me->dir_port;
/* ask myself, via tor, for my server descriptor. */
directory_request_t *req =
directory_request_new(DIR_PURPOSE_FETCH_SERVERDESC);
directory_request_set_dir_addr_port(req, &my_dirport);
directory_request_set_directory_id_digest(req,
me->cache_info.identity_digest);
- // ask via an anon circuit, connecting to our dirport.
+ /* ask via an anon circuit, connecting to our dirport. */
directory_request_set_indirection(req, DIRIND_ANON_DIRPORT);
directory_request_set_resource(req, "authority.z");
directory_initiate_request(req);