aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-06-12 20:55:53 -0400
committerNick Mathewson <nickm@torproject.org>2013-06-12 20:55:53 -0400
commitd7d65298982444d34a15ef0cb3e453ddd584619c (patch)
treef28743ee5fd440c68437b99a09d050ae786f2ca0 /src
parent000b4f5cbf80b5cd23b9e03a9a74a6e028321391 (diff)
parent75b7cc1785c040b4f0deb46b89fecec5c90a9fe6 (diff)
downloadtor-d7d65298982444d34a15ef0cb3e453ddd584619c.tar
tor-d7d65298982444d34a15ef0cb3e453ddd584619c.tar.gz
Merge remote-tracking branch 'origin/maint-0.2.4'
Diffstat (limited to 'src')
-rw-r--r--src/or/control.c17
-rw-r--r--src/or/dnsserv.c15
2 files changed, 30 insertions, 2 deletions
diff --git a/src/or/control.c b/src/or/control.c
index 75f7af99a..a59300d0f 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -3744,8 +3744,21 @@ control_event_stream_status(entry_connection_t *conn, stream_status_event_t tp,
}
if (tp == STREAM_EVENT_NEW || tp == STREAM_EVENT_NEW_RESOLVE) {
- tor_snprintf(addrport_buf,sizeof(addrport_buf), " SOURCE_ADDR=%s:%d",
- ENTRY_TO_CONN(conn)->address, ENTRY_TO_CONN(conn)->port);
+ /*
+ * When the control conn is an AF_UNIX socket and we have no address,
+ * it gets set to "(Tor_internal)"; see dnsserv_launch_request() in
+ * dnsserv.c.
+ */
+ if (strcmp(ENTRY_TO_CONN(conn)->address, "(Tor_internal)") != 0) {
+ tor_snprintf(addrport_buf,sizeof(addrport_buf), " SOURCE_ADDR=%s:%d",
+ ENTRY_TO_CONN(conn)->address, ENTRY_TO_CONN(conn)->port);
+ } else {
+ /*
+ * else leave it blank so control on AF_UNIX doesn't need to make
+ * something up.
+ */
+ addrport_buf[0] = '\0';
+ }
} else {
addrport_buf[0] = '\0';
}
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index a1275cf2b..ebff7b524 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -183,8 +183,23 @@ dnsserv_launch_request(const char *name, int reverse,
conn->base_.state = AP_CONN_STATE_RESOLVE_WAIT;
tor_addr_copy(&TO_CONN(conn)->addr, &control_conn->base_.addr);
+#ifdef AF_UNIX
+ /*
+ * The control connection can be AF_UNIX and if so tor_dup_addr will
+ * unhelpfully say "<unknown address type>"; say "(Tor_internal)"
+ * instead.
+ */
+ if (control_conn->base_.socket_family == AF_UNIX) {
+ TO_CONN(conn)->port = 0;
+ TO_CONN(conn)->address = tor_strdup("(Tor_internal)");
+ } else {
+ TO_CONN(conn)->port = control_conn->base_.port;
+ TO_CONN(conn)->address = tor_dup_addr(&control_conn->base_.addr);
+ }
+#else
TO_CONN(conn)->port = control_conn->base_.port;
TO_CONN(conn)->address = tor_dup_addr(&control_conn->base_.addr);
+#endif
if (reverse)
entry_conn->socks_request->command = SOCKS_COMMAND_RESOLVE_PTR;