diff --git a/src/or/addressmap.c b/src/or/addressmap.c
index 75cfca64424813d385f3311a4d0691201443a81c..98448ebddfbb525a36c3682bd38cbac2017a95dd 100644
--- a/src/or/addressmap.c
+++ b/src/or/addressmap.c
@@ -902,6 +902,13 @@ address_is_invalid_destination(const char *address, int client)
       return 0;
   }
 
+  /* It might be an IPv6 address! */
+  {
+    tor_addr_t a;
+    if (tor_addr_parse(&a, address) >= 0)
+      return 0;
+  }
+
   while (*address) {
     if (TOR_ISALNUM(*address) ||
         *address == '-' ||
diff --git a/src/or/dns.c b/src/or/dns.c
index 0758279471a8c11da2ff796bc5985a00b54deff7..780cae06bd57bb40cc0413213b622dceb93e66ac 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -1334,7 +1334,7 @@ make_pending_resolve_cached(cached_resolve_t *resolve)
     cached_resolve_t *new_resolve = tor_memdup(resolve,
                                                sizeof(cached_resolve_t));
     uint32_t ttl = UINT32_MAX;
-    new_resolve->expiry = 0; /* So that set_expiry won't croak. */
+    new_resolve->expire = 0; /* So that set_expiry won't croak. */
     if (resolve->res_status_hostname == RES_STATUS_DONE_OK)
       new_resolve->result_ptr.hostname =
         tor_strdup(resolve->result_ptr.hostname);