uncrustify as demanded.
[oweals/gnunet.git] / src / gns / gnunet-service-gns_resolver.c
index 703a0f6522a3b2ead18df499d8d5fa1c2b128bf6..da54f3dd5ad75abf4c4e168d03088ed6ef8fadba 100644 (file)
@@ -16,7 +16,7 @@
      along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
      SPDX-License-Identifier: AGPL3.0-or-later
-*/
+ */
 
 /**
  * @file gns/gnunet-service-gns_resolver.c
 /**
  * Default DHT timeout for lookups.
  */
-#define DHT_LOOKUP_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
+#define DHT_LOOKUP_TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 60)
 
 /**
  * Default timeout for DNS lookups.
  */
-#define DNS_LOOKUP_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 15)
+#define DNS_LOOKUP_TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 15)
 
 /**
  * Default timeout for VPN redirections.
  */
-#define VPN_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 30)
+#define VPN_TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MINUTES, 30)
 
 /**
  * DHT replication level
@@ -80,9 +80,7 @@ struct AuthorityChain;
  * responsible DNS server hostname in a GNS2DNS recursive
  * resolution.
  */
-struct Gns2DnsPending
-{
-
+struct Gns2DnsPending {
   /**
    * Kept in a DLL.
    */
@@ -128,8 +126,7 @@ struct GNS_ResolverHandle;
  * DLL to hold the authority chain we had to pass in the resolution
  * process.
  */
-struct AuthorityChain
-{
+struct AuthorityChain {
   /**
    * This is a DLL.
    */
@@ -159,16 +156,13 @@ struct AuthorityChain
   /**
    * Information about the resolver authority for this label.
    */
-  union
-  {
-
+  union {
     /**
      * The zone of the GNS authority
      */
     struct GNUNET_CRYPTO_EcdsaPublicKey gns_authority;
 
-    struct
-    {
+    struct {
       /**
        * Domain of the DNS resolver that is the authority.
        * (appended to construct the DNS name to resolve;
@@ -203,20 +197,15 @@ struct AuthorityChain
        * Did we start the recursive resolution via DNS?
        */
       int launched;
-
     } dns_authority;
-
   } authority_info;
-
 };
 
 
 /**
  * A result we got from DNS.
  */
-struct DnsResult
-{
-
+struct DnsResult {
   /**
    * Kept in DLL.
    */
@@ -247,16 +236,13 @@ struct DnsResult
    * Type of the GNS/DNS record.
    */
   uint32_t record_type;
-
 };
 
 
 /**
  * Closure for #vpn_allocation_cb.
  */
-struct VpnContext
-{
-
+struct VpnContext {
   /**
    * Which resolution process are we processing.
    */
@@ -288,9 +274,7 @@ struct VpnContext
  * Handle to a currenty pending resolution.  On result (positive or
  * negative) the #GNS_ResultProcessor is called.
  */
-struct GNS_ResolverHandle
-{
-
+struct GNS_ResolverHandle {
   /**
    * DLL
    */
@@ -426,16 +410,13 @@ struct GNS_ResolverHandle
    * 16 bit random ID we used in the @e dns_request.
    */
   uint16_t original_dns_id;
-
 };
 
 
 /**
  * Active namestore caching operations.
  */
-struct CacheOps
-{
-
+struct CacheOps {
   /**
    * Organized in a DLL.
    */
@@ -450,7 +431,6 @@ struct CacheOps
    * Pending Namestore caching task.
    */
   struct GNUNET_NAMECACHE_QueueEntry *namecache_qe_cache;
-
 };
 
 
@@ -526,19 +506,19 @@ static const struct GNUNET_CONFIGURATION_Handle *cfg;
  * @return #GNUNET_YES if canonical
  */
 /* dead, but keep for now */ int
-is_canonical (const char *name)
+is_canonical(const char *name)
 {
   const char *pos;
   const char *dot;
 
-  if (NULL == strchr (name,
-                      (unsigned char) '.'))
+  if (NULL == strchr(name,
+                     (unsigned char)'.'))
     return GNUNET_YES;
   if ('_' != name[0])
     return GNUNET_NO;
   pos = &name[1];
-  while (NULL != (dot = strchr (pos,
-                                (unsigned char) '.')))
+  while (NULL != (dot = strchr(pos,
+                               (unsigned char)'.')))
     if ('_' != dot[1])
       return GNUNET_NO;
     else
@@ -556,22 +536,22 @@ is_canonical (const char *name)
  * @return updated name
  */
 static char *
-translate_dot_plus (struct GNS_ResolverHandle *rh,
-                   char *name)
+translate_dot_plus(struct GNS_ResolverHandle *rh,
+                   char *name)
 {
   char *ret;
-  size_t s_len = strlen (name);
+  size_t s_len = strlen(name);
 
-  if (0 != strcmp (&name[s_len - 2],
-                  ".+"))
+  if (0 != strcmp(&name[s_len - 2],
+                  ".+"))
     return name; /* did not end in ".+" */
-  GNUNET_assert (GNUNET_YES == rh->ac_tail->gns_authority);
-  GNUNET_asprintf (&ret,
-                  "%.*s.%s",
-                  (int) (s_len - 2),
-                  name,
-                  GNUNET_GNSRECORD_pkey_to_zkey (&rh->ac_tail->authority_info.gns_authority));
-  GNUNET_free (name);
+  GNUNET_assert(GNUNET_YES == rh->ac_tail->gns_authority);
+  GNUNET_asprintf(&ret,
+                  "%.*s.%s",
+                  (int)(s_len - 2),
+                  name,
+                  GNUNET_GNSRECORD_pkey_to_zkey(&rh->ac_tail->authority_info.gns_authority));
+  GNUNET_free(name);
   return ret;
 }
 
@@ -583,12 +563,12 @@ translate_dot_plus (struct GNS_ResolverHandle *rh,
  * @param cls the `struct GNS_ResolverHandle`
  */
 static void
-GNS_resolver_lookup_cancel_ (void *cls)
+GNS_resolver_lookup_cancel_(void *cls)
 {
   struct GNS_ResolverHandle *rh = cls;
 
   rh->task_id = NULL;
-  GNS_resolver_lookup_cancel (rh);
+  GNS_resolver_lookup_cancel(rh);
 }
 
 
@@ -598,14 +578,14 @@ GNS_resolver_lookup_cancel_ (void *cls)
  * @param rh the resolution to fail
  */
 static void
-fail_resolution (struct GNS_ResolverHandle *rh)
+fail_resolution(struct GNS_ResolverHandle *rh)
 {
-  rh->proc (rh->proc_cls,
-            0,
-            NULL);
-  GNUNET_assert (NULL == rh->task_id);
-  rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                          rh);
+  rh->proc(rh->proc_cls,
+           0,
+           NULL);
+  GNUNET_assert(NULL == rh->task_id);
+  rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                         rh);
 }
 
 
@@ -615,12 +595,12 @@ fail_resolution (struct GNS_ResolverHandle *rh)
  * @param cls the `struct GNS_ResolverHandle`
  */
 static void
-timeout_resolution (void *cls)
+timeout_resolution(void *cls)
 {
   struct GNS_ResolverHandle *rh = cls;
 
   rh->task_id = NULL;
-  fail_resolution (rh);
+  fail_resolution(rh);
 }
 
 
@@ -642,7 +622,7 @@ timeout_resolution (void *cls)
  * @return NULL if there are no more labels
  */
 static char *
-resolver_lookup_get_next_label (struct GNS_ResolverHandle *rh)
+resolver_lookup_get_next_label(struct GNS_ResolverHandle *rh)
 {
   const char *rp;
   const char *dot;
@@ -655,71 +635,71 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle *rh)
 
   if (0 == rh->name_resolution_pos)
     return NULL;
-  dot = memrchr (rh->name,
-                 (int) '.',
-                 rh->name_resolution_pos);
+  dot = memrchr(rh->name,
+                (int)'.',
+                rh->name_resolution_pos);
   if (NULL == dot)
-  {
-    /* done, this was the last one */
-    len = rh->name_resolution_pos;
-    rp = rh->name;
-    rh->name_resolution_pos = 0;
-  }
+    {
+      /* done, this was the last one */
+      len = rh->name_resolution_pos;
+      rp = rh->name;
+      rh->name_resolution_pos = 0;
+    }
   else
-  {
-    /* advance by one label */
-    len = rh->name_resolution_pos - (dot - rh->name) - 1;
-    rp = dot + 1;
-    rh->name_resolution_pos = dot - rh->name;
-  }
+    {
+      /* advance by one label */
+      len = rh->name_resolution_pos - (dot - rh->name) - 1;
+      rp = dot + 1;
+      rh->name_resolution_pos = dot - rh->name;
+    }
   rh->protocol = 0;
   rh->service = 0;
-  ret = GNUNET_strndup (rp, len);
+  ret = GNUNET_strndup(rp, len);
   /* If we have labels starting with underscore with label on
    * the right (SRV/DANE/BOX case), determine port/protocol;
    * The format of `rh->name` must be "_PORT._PROTOCOL".
    */
-  if ( ('_' == rh->name[0]) &&
-       (NULL != (dot = memrchr (rh->name,
-                                (int) '.',
-                                rh->name_resolution_pos))) &&
-       ('_' == dot[1]) &&
-       (NULL == memrchr (rh->name,
-                         (int) '.',
-                         dot - rh->name)) )
-  {
-    srv_name = GNUNET_strndup (&rh->name[1],
-                               (dot - rh->name) - 1);
-    proto_name = GNUNET_strndup (&dot[2],
-                                 rh->name_resolution_pos - (dot - rh->name) - 1);
-    rh->name_resolution_pos = 0;
-    pe = getprotobyname (proto_name);
-    if (NULL == pe)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  _("Protocol `%s' unknown, skipping labels.\n"),
-                  proto_name);
-      GNUNET_free (proto_name);
-      GNUNET_free (srv_name);
-      return ret;
-    }
-    se = getservbyname (srv_name,
-                        proto_name);
-    if (NULL == se)
+  if (('_' == rh->name[0]) &&
+      (NULL != (dot = memrchr(rh->name,
+                              (int)'.',
+                              rh->name_resolution_pos))) &&
+      ('_' == dot[1]) &&
+      (NULL == memrchr(rh->name,
+                       (int)'.',
+                       dot - rh->name)))
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  _("Service `%s' unknown for protocol `%s', skipping labels.\n"),
-                  srv_name,
-                  proto_name);
-      GNUNET_free (proto_name);
-      GNUNET_free (srv_name);
-      return ret;
+      srv_name = GNUNET_strndup(&rh->name[1],
+                                (dot - rh->name) - 1);
+      proto_name = GNUNET_strndup(&dot[2],
+                                  rh->name_resolution_pos - (dot - rh->name) - 1);
+      rh->name_resolution_pos = 0;
+      pe = getprotobyname(proto_name);
+      if (NULL == pe)
+        {
+          GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                     _("Protocol `%s' unknown, skipping labels.\n"),
+                     proto_name);
+          GNUNET_free(proto_name);
+          GNUNET_free(srv_name);
+          return ret;
+        }
+      se = getservbyname(srv_name,
+                         proto_name);
+      if (NULL == se)
+        {
+          GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                     _("Service `%s' unknown for protocol `%s', skipping labels.\n"),
+                     srv_name,
+                     proto_name);
+          GNUNET_free(proto_name);
+          GNUNET_free(srv_name);
+          return ret;
+        }
+      rh->protocol = pe->p_proto;
+      rh->service = se->s_port;
+      GNUNET_free(proto_name);
+      GNUNET_free(srv_name);
     }
-    rh->protocol = pe->p_proto;
-    rh->service = se->s_port;
-    GNUNET_free (proto_name);
-    GNUNET_free (srv_name);
-  }
   return ret;
 }
 
@@ -730,7 +710,7 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle *rh)
  * @param rh resolution process that has culminated in a result
  */
 static void
-transmit_lookup_dns_result (struct GNS_ResolverHandle *rh)
+transmit_lookup_dns_result(struct GNS_ResolverHandle *rh)
 {
   struct DnsResult *pos;
   unsigned int n;
@@ -744,31 +724,31 @@ transmit_lookup_dns_result (struct GNS_ResolverHandle *rh)
 
     i = 0;
     for (pos = rh->dns_result_head; NULL != pos; pos = pos->next)
-    {
-      rd[i].data = pos->data;
-      rd[i].data_size = pos->data_size;
-      rd[i].record_type = pos->record_type;
-      if (0 == pos->expiration_time)
-      {
-       rd[i].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
-       rd[i].expiration_time = 0;
-      }
-      else
       {
-       rd[i].flags = GNUNET_GNSRECORD_RF_NONE;
-       rd[i].expiration_time = pos->expiration_time;
+        rd[i].data = pos->data;
+        rd[i].data_size = pos->data_size;
+        rd[i].record_type = pos->record_type;
+        if (0 == pos->expiration_time)
+          {
+            rd[i].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
+            rd[i].expiration_time = 0;
+          }
+        else
+          {
+            rd[i].flags = GNUNET_GNSRECORD_RF_NONE;
+            rd[i].expiration_time = pos->expiration_time;
+          }
+        i++;
       }
-      i++;
-    }
-    GNUNET_assert (i == n);
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Transmitting standard DNS result with %u records\n",
-               n);
-    rh->proc (rh->proc_cls,
-             n,
-             rd);
+    GNUNET_assert(i == n);
+    GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+               "Transmitting standard DNS result with %u records\n",
+               n);
+    rh->proc(rh->proc_cls,
+             n,
+             rd);
   }
-  GNS_resolver_lookup_cancel (rh);
+  GNS_resolver_lookup_cancel(rh);
 }
 
 
@@ -782,25 +762,25 @@ transmit_lookup_dns_result (struct GNS_ResolverHandle *rh)
  * @param data binary data to return in DNS record
  */
 static void
-add_dns_result (struct GNS_ResolverHandle *rh,
-               uint64_t expiration_time,
-               uint32_t record_type,
-               size_t data_size,
-               const void *data)
+add_dns_result(struct GNS_ResolverHandle *rh,
+               uint64_t expiration_time,
+               uint32_t record_type,
+               size_t data_size,
+               const void *data)
 {
   struct DnsResult *res;
 
-  res = GNUNET_malloc (sizeof (struct DnsResult) + data_size);
+  res = GNUNET_malloc(sizeof(struct DnsResult) + data_size);
   res->expiration_time = expiration_time;
   res->data_size = data_size;
   res->record_type = record_type;
   res->data = &res[1];
-  GNUNET_memcpy (&res[1],
-                 data,
-                 data_size);
-  GNUNET_CONTAINER_DLL_insert (rh->dns_result_head,
-                              rh->dns_result_tail,
-                              res);
+  GNUNET_memcpy(&res[1],
+                data,
+                data_size);
+  GNUNET_CONTAINER_DLL_insert(rh->dns_result_head,
+                              rh->dns_result_tail,
+                              res);
 }
 
 
@@ -813,45 +793,47 @@ add_dns_result (struct GNS_ResolverHandle *rh,
  * @param addrlen length of the address
  */
 static void
-handle_dns_result (void *cls,
-                  const struct sockaddr *addr,
-                  socklen_t addrlen)
+handle_dns_result(void *cls,
+                  const struct sockaddr *addr,
+                  socklen_t addrlen)
 {
   struct GNS_ResolverHandle *rh = cls;
   const struct sockaddr_in *sa4;
   const struct sockaddr_in6 *sa6;
 
   if (NULL == addr)
-  {
-    rh->std_resolve = NULL;
-    transmit_lookup_dns_result (rh);
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Received %u bytes of DNS IP data\n",
-             addrlen);
+    {
+      rh->std_resolve = NULL;
+      transmit_lookup_dns_result(rh);
+      return;
+    }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Received %u bytes of DNS IP data\n",
+             addrlen);
   switch (addr->sa_family)
-  {
-  case AF_INET:
-    sa4 = (const struct sockaddr_in *) addr;
-    add_dns_result (rh,
-                   0 /* expiration time is unknown */,
-                   GNUNET_DNSPARSER_TYPE_A,
-                   sizeof (struct in_addr),
-                   &sa4->sin_addr);
-    break;
-  case AF_INET6:
-    sa6 = (const struct sockaddr_in6 *) addr;
-    add_dns_result (rh,
-                   0 /* expiration time is unknown */,
-                   GNUNET_DNSPARSER_TYPE_AAAA,
-                   sizeof (struct in6_addr),
-                   &sa6->sin6_addr);
-    break;
-  default:
-    GNUNET_break (0);
-    break;
-  }
+    {
+    case AF_INET:
+      sa4 = (const struct sockaddr_in *)addr;
+      add_dns_result(rh,
+                     0 /* expiration time is unknown */,
+                     GNUNET_DNSPARSER_TYPE_A,
+                     sizeof(struct in_addr),
+                     &sa4->sin_addr);
+      break;
+
+    case AF_INET6:
+      sa6 = (const struct sockaddr_in6 *)addr;
+      add_dns_result(rh,
+                     0 /* expiration time is unknown */,
+                     GNUNET_DNSPARSER_TYPE_AAAA,
+                     sizeof(struct in6_addr),
+                     &sa6->sin6_addr);
+      break;
+
+    default:
+      GNUNET_break(0);
+      break;
+    }
 }
 
 
@@ -862,7 +844,7 @@ handle_dns_result (void *cls,
  * @param tc task context
  */
 static void
-recursive_resolution (void *cls);
+recursive_resolution(void *cls);
 
 
 /**
@@ -872,7 +854,7 @@ recursive_resolution (void *cls);
  * @param cls closure with `struct GNS_ResolverHandle *rh`
  */
 static void
-start_resolver_lookup (void *cls);
+start_resolver_lookup(void *cls);
 
 
 /**
@@ -884,9 +866,9 @@ start_resolver_lookup (void *cls);
  * @param dns_len number of bytes in @a dns
  */
 static void
-dns_result_parser (void *cls,
-                  const struct GNUNET_TUN_DnsHeader *dns,
-                  size_t dns_len)
+dns_result_parser(void *cls,
+                  const struct GNUNET_TUN_DnsHeader *dns,
+                  size_t dns_len)
 {
   struct GNS_ResolverHandle *rh = cls;
   struct GNUNET_DNSPARSER_Packet *p;
@@ -894,80 +876,82 @@ dns_result_parser (void *cls,
   unsigned int rd_count;
 
   if (NULL == dns)
-  {
-    rh->dns_request = NULL;
-    GNUNET_SCHEDULER_cancel (rh->task_id);
-    rh->task_id = NULL;
-    fail_resolution (rh);
-    return;
-  }
+    {
+      rh->dns_request = NULL;
+      GNUNET_SCHEDULER_cancel(rh->task_id);
+      rh->task_id = NULL;
+      fail_resolution(rh);
+      return;
+    }
   if (rh->original_dns_id != dns->id)
-  {
-    /* DNS answer, but for another query */
-    return;
-  }
-  p = GNUNET_DNSPARSER_parse ((const char *) dns,
-                             dns_len);
+    {
+      /* DNS answer, but for another query */
+      return;
+    }
+  p = GNUNET_DNSPARSER_parse((const char *)dns,
+                             dns_len);
   if (NULL == p)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               _("Failed to parse DNS response\n"));
-    return;
-  }
-
-  /* We got a result from DNS */
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Received DNS response for `%s' with %u answers\n",
-             rh->ac_tail->label,
-             (unsigned int) p->num_answers);
-  if ( (p->num_answers > 0) &&
-       (GNUNET_DNSPARSER_TYPE_CNAME == p->answers[0].type) &&
-       (GNUNET_DNSPARSER_TYPE_CNAME != rh->record_type) )
-  {
-    int af;
-
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Got CNAME `%s' from DNS for `%s'\n",
-                p->answers[0].data.hostname,
-                rh->name);
-    if (NULL != rh->std_resolve)
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "Multiple CNAME results from DNS resolving `%s'! Not really allowed...\n",
-                  rh->name);
-      GNUNET_RESOLVER_request_cancel (rh->std_resolve);
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                 _("Failed to parse DNS response\n"));
+      return;
     }
-    GNUNET_free (rh->name);
-    rh->name = GNUNET_strdup (p->answers[0].data.hostname);
-    rh->name_resolution_pos = strlen (rh->name);
-    switch (rh->record_type)
+
+  /* We got a result from DNS */
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Received DNS response for `%s' with %u answers\n",
+             rh->ac_tail->label,
+             (unsigned int)p->num_answers);
+  if ((p->num_answers > 0) &&
+      (GNUNET_DNSPARSER_TYPE_CNAME == p->answers[0].type) &&
+      (GNUNET_DNSPARSER_TYPE_CNAME != rh->record_type))
     {
-    case GNUNET_DNSPARSER_TYPE_A:
-      af = AF_INET;
-      break;
-    case GNUNET_DNSPARSER_TYPE_AAAA:
-      af = AF_INET6;
-      break;
-    default:
-      af = AF_UNSPEC;
-      break;
+      int af;
+
+      GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+                 "Got CNAME `%s' from DNS for `%s'\n",
+                 p->answers[0].data.hostname,
+                 rh->name);
+      if (NULL != rh->std_resolve)
+        {
+          GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                     "Multiple CNAME results from DNS resolving `%s'! Not really allowed...\n",
+                     rh->name);
+          GNUNET_RESOLVER_request_cancel(rh->std_resolve);
+        }
+      GNUNET_free(rh->name);
+      rh->name = GNUNET_strdup(p->answers[0].data.hostname);
+      rh->name_resolution_pos = strlen(rh->name);
+      switch (rh->record_type)
+        {
+        case GNUNET_DNSPARSER_TYPE_A:
+          af = AF_INET;
+          break;
+
+        case GNUNET_DNSPARSER_TYPE_AAAA:
+          af = AF_INET6;
+          break;
+
+        default:
+          af = AF_UNSPEC;
+          break;
+        }
+      if (NULL != rh->leho)
+        add_dns_result(rh,
+                       GNUNET_TIME_UNIT_HOURS.rel_value_us,
+                       GNUNET_GNSRECORD_TYPE_LEHO,
+                       strlen(rh->leho),
+                       rh->leho);
+      rh->std_resolve = GNUNET_RESOLVER_ip_get(rh->name,
+                                               af,
+                                               DNS_LOOKUP_TIMEOUT,
+                                               &handle_dns_result,
+                                               rh);
+      GNUNET_DNSPARSER_free_packet(p);
+      GNUNET_DNSSTUB_resolve_cancel(rh->dns_request);
+      rh->dns_request = NULL;
+      return;
     }
-    if (NULL != rh->leho)
-      add_dns_result (rh,
-                     GNUNET_TIME_UNIT_HOURS.rel_value_us,
-                     GNUNET_GNSRECORD_TYPE_LEHO,
-                     strlen (rh->leho),
-                     rh->leho);
-    rh->std_resolve = GNUNET_RESOLVER_ip_get (rh->name,
-                                              af,
-                                              DNS_LOOKUP_TIMEOUT,
-                                              &handle_dns_result,
-                                              rh);
-    GNUNET_DNSPARSER_free_packet (p);
-    GNUNET_DNSSTUB_resolve_cancel (rh->dns_request);
-    rh->dns_request = NULL;
-    return;
-  }
 
   /* convert from (parsed) DNS to (binary) GNS format! */
   rd_count = p->num_answers + p->num_authority_records + p->num_additional_records;
@@ -980,151 +964,157 @@ dns_result_parser (void *cls,
 
     buf_off = 0;
     skip = 0;
-    memset (rd,
-            0,
-            sizeof (rd));
-    for (unsigned int i=0;i<rd_count;i++)
-    {
-      if (i < p->num_answers)
-       rec = &p->answers[i];
-      else if (i < p->num_answers + p->num_authority_records)
-       rec = &p->authority_records[i - p->num_answers];
-      else
-       rec = &p->additional_records[i - p->num_answers - p->num_authority_records];
-      /* As we copied the full DNS name to 'rh->ac_tail->label', this
-        should be the correct check to see if this record is actually
-        a record for our label... */
-      if (0 != strcmp (rec->name,
-                      rh->ac_tail->label))
+    memset(rd,
+           0,
+           sizeof(rd));
+    for (unsigned int i = 0; i < rd_count; i++)
       {
-       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                   "Dropping record `%s', does not match desired name `%s'\n",
-                   rec->name,
-                   rh->ac_tail->label);
-       skip++;
-       continue;
-      }
-      rd[i - skip].record_type = rec->type;
-      rd[i - skip].expiration_time = rec->expiration_time.abs_value_us;
-      switch (rec->type)
+        if (i < p->num_answers)
+          rec = &p->answers[i];
+        else if (i < p->num_answers + p->num_authority_records)
+          rec = &p->authority_records[i - p->num_answers];
+        else
+          rec = &p->additional_records[i - p->num_answers - p->num_authority_records];
+        /* As we copied the full DNS name to 'rh->ac_tail->label', this
+           should be the correct check to see if this record is actually
+           a record for our label... */
+        if (0 != strcmp(rec->name,
+                        rh->ac_tail->label))
+          {
+            GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                       "Dropping record `%s', does not match desired name `%s'\n",
+                       rec->name,
+                       rh->ac_tail->label);
+            skip++;
+            continue;
+          }
+        rd[i - skip].record_type = rec->type;
+        rd[i - skip].expiration_time = rec->expiration_time.abs_value_us;
+        switch (rec->type)
+          {
+          case GNUNET_DNSPARSER_TYPE_A:
+            if (rec->data.raw.data_len != sizeof(struct in_addr))
+              {
+                GNUNET_break_op(0);
+                skip++;
+                continue;
+              }
+            rd[i - skip].data_size = rec->data.raw.data_len;
+            rd[i - skip].data = rec->data.raw.data;
+            break;
+
+          case GNUNET_DNSPARSER_TYPE_AAAA:
+            if (rec->data.raw.data_len != sizeof(struct in6_addr))
+              {
+                GNUNET_break_op(0);
+                skip++;
+                continue;
+              }
+            rd[i - skip].data_size = rec->data.raw.data_len;
+            rd[i - skip].data = rec->data.raw.data;
+            break;
+
+          case GNUNET_DNSPARSER_TYPE_CNAME:
+          case GNUNET_DNSPARSER_TYPE_PTR:
+          case GNUNET_DNSPARSER_TYPE_NS:
+            buf_start = buf_off;
+            if (GNUNET_OK !=
+                GNUNET_DNSPARSER_builder_add_name(buf,
+                                                  sizeof(buf),
+                                                  &buf_off,
+                                                  rec->data.hostname))
+              {
+                GNUNET_break(0);
+                skip++;
+                continue;
+              }
+            rd[i - skip].data_size = buf_off - buf_start;
+            rd[i - skip].data = &buf[buf_start];
+            break;
+
+          case GNUNET_DNSPARSER_TYPE_SOA:
+            buf_start = buf_off;
+            if (GNUNET_OK !=
+                GNUNET_DNSPARSER_builder_add_soa(buf,
+                                                 sizeof(buf),
+                                                 &buf_off,
+                                                 rec->data.soa))
+              {
+                GNUNET_break(0);
+                skip++;
+                continue;
+              }
+            rd[i - skip].data_size = buf_off - buf_start;
+            rd[i - skip].data = &buf[buf_start];
+            break;
+
+          case GNUNET_DNSPARSER_TYPE_MX:
+            buf_start = buf_off;
+            if (GNUNET_OK !=
+                GNUNET_DNSPARSER_builder_add_mx(buf,
+                                                sizeof(buf),
+                                                &buf_off,
+                                                rec->data.mx))
+              {
+                GNUNET_break(0);
+                skip++;
+                continue;
+              }
+            rd[i - skip].data_size = buf_off - buf_start;
+            rd[i - skip].data = &buf[buf_start];
+            break;
+
+          case GNUNET_DNSPARSER_TYPE_SRV:
+            buf_start = buf_off;
+            if (GNUNET_OK !=
+                GNUNET_DNSPARSER_builder_add_srv(buf,
+                                                 sizeof(buf),
+                                                 &buf_off,
+                                                 rec->data.srv))
+              {
+                GNUNET_break(0);
+                skip++;
+                continue;
+              }
+            rd[i - skip].data_size = buf_off - buf_start;
+            rd[i - skip].data = &buf[buf_start];
+            break;
+
+          default:
+            GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+                       _("Skipping record of unsupported type %d\n"),
+                       rec->type);
+            skip++;
+            continue;
+          }
+      } /* end of for all records in answer */
+    if (NULL != rh->leho)
       {
-      case GNUNET_DNSPARSER_TYPE_A:
-       if (rec->data.raw.data_len != sizeof (struct in_addr))
-       {
-         GNUNET_break_op (0);
-         skip++;
-         continue;
-       }
-       rd[i - skip].data_size = rec->data.raw.data_len;
-       rd[i - skip].data = rec->data.raw.data;
-       break;
-      case GNUNET_DNSPARSER_TYPE_AAAA:
-       if (rec->data.raw.data_len != sizeof (struct in6_addr))
-       {
-         GNUNET_break_op (0);
-         skip++;
-         continue;
-       }
-       rd[i - skip].data_size = rec->data.raw.data_len;
-       rd[i - skip].data = rec->data.raw.data;
-       break;
-      case GNUNET_DNSPARSER_TYPE_CNAME:
-      case GNUNET_DNSPARSER_TYPE_PTR:
-      case GNUNET_DNSPARSER_TYPE_NS:
-       buf_start = buf_off;
-       if (GNUNET_OK !=
-           GNUNET_DNSPARSER_builder_add_name (buf,
-                                              sizeof (buf),
-                                              &buf_off,
-                                              rec->data.hostname))
-       {
-         GNUNET_break (0);
-         skip++;
-         continue;
-       }
-       rd[i - skip].data_size = buf_off - buf_start;
-       rd[i - skip].data = &buf[buf_start];
-       break;
-      case GNUNET_DNSPARSER_TYPE_SOA:
-       buf_start = buf_off;
-       if (GNUNET_OK !=
-           GNUNET_DNSPARSER_builder_add_soa (buf,
-                                              sizeof (buf),
-                                              &buf_off,
-                                              rec->data.soa))
-       {
-         GNUNET_break (0);
-         skip++;
-         continue;
-       }
-       rd[i - skip].data_size = buf_off - buf_start;
-       rd[i - skip].data = &buf[buf_start];
-       break;
-      case GNUNET_DNSPARSER_TYPE_MX:
-       buf_start = buf_off;
-       if (GNUNET_OK !=
-           GNUNET_DNSPARSER_builder_add_mx (buf,
-                                            sizeof (buf),
-                                            &buf_off,
-                                            rec->data.mx))
-       {
-         GNUNET_break (0);
-         skip++;
-         continue;
-       }
-       rd[i - skip].data_size = buf_off - buf_start;
-       rd[i - skip].data = &buf[buf_start];
-       break;
-      case GNUNET_DNSPARSER_TYPE_SRV:
-       buf_start = buf_off;
-       if (GNUNET_OK !=
-           GNUNET_DNSPARSER_builder_add_srv (buf,
-                                             sizeof (buf),
-                                             &buf_off,
-                                             rec->data.srv))
-       {
-         GNUNET_break (0);
-         skip++;
-         continue;
-       }
-       rd[i - skip].data_size = buf_off - buf_start;
-       rd[i - skip].data = &buf[buf_start];
-       break;
-      default:
-       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                   _("Skipping record of unsupported type %d\n"),
-                   rec->type);
-       skip++;
-       continue;
+        rd[rd_count - skip].record_type = GNUNET_GNSRECORD_TYPE_LEHO;
+        rd[rd_count - skip].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
+        rd[rd_count - skip].expiration_time = GNUNET_TIME_UNIT_HOURS.rel_value_us;
+        rd[rd_count - skip].data = rh->leho;
+        rd[rd_count - skip].data_size = strlen(rh->leho);
+        skip--; /* skip one LESS */
+        GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                   "Adding LEHO %s\n",
+                   rh->leho);
       }
-    } /* end of for all records in answer */
-    if (NULL != rh->leho)
-    {
-      rd[rd_count - skip].record_type = GNUNET_GNSRECORD_TYPE_LEHO;
-      rd[rd_count - skip].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
-      rd[rd_count - skip].expiration_time = GNUNET_TIME_UNIT_HOURS.rel_value_us;
-      rd[rd_count - skip].data = rh->leho;
-      rd[rd_count - skip].data_size = strlen (rh->leho);
-      skip--; /* skip one LESS */
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                 "Adding LEHO %s\n",
-                 rh->leho);
-    }
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Returning DNS response for `%s' with %u answers\n",
-                rh->ac_tail->label,
-                (unsigned int) (rd_count - skip));
-    rh->proc (rh->proc_cls,
-              rd_count - skip,
-              rd);
-    GNUNET_DNSSTUB_resolve_cancel (rh->dns_request);
+    GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+               "Returning DNS response for `%s' with %u answers\n",
+               rh->ac_tail->label,
+               (unsigned int)(rd_count - skip));
+    rh->proc(rh->proc_cls,
+             rd_count - skip,
+             rd);
+    GNUNET_DNSSTUB_resolve_cancel(rh->dns_request);
     rh->dns_request = NULL;
   }
-  GNUNET_DNSPARSER_free_packet (p);
+  GNUNET_DNSPARSER_free_packet(p);
   if (NULL != rh->task_id)
-    GNUNET_SCHEDULER_cancel (rh->task_id); /* should be timeout task */
-  rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                          rh);
+    GNUNET_SCHEDULER_cancel(rh->task_id);  /* should be timeout task */
+  rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                         rh);
 }
 
 
@@ -1137,7 +1127,7 @@ dns_result_parser (void *cls,
  * @param rh resolution information
  */
 static void
-recursive_dns_resolution (struct GNS_ResolverHandle *rh)
+recursive_dns_resolution(struct GNS_ResolverHandle *rh)
 {
   struct AuthorityChain *ac;
   struct GNUNET_DNSPARSER_Query *query;
@@ -1147,54 +1137,54 @@ recursive_dns_resolution (struct GNS_ResolverHandle *rh)
   int ret;
 
   ac = rh->ac_tail;
-  GNUNET_assert (NULL != ac);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Starting DNS lookup for `%s'\n",
-             ac->label);
-  GNUNET_assert (GNUNET_NO == ac->gns_authority);
-  query = GNUNET_new (struct GNUNET_DNSPARSER_Query);
-  query->name = GNUNET_strdup (ac->label);
+  GNUNET_assert(NULL != ac);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Starting DNS lookup for `%s'\n",
+             ac->label);
+  GNUNET_assert(GNUNET_NO == ac->gns_authority);
+  query = GNUNET_new(struct GNUNET_DNSPARSER_Query);
+  query->name = GNUNET_strdup(ac->label);
   query->type = rh->record_type;
   query->dns_traffic_class = GNUNET_TUN_DNS_CLASS_INTERNET;
-  p = GNUNET_new (struct GNUNET_DNSPARSER_Packet);
+  p = GNUNET_new(struct GNUNET_DNSPARSER_Packet);
   p->queries = query;
   p->num_queries = 1;
-  p->id = (uint16_t) GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE,
-                                              UINT16_MAX);
+  p->id = (uint16_t)GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_NONCE,
+                                             UINT16_MAX);
   p->flags.opcode = GNUNET_TUN_DNS_OPCODE_QUERY;
   p->flags.recursion_desired = 1;
-  ret = GNUNET_DNSPARSER_pack (p,
-                              1024,
-                              &dns_request,
-                              &dns_request_length);
+  ret = GNUNET_DNSPARSER_pack(p,
+                              1024,
+                              &dns_request,
+                              &dns_request_length);
   if (GNUNET_OK != ret)
-  {
-    GNUNET_break (0);
-    rh->proc (rh->proc_cls,
-             0,
-             NULL);
-    GNUNET_assert (NULL == rh->task_id);
-    rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                            rh);
-  }
+    {
+      GNUNET_break(0);
+      rh->proc(rh->proc_cls,
+               0,
+               NULL);
+      GNUNET_assert(NULL == rh->task_id);
+      rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                             rh);
+    }
   else
-  {
-    rh->original_dns_id = p->id;
-    GNUNET_assert (NULL != ac->authority_info.dns_authority.dns_handle);
-    GNUNET_assert (NULL == rh->dns_request);
-    rh->leho = GNUNET_strdup (ac->label);
-    rh->dns_request = GNUNET_DNSSTUB_resolve (ac->authority_info.dns_authority.dns_handle,
-                                             dns_request,
-                                             dns_request_length,
-                                             &dns_result_parser,
-                                             rh);
-    rh->task_id = GNUNET_SCHEDULER_add_delayed (DNS_LOOKUP_TIMEOUT,
-                                               &timeout_resolution,
-                                               rh);
-  }
+    {
+      rh->original_dns_id = p->id;
+      GNUNET_assert(NULL != ac->authority_info.dns_authority.dns_handle);
+      GNUNET_assert(NULL == rh->dns_request);
+      rh->leho = GNUNET_strdup(ac->label);
+      rh->dns_request = GNUNET_DNSSTUB_resolve(ac->authority_info.dns_authority.dns_handle,
+                                               dns_request,
+                                               dns_request_length,
+                                               &dns_result_parser,
+                                               rh);
+      rh->task_id = GNUNET_SCHEDULER_add_delayed(DNS_LOOKUP_TIMEOUT,
+                                                 &timeout_resolution,
+                                                 rh);
+    }
   if (GNUNET_SYSERR != ret)
-    GNUNET_free (dns_request);
-  GNUNET_DNSPARSER_free_packet (p);
+    GNUNET_free(dns_request);
+  GNUNET_DNSPARSER_free_packet(p);
 }
 
 
@@ -1207,85 +1197,87 @@ recursive_dns_resolution (struct GNS_ResolverHandle *rh)
  *        authority chain tail
  */
 static void
-handle_gns_cname_result (struct GNS_ResolverHandle *rh,
-                        const char *cname)
+handle_gns_cname_result(struct GNS_ResolverHandle *rh,
+                        const char *cname)
 {
   size_t nlen;
   char *res;
   struct AuthorityChain *ac;
   int af;
 
-  nlen = strlen (cname);
-  if ( (nlen > 2) &&
-       (0 == strcmp (".+",
-                    &cname[nlen - 2])) )
-  {
-    /* CNAME resolution continues relative to current domain */
-    if (0 == rh->name_resolution_pos)
+  nlen = strlen(cname);
+  if ((nlen > 2) &&
+      (0 == strcmp(".+",
+                   &cname[nlen - 2])))
     {
-      res = GNUNET_strndup (cname, nlen - 2);
-      rh->name_resolution_pos = nlen - 2;
+      /* CNAME resolution continues relative to current domain */
+      if (0 == rh->name_resolution_pos)
+        {
+          res = GNUNET_strndup(cname, nlen - 2);
+          rh->name_resolution_pos = nlen - 2;
+        }
+      else
+        {
+          GNUNET_asprintf(&res,
+                          "%.*s.%.*s",
+                          (int)rh->name_resolution_pos,
+                          rh->name,
+                          (int)(nlen - 2),
+                          cname);
+          rh->name_resolution_pos = strlen(res);
+        }
+      GNUNET_free(rh->name);
+      rh->name = res;
+      ac = GNUNET_new(struct AuthorityChain);
+      ac->rh = rh;
+      ac->gns_authority = GNUNET_YES;
+      ac->authority_info.gns_authority = rh->ac_tail->authority_info.gns_authority;
+      ac->label = resolver_lookup_get_next_label(rh);
+      /* add AC to tail */
+      GNUNET_CONTAINER_DLL_insert_tail(rh->ac_head,
+                                       rh->ac_tail,
+                                       ac);
+      rh->task_id = GNUNET_SCHEDULER_add_now(&recursive_resolution,
+                                             rh);
+      return;
     }
-    else
+  GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+             "Got CNAME `%s' from GNS for `%s'\n",
+             cname,
+             rh->name);
+  if (NULL != rh->std_resolve)
     {
-      GNUNET_asprintf (&res,
-                      "%.*s.%.*s",
-                      (int) rh->name_resolution_pos,
-                      rh->name,
-                      (int) (nlen - 2),
-                      cname);
-      rh->name_resolution_pos = strlen (res);
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                 "Multiple CNAME results from GNS resolving `%s'! Not really allowed...\n",
+                 rh->name);
+      GNUNET_RESOLVER_request_cancel(rh->std_resolve);
     }
-    GNUNET_free (rh->name);
-    rh->name = res;
-    ac = GNUNET_new (struct AuthorityChain);
-    ac->rh = rh;
-    ac->gns_authority = GNUNET_YES;
-    ac->authority_info.gns_authority = rh->ac_tail->authority_info.gns_authority;
-    ac->label = resolver_lookup_get_next_label (rh);
-    /* add AC to tail */
-    GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head,
-                                     rh->ac_tail,
-                                     ac);
-    rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution,
-                                           rh);
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Got CNAME `%s' from GNS for `%s'\n",
-              cname,
-              rh->name);
-  if (NULL != rh->std_resolve)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               "Multiple CNAME results from GNS resolving `%s'! Not really allowed...\n",
-                rh->name);
-    GNUNET_RESOLVER_request_cancel (rh->std_resolve);
-  }
   /* name is absolute, go to DNS */
-  GNUNET_free (rh->name);
-  rh->name = GNUNET_strdup (cname);
-  rh->name_resolution_pos = strlen (rh->name);
+  GNUNET_free(rh->name);
+  rh->name = GNUNET_strdup(cname);
+  rh->name_resolution_pos = strlen(rh->name);
   switch (rh->record_type)
-  {
-  case GNUNET_DNSPARSER_TYPE_A:
-    af = AF_INET;
-    break;
-  case GNUNET_DNSPARSER_TYPE_AAAA:
-    af = AF_INET6;
-    break;
-  default:
-    af = AF_UNSPEC;
-    break;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Doing standard DNS lookup for `%s'\n",
-              rh->name);
-  rh->std_resolve = GNUNET_RESOLVER_ip_get (rh->name,
-                                            af,
-                                            DNS_LOOKUP_TIMEOUT,
-                                            &handle_dns_result,
-                                            rh);
+    {
+    case GNUNET_DNSPARSER_TYPE_A:
+      af = AF_INET;
+      break;
+
+    case GNUNET_DNSPARSER_TYPE_AAAA:
+      af = AF_INET6;
+      break;
+
+    default:
+      af = AF_UNSPEC;
+      break;
+    }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Doing standard DNS lookup for `%s'\n",
+             rh->name);
+  rh->std_resolve = GNUNET_RESOLVER_ip_get(rh->name,
+                                           af,
+                                           DNS_LOOKUP_TIMEOUT,
+                                           &handle_dns_result,
+                                           rh);
 }
 
 
@@ -1297,9 +1289,9 @@ handle_gns_cname_result (struct GNS_ResolverHandle *rh,
  * @param rd array of records with data to store
  */
 static void
-handle_gns_resolution_result (void *cls,
-                             unsigned int rd_count,
-                             const struct GNUNET_GNSRECORD_Data *rd);
+handle_gns_resolution_result(void *cls,
+                             unsigned int rd_count,
+                             const struct GNUNET_GNSRECORD_Data *rd);
 
 
 /**
@@ -1317,9 +1309,9 @@ handle_gns_resolution_result (void *cls,
  *                specified target peer; NULL on error
  */
 static void
-vpn_allocation_cb (void *cls,
-                  int af,
-                  const void *address)
+vpn_allocation_cb(void *cls,
+                  int af,
+                  const void *address)
 {
   struct VpnContext *vpn_ctx = cls;
   struct GNS_ResolverHandle *rh = vpn_ctx->rh;
@@ -1328,47 +1320,49 @@ vpn_allocation_cb (void *cls,
 
   vpn_ctx->vpn_request = NULL;
   rh->vpn_ctx = NULL;
-  GNUNET_assert (GNUNET_OK ==
-                GNUNET_GNSRECORD_records_deserialize ((size_t) vpn_ctx->rd_data_size,
-                                                      vpn_ctx->rd_data,
-                                                      vpn_ctx->rd_count,
-                                                      rd));
-  for (i=0;i<vpn_ctx->rd_count;i++)
-  {
-    if (GNUNET_GNSRECORD_TYPE_VPN == rd[i].record_type)
+  GNUNET_assert(GNUNET_OK ==
+                GNUNET_GNSRECORD_records_deserialize((size_t)vpn_ctx->rd_data_size,
+                                                     vpn_ctx->rd_data,
+                                                     vpn_ctx->rd_count,
+                                                     rd));
+  for (i = 0; i < vpn_ctx->rd_count; i++)
     {
-      switch (af)
-      {
-      case AF_INET:
-       rd[i].record_type = GNUNET_DNSPARSER_TYPE_A;
-       rd[i].data_size = sizeof (struct in_addr);
-       rd[i].expiration_time = GNUNET_TIME_relative_to_absolute (VPN_TIMEOUT).abs_value_us;
-       rd[i].flags = 0;
-       rd[i].data = address;
-       break;
-      case AF_INET6:
-       rd[i].record_type = GNUNET_DNSPARSER_TYPE_AAAA;
-       rd[i].expiration_time = GNUNET_TIME_relative_to_absolute (VPN_TIMEOUT).abs_value_us;
-       rd[i].flags = 0;
-       rd[i].data = address;
-       rd[i].data_size = sizeof (struct in6_addr);
-       break;
-      default:
-       GNUNET_assert (0);
-      }
-      break;
+      if (GNUNET_GNSRECORD_TYPE_VPN == rd[i].record_type)
+        {
+          switch (af)
+            {
+            case AF_INET:
+              rd[i].record_type = GNUNET_DNSPARSER_TYPE_A;
+              rd[i].data_size = sizeof(struct in_addr);
+              rd[i].expiration_time = GNUNET_TIME_relative_to_absolute(VPN_TIMEOUT).abs_value_us;
+              rd[i].flags = 0;
+              rd[i].data = address;
+              break;
+
+            case AF_INET6:
+              rd[i].record_type = GNUNET_DNSPARSER_TYPE_AAAA;
+              rd[i].expiration_time = GNUNET_TIME_relative_to_absolute(VPN_TIMEOUT).abs_value_us;
+              rd[i].flags = 0;
+              rd[i].data = address;
+              rd[i].data_size = sizeof(struct in6_addr);
+              break;
+
+            default:
+              GNUNET_assert(0);
+            }
+          break;
+        }
     }
-  }
-  GNUNET_assert (i < vpn_ctx->rd_count);
+  GNUNET_assert(i < vpn_ctx->rd_count);
   if (0 == vpn_ctx->rd_count)
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               _("VPN returned empty result for `%s'\n"),
-               rh->name);
-  handle_gns_resolution_result (rh,
-                               vpn_ctx->rd_count,
-                               rd);
-  GNUNET_free (vpn_ctx->rd_data);
-  GNUNET_free (vpn_ctx);
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+               _("VPN returned empty result for `%s'\n"),
+               rh->name);
+  handle_gns_resolution_result(rh,
+                               vpn_ctx->rd_count,
+                               rd);
+  GNUNET_free(vpn_ctx->rd_data);
+  GNUNET_free(vpn_ctx);
 }
 
 
@@ -1380,32 +1374,31 @@ vpn_allocation_cb (void *cls,
  * @param ac context for GNS2DNS resolution
  */
 static void
-continue_with_gns2dns (struct AuthorityChain *ac)
+continue_with_gns2dns(struct AuthorityChain *ac)
 {
   struct GNS_ResolverHandle *rh = ac->rh;
 
-  if ( (NULL != ac->authority_info.dns_authority.gp_head) &&
-       (GNUNET_NO == ac->authority_info.dns_authority.found) )
+  if ((NULL != ac->authority_info.dns_authority.gp_head) &&
+      (GNUNET_NO == ac->authority_info.dns_authority.found))
     return; /* more pending and none found yet */
   if (GNUNET_NO == ac->authority_info.dns_authority.found)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Failed to resolve DNS server for `%s' in GNS2DNS resolution\n",
-                ac->authority_info.dns_authority.name);
-    fail_resolution (rh);
-    return;
-  }
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+                 "Failed to resolve DNS server for `%s' in GNS2DNS resolution\n",
+                 ac->authority_info.dns_authority.name);
+      fail_resolution(rh);
+      return;
+    }
   if (GNUNET_NO != ac->authority_info.dns_authority.launched)
     return; /* already running, do not launch again! */
   /* recurse */
   ac->authority_info.dns_authority.launched = GNUNET_YES;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Will continue resolution using DNS to resolve `%s'\n",
-              ac->label);
-  GNUNET_assert (NULL == rh->task_id);
-  rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution,
-                                          rh);
-
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Will continue resolution using DNS to resolve `%s'\n",
+             ac->label);
+  GNUNET_assert(NULL == rh->task_id);
+  rh->task_id = GNUNET_SCHEDULER_add_now(&recursive_resolution,
+                                         rh);
 }
 
 
@@ -1418,93 +1411,95 @@ continue_with_gns2dns (struct AuthorityChain *ac)
  * @param rd addresses for the DNS resolver  (presumably)
  */
 static void
-handle_gns2dns_result (void *cls,
-                       unsigned int rd_count,
-                       const struct GNUNET_GNSRECORD_Data *rd)
+handle_gns2dns_result(void *cls,
+                      unsigned int rd_count,
+                      const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct Gns2DnsPending *gp = cls;
   struct AuthorityChain *ac = gp->ac;
 
-  GNUNET_CONTAINER_DLL_remove (ac->authority_info.dns_authority.gp_head,
-                               ac->authority_info.dns_authority.gp_tail,
-                               gp);
+  GNUNET_CONTAINER_DLL_remove(ac->authority_info.dns_authority.gp_head,
+                              ac->authority_info.dns_authority.gp_tail,
+                              gp);
   /* enable cleanup of 'rh' handle that automatically comes after we return,
      and which expects 'rh' to be in the #rlh_head DLL. */
   if (NULL != gp->rh)
-  {
-    GNUNET_CONTAINER_DLL_insert (rlh_head,
-                                 rlh_tail,
-                                 gp->rh);
-    gp->rh = NULL;
-  }
-  GNUNET_free (gp);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Received %u results for IP address of DNS server for GNS2DNS transition\n",
-              rd_count);
+    {
+      GNUNET_CONTAINER_DLL_insert(rlh_head,
+                                  rlh_tail,
+                                  gp->rh);
+      gp->rh = NULL;
+    }
+  GNUNET_free(gp);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Received %u results for IP address of DNS server for GNS2DNS transition\n",
+             rd_count);
   /* find suitable A/AAAA record */
-  for (unsigned int j=0;j<rd_count;j++)
-  {
-    switch (rd[j].record_type)
+  for (unsigned int j = 0; j < rd_count; j++)
     {
-    case GNUNET_DNSPARSER_TYPE_A:
-      {
-        struct sockaddr_in v4;
-
-        if (sizeof (struct in_addr) != rd[j].data_size)
+      switch (rd[j].record_type)
         {
-          GNUNET_break_op (0);
-          continue;
-        }
-        memset (&v4,
-                0,
-                sizeof (v4));
-        v4.sin_family = AF_INET;
-        v4.sin_port = htons (53);
+        case GNUNET_DNSPARSER_TYPE_A:
+        {
+          struct sockaddr_in v4;
+
+          if (sizeof(struct in_addr) != rd[j].data_size)
+            {
+              GNUNET_break_op(0);
+              continue;
+            }
+          memset(&v4,
+                 0,
+                 sizeof(v4));
+          v4.sin_family = AF_INET;
+          v4.sin_port = htons(53);
 #if HAVE_SOCKADDR_IN_SIN_LEN
-        v4.sin_len = (u_char) sizeof (v4);
+          v4.sin_len = (u_char)sizeof(v4);
 #endif
-        GNUNET_memcpy (&v4.sin_addr,
-                       rd[j].data,
-                       sizeof (struct in_addr));
-        if (GNUNET_OK ==
-            GNUNET_DNSSTUB_add_dns_sa (ac->authority_info.dns_authority.dns_handle,
-                                       (const struct sockaddr *) &v4))
-          ac->authority_info.dns_authority.found = GNUNET_YES;
-        break;
-      }
-    case GNUNET_DNSPARSER_TYPE_AAAA:
-      {
-        struct sockaddr_in6 v6;
+          GNUNET_memcpy(&v4.sin_addr,
+                        rd[j].data,
+                        sizeof(struct in_addr));
+          if (GNUNET_OK ==
+              GNUNET_DNSSTUB_add_dns_sa(ac->authority_info.dns_authority.dns_handle,
+                                        (const struct sockaddr *)&v4))
+            ac->authority_info.dns_authority.found = GNUNET_YES;
+          break;
+        }
 
-        if (sizeof (struct in6_addr) != rd[j].data_size)
+        case GNUNET_DNSPARSER_TYPE_AAAA:
         {
-          GNUNET_break_op (0);
-          continue;
-        }
-        /* FIXME: might want to check if we support IPv6 here,
-           and otherwise skip this one and hope we find another */
-        memset (&v6,
-                0,
-                sizeof (v6));
-        v6.sin6_family = AF_INET6;
-        v6.sin6_port = htons (53);
+          struct sockaddr_in6 v6;
+
+          if (sizeof(struct in6_addr) != rd[j].data_size)
+            {
+              GNUNET_break_op(0);
+              continue;
+            }
+          /* FIXME: might want to check if we support IPv6 here,
+             and otherwise skip this one and hope we find another */
+          memset(&v6,
+                 0,
+                 sizeof(v6));
+          v6.sin6_family = AF_INET6;
+          v6.sin6_port = htons(53);
 #if HAVE_SOCKADDR_IN_SIN_LEN
-        v6.sin6_len = (u_char) sizeof (v6);
+          v6.sin6_len = (u_char)sizeof(v6);
 #endif
-        GNUNET_memcpy (&v6.sin6_addr,
-                       rd[j].data,
-                       sizeof (struct in6_addr));
-        if (GNUNET_OK ==
-            GNUNET_DNSSTUB_add_dns_sa (ac->authority_info.dns_authority.dns_handle,
-                                       (const struct sockaddr *) &v6))
-          ac->authority_info.dns_authority.found = GNUNET_YES;
-        break;
-      }
-    default:
-      break;
+          GNUNET_memcpy(&v6.sin6_addr,
+                        rd[j].data,
+                        sizeof(struct in6_addr));
+          if (GNUNET_OK ==
+              GNUNET_DNSSTUB_add_dns_sa(ac->authority_info.dns_authority.dns_handle,
+                                        (const struct sockaddr *)&v6))
+            ac->authority_info.dns_authority.found = GNUNET_YES;
+          break;
+        }
+
+        default:
+          break;
+        }
     }
-  }
-  continue_with_gns2dns (ac);
+  continue_with_gns2dns(ac);
 }
 
 
@@ -1516,9 +1511,9 @@ handle_gns2dns_result (void *cls,
  * @param addrlen length of @a addr
  */
 static void
-handle_gns2dns_ip (void *cls,
-                   const struct sockaddr *addr,
-                   socklen_t addrlen)
+handle_gns2dns_ip(void *cls,
+                  const struct sockaddr *addr,
+                  socklen_t addrlen)
 {
   struct Gns2DnsPending *gp = cls;
   struct AuthorityChain *ac = gp->ac;
@@ -1527,42 +1522,44 @@ handle_gns2dns_ip (void *cls,
   struct sockaddr_in6 *v6;
 
   if (NULL == addr)
-  {
-    /* DNS resolution finished */
-    if (0 == gp->num_results)
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "Failed to use DNS to resolve name of DNS resolver\n");
-    GNUNET_CONTAINER_DLL_remove (ac->authority_info.dns_authority.gp_head,
-                                 ac->authority_info.dns_authority.gp_tail,
-                                 gp);
-    GNUNET_free (gp);
-    continue_with_gns2dns (ac);
-    return;
-  }
-  GNUNET_memcpy (&ss,
-                 addr,
-                 addrlen);
+    {
+      /* DNS resolution finished */
+      if (0 == gp->num_results)
+        GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                   "Failed to use DNS to resolve name of DNS resolver\n");
+      GNUNET_CONTAINER_DLL_remove(ac->authority_info.dns_authority.gp_head,
+                                  ac->authority_info.dns_authority.gp_tail,
+                                  gp);
+      GNUNET_free(gp);
+      continue_with_gns2dns(ac);
+      return;
+    }
+  GNUNET_memcpy(&ss,
+                addr,
+                addrlen);
   switch (ss.ss_family)
-  {
-  case AF_INET:
-    v4 = (struct sockaddr_in *) &ss;
-    v4->sin_port = htons (53);
-    gp->num_results++;
-    break;
-  case AF_INET6:
-    v6 = (struct sockaddr_in6 *) &ss;
-    v6->sin6_port = htons (53);
-    gp->num_results++;
-    break;
-  default:
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Unsupported AF %d\n",
-                ss.ss_family);
-    return;
-  }
+    {
+    case AF_INET:
+      v4 = (struct sockaddr_in *)&ss;
+      v4->sin_port = htons(53);
+      gp->num_results++;
+      break;
+
+    case AF_INET6:
+      v6 = (struct sockaddr_in6 *)&ss;
+      v6->sin6_port = htons(53);
+      gp->num_results++;
+      break;
+
+    default:
+      GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
+                 "Unsupported AF %d\n",
+                 ss.ss_family);
+      return;
+    }
   if (GNUNET_OK ==
-      GNUNET_DNSSTUB_add_dns_sa (ac->authority_info.dns_authority.dns_handle,
-                                 (struct sockaddr *) &ss))
+      GNUNET_DNSSTUB_add_dns_sa(ac->authority_info.dns_authority.dns_handle,
+                                (struct sockaddr *)&ss))
     ac->authority_info.dns_authority.found = GNUNET_YES;
 }
 
@@ -1574,27 +1571,27 @@ handle_gns2dns_ip (void *cls,
  * @param rd record with CNAME to resolve recursively
  */
 static void
-recursive_cname_resolution (struct GNS_ResolverHandle *rh,
-                            const struct GNUNET_GNSRECORD_Data *rd)
+recursive_cname_resolution(struct GNS_ResolverHandle *rh,
+                           const struct GNUNET_GNSRECORD_Data *rd)
 {
   char *cname;
   size_t off;
 
   off = 0;
-  cname = GNUNET_DNSPARSER_parse_name (rd->data,
-                                       rd->data_size,
-                                       &off);
-  if ( (NULL == cname) ||
-       (off != rd->data_size) )
-  {
-    GNUNET_break_op (0); /* record not well-formed */
-    GNUNET_free_non_null (cname);
-    fail_resolution (rh);
-    return;
-  }
-  handle_gns_cname_result (rh,
-                           cname);
-  GNUNET_free (cname);
+  cname = GNUNET_DNSPARSER_parse_name(rd->data,
+                                      rd->data_size,
+                                      &off);
+  if ((NULL == cname) ||
+      (off != rd->data_size))
+    {
+      GNUNET_break_op(0); /* record not well-formed */
+      GNUNET_free_non_null(cname);
+      fail_resolution(rh);
+      return;
+    }
+  handle_gns_cname_result(rh,
+                          cname);
+  GNUNET_free(cname);
 }
 
 
@@ -1605,34 +1602,34 @@ recursive_cname_resolution (struct GNS_ResolverHandle *rh,
  * @param rd record with PKEY to resolve recursively
  */
 static void
-recursive_pkey_resolution (struct GNS_ResolverHandle *rh,
-                           const struct GNUNET_GNSRECORD_Data *rd)
+recursive_pkey_resolution(struct GNS_ResolverHandle *rh,
+                          const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct AuthorityChain *ac;
 
   /* delegation to another zone */
-  if (sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) !=
+  if (sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey) !=
       rd->data_size)
-  {
-    GNUNET_break_op (0);
-    fail_resolution (rh);
-    return;
-  }
+    {
+      GNUNET_break_op(0);
+      fail_resolution(rh);
+      return;
+    }
   /* expand authority chain */
-  ac = GNUNET_new (struct AuthorityChain);
+  ac = GNUNET_new(struct AuthorityChain);
   ac->rh = rh;
   ac->gns_authority = GNUNET_YES;
-  GNUNET_memcpy (&ac->authority_info.gns_authority,
-                 rd->data,
-                 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey));
-  ac->label = resolver_lookup_get_next_label (rh);
+  GNUNET_memcpy(&ac->authority_info.gns_authority,
+                rd->data,
+                sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey));
+  ac->label = resolver_lookup_get_next_label(rh);
   /* add AC to tail */
-  GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head,
-                                    rh->ac_tail,
-                                    ac);
+  GNUNET_CONTAINER_DLL_insert_tail(rh->ac_head,
+                                   rh->ac_tail,
+                                   ac);
   /* recurse */
-  rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution,
-                                          rh);
+  rh->task_id = GNUNET_SCHEDULER_add_now(&recursive_resolution,
+                                         rh);
 }
 
 
@@ -1647,9 +1644,9 @@ recursive_pkey_resolution (struct GNS_ResolverHandle *rh,
  * @return #GNUNET_OK if this worked, #GNUNET_SYSERR if no GNS2DNS records were in @a rd
  */
 static int
-recursive_gns2dns_resolution (struct GNS_ResolverHandle *rh,
-                              unsigned int rd_count,
-                              const struct GNUNET_GNSRECORD_Data *rd)
+recursive_gns2dns_resolution(struct GNS_ResolverHandle *rh,
+                             unsigned int rd_count,
+                             const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct AuthorityChain *ac;
   const char *tld;
@@ -1657,157 +1654,157 @@ recursive_gns2dns_resolution (struct GNS_ResolverHandle *rh,
 
   ns = NULL;
   /* expand authority chain */
-  ac = GNUNET_new (struct AuthorityChain);
+  ac = GNUNET_new(struct AuthorityChain);
   ac->rh = rh;
-  ac->authority_info.dns_authority.dns_handle = GNUNET_DNSSTUB_start (4);
+  ac->authority_info.dns_authority.dns_handle = GNUNET_DNSSTUB_start(4);
 
-  for (unsigned int i=0;i<rd_count;i++)
-  {
-    char *ip;
-    char *n;
-    size_t off;
-    struct Gns2DnsPending *gp;
-    struct GNUNET_CRYPTO_EcdsaPublicKey zone;
-    struct sockaddr_in v4;
-    struct sockaddr_in6 v6;
-
-    if (GNUNET_GNSRECORD_TYPE_GNS2DNS != rd[i].record_type)
-      continue;
-    off = 0;
-    n = GNUNET_DNSPARSER_parse_name (rd[i].data,
-                                     rd[i].data_size,
-                                     &off);
-    ip = GNUNET_DNSPARSER_parse_name (rd[i].data,
-                                      rd[i].data_size,
-                                      &off);
-    if ( (NULL == n) ||
-         (NULL == ip) ||
-         (off != rd[i].data_size) )
+  for (unsigned int i = 0; i < rd_count; i++)
     {
-      GNUNET_break_op (0);
-      GNUNET_free_non_null (n);
-      GNUNET_free_non_null (ip);
-      continue;
-    }
-    /* resolve 'ip' to determine the IP(s) of the DNS
-       resolver to use for lookup of 'ns' */
-    if (NULL != ns)
-    {
-      if (0 != strcasecmp (ns,
-                           n))
-      {
-        /* NS values must all be the same for all GNS2DNS records,
-           anything else leads to insanity */
-        GNUNET_break_op (0);
-        GNUNET_free (n);
-        GNUNET_free (ip);
+      char *ip;
+      char *n;
+      size_t off;
+      struct Gns2DnsPending *gp;
+      struct GNUNET_CRYPTO_EcdsaPublicKey zone;
+      struct sockaddr_in v4;
+      struct sockaddr_in6 v6;
+
+      if (GNUNET_GNSRECORD_TYPE_GNS2DNS != rd[i].record_type)
         continue;
-      }
-      GNUNET_free (n);
-    }
-    else
-    {
-      ns = n;
-    }
+      off = 0;
+      n = GNUNET_DNSPARSER_parse_name(rd[i].data,
+                                      rd[i].data_size,
+                                      &off);
+      ip = GNUNET_DNSPARSER_parse_name(rd[i].data,
+                                       rd[i].data_size,
+                                       &off);
+      if ((NULL == n) ||
+          (NULL == ip) ||
+          (off != rd[i].data_size))
+        {
+          GNUNET_break_op(0);
+          GNUNET_free_non_null(n);
+          GNUNET_free_non_null(ip);
+          continue;
+        }
+      /* resolve 'ip' to determine the IP(s) of the DNS
+         resolver to use for lookup of 'ns' */
+      if (NULL != ns)
+        {
+          if (0 != strcasecmp(ns,
+                              n))
+            {
+              /* NS values must all be the same for all GNS2DNS records,
+                 anything else leads to insanity */
+              GNUNET_break_op(0);
+              GNUNET_free(n);
+              GNUNET_free(ip);
+              continue;
+            }
+          GNUNET_free(n);
+        }
+      else
+        {
+          ns = n;
+        }
 
-    /* check if 'ip' is already an IPv4/IPv6 address */
-    if ( (1 == inet_pton (AF_INET,
+      /* check if 'ip' is already an IPv4/IPv6 address */
+      if ((1 == inet_pton(AF_INET,
                           ip,
                           &v4)) ||
-         (1 == inet_pton (AF_INET6,
+          (1 == inet_pton(AF_INET6,
                           ip,
-                          &v6)) )
-    {
-      GNUNET_break (GNUNET_OK ==
-                    GNUNET_DNSSTUB_add_dns_ip (ac->authority_info.dns_authority.dns_handle,
-                                               ip));
-      ac->authority_info.dns_authority.found = GNUNET_YES;
-      GNUNET_free (ip);
-      continue;
-    }
-    tld = GNS_get_tld (ip);
-    if (0 != strcmp (tld,
-                     "+"))
-    {
-      /* 'ip' is a DNS name */
-      gp = GNUNET_new (struct Gns2DnsPending);
+                          &v6)))
+        {
+          GNUNET_break(GNUNET_OK ==
+                       GNUNET_DNSSTUB_add_dns_ip(ac->authority_info.dns_authority.dns_handle,
+                                                 ip));
+          ac->authority_info.dns_authority.found = GNUNET_YES;
+          GNUNET_free(ip);
+          continue;
+        }
+      tld = GNS_get_tld(ip);
+      if (0 != strcmp(tld,
+                      "+"))
+        {
+          /* 'ip' is a DNS name */
+          gp = GNUNET_new(struct Gns2DnsPending);
+          gp->ac = ac;
+          GNUNET_CONTAINER_DLL_insert(ac->authority_info.dns_authority.gp_head,
+                                      ac->authority_info.dns_authority.gp_tail,
+                                      gp);
+          gp->dns_rh = GNUNET_RESOLVER_ip_get(ip,
+                                              AF_UNSPEC,
+                                              GNUNET_TIME_UNIT_FOREVER_REL,
+                                              &handle_gns2dns_ip,
+                                              gp);
+          GNUNET_free(ip);
+          continue;
+        }
+      /* 'ip' should be a GNS name */
+      gp = GNUNET_new(struct Gns2DnsPending);
       gp->ac = ac;
-      GNUNET_CONTAINER_DLL_insert (ac->authority_info.dns_authority.gp_head,
-                                   ac->authority_info.dns_authority.gp_tail,
-                                   gp);
-      gp->dns_rh = GNUNET_RESOLVER_ip_get (ip,
-                                           AF_UNSPEC,
-                                           GNUNET_TIME_UNIT_FOREVER_REL,
-                                           &handle_gns2dns_ip,
-                                           gp);
-      GNUNET_free (ip);
-      continue;
-    }
-    /* 'ip' should be a GNS name */
-    gp = GNUNET_new (struct Gns2DnsPending);
-    gp->ac = ac;
-    GNUNET_CONTAINER_DLL_insert (ac->authority_info.dns_authority.gp_head,
-                                 ac->authority_info.dns_authority.gp_tail,
-                                 gp);
-    gp->rh = GNUNET_new (struct GNS_ResolverHandle);
-    ip = translate_dot_plus (rh,
-                             ip);
-    tld = GNS_get_tld (ip);
-    if (GNUNET_OK !=
-        GNUNET_GNSRECORD_zkey_to_pkey (tld,
-                                       &zone))
-    {
-      GNUNET_break_op (0);
-      GNUNET_free (ip);
-      continue;
-    }
-    gp->rh->authority_zone = zone;
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Resolving `%s' to determine IP address of DNS server for GNS2DNS transition for `%s'\n",
-                ip,
-                ns);
-    gp->rh->name = ip;
-    gp->rh->name_resolution_pos = strlen (ip) - strlen (tld) - 1;
-    gp->rh->proc = &handle_gns2dns_result;
-    gp->rh->proc_cls = gp;
-    gp->rh->record_type = GNUNET_GNSRECORD_TYPE_ANY;
-    gp->rh->options = GNUNET_GNS_LO_DEFAULT;
-    gp->rh->loop_limiter = rh->loop_limiter + 1;
-    gp->rh->task_id
-      = GNUNET_SCHEDULER_add_now (&start_resolver_lookup,
-                                  gp->rh);
-  } /* end 'for all records' */
+      GNUNET_CONTAINER_DLL_insert(ac->authority_info.dns_authority.gp_head,
+                                  ac->authority_info.dns_authority.gp_tail,
+                                  gp);
+      gp->rh = GNUNET_new(struct GNS_ResolverHandle);
+      ip = translate_dot_plus(rh,
+                              ip);
+      tld = GNS_get_tld(ip);
+      if (GNUNET_OK !=
+          GNUNET_GNSRECORD_zkey_to_pkey(tld,
+                                        &zone))
+        {
+          GNUNET_break_op(0);
+          GNUNET_free(ip);
+          continue;
+        }
+      gp->rh->authority_zone = zone;
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Resolving `%s' to determine IP address of DNS server for GNS2DNS transition for `%s'\n",
+                 ip,
+                 ns);
+      gp->rh->name = ip;
+      gp->rh->name_resolution_pos = strlen(ip) - strlen(tld) - 1;
+      gp->rh->proc = &handle_gns2dns_result;
+      gp->rh->proc_cls = gp;
+      gp->rh->record_type = GNUNET_GNSRECORD_TYPE_ANY;
+      gp->rh->options = GNUNET_GNS_LO_DEFAULT;
+      gp->rh->loop_limiter = rh->loop_limiter + 1;
+      gp->rh->task_id
+        = GNUNET_SCHEDULER_add_now(&start_resolver_lookup,
+                                   gp->rh);
+    } /* end 'for all records' */
 
   if (NULL == ns)
-  {
-    /* not a single GNS2DNS record found */
-    GNUNET_free (ac);
-    return GNUNET_SYSERR;
-  }
-  GNUNET_assert (strlen (ns) <= GNUNET_DNSPARSER_MAX_NAME_LENGTH);
-  strcpy (ac->authority_info.dns_authority.name,
-          ns);
+    {
+      /* not a single GNS2DNS record found */
+      GNUNET_free(ac);
+      return GNUNET_SYSERR;
+    }
+  GNUNET_assert(strlen(ns) <= GNUNET_DNSPARSER_MAX_NAME_LENGTH);
+  strcpy(ac->authority_info.dns_authority.name,
+         ns);
   /* for DNS recursion, the label is the full DNS name,
      created from the remainder of the GNS name and the
      name in the NS record */
-  GNUNET_asprintf (&ac->label,
-                   "%.*s%s%s",
-                   (int) rh->name_resolution_pos,
-                   rh->name,
-                   (0 != rh->name_resolution_pos) ? "." : "",
-                   ns);
-  GNUNET_free (ns);
-  GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head,
-                                    rh->ac_tail,
-                                    ac);
-  if (strlen (ac->label) > GNUNET_DNSPARSER_MAX_NAME_LENGTH)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                _("GNS lookup resulted in DNS name that is too long (`%s')\n"),
-                ac->label);
-    return GNUNET_SYSERR;
-  }
-  continue_with_gns2dns (ac);
+  GNUNET_asprintf(&ac->label,
+                  "%.*s%s%s",
+                  (int)rh->name_resolution_pos,
+                  rh->name,
+                  (0 != rh->name_resolution_pos) ? "." : "",
+                  ns);
+  GNUNET_free(ns);
+  GNUNET_CONTAINER_DLL_insert_tail(rh->ac_head,
+                                   rh->ac_tail,
+                                   ac);
+  if (strlen(ac->label) > GNUNET_DNSPARSER_MAX_NAME_LENGTH)
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                 _("GNS lookup resulted in DNS name that is too long (`%s')\n"),
+                 ac->label);
+      return GNUNET_SYSERR;
+    }
+  continue_with_gns2dns(ac);
   return GNUNET_OK;
 }
 
@@ -1820,9 +1817,9 @@ recursive_gns2dns_resolution (struct GNS_ResolverHandle *rh,
  * @param rd array of records with data to store
  */
 static void
-handle_gns_resolution_result (void *cls,
-                             unsigned int rd_count,
-                             const struct GNUNET_GNSRECORD_Data *rd)
+handle_gns_resolution_result(void *cls,
+                             unsigned int rd_count,
+                             const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct GNS_ResolverHandle *rh = cls;
   char *cname;
@@ -1838,431 +1835,442 @@ handle_gns_resolution_result (void *cls,
   struct GNUNET_GNSRECORD_Data rd_new[rd_count];
   unsigned int rd_off;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-             "Resolution succeeded for `%s' in zone %s, got %u records\n",
-             rh->ac_tail->label,
-             GNUNET_GNSRECORD_z2s (&rh->ac_tail->authority_info.gns_authority),
-             rd_count);
+  GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+             "Resolution succeeded for `%s' in zone %s, got %u records\n",
+             rh->ac_tail->label,
+             GNUNET_GNSRECORD_z2s(&rh->ac_tail->authority_info.gns_authority),
+             rd_count);
   if (0 == rd_count)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                _("GNS lookup failed (zero records found for `%s')\n"),
-               rh->name);
-    fail_resolution (rh);
-    return;
-  }
-
-  if (0 == rh->name_resolution_pos)
-  {
-    /* top-level match, are we done yet? */
-    if ( (rd_count > 0) &&
-        (GNUNET_DNSPARSER_TYPE_CNAME == rd[0].record_type) &&
-        (GNUNET_DNSPARSER_TYPE_CNAME != rh->record_type) )
     {
-      off = 0;
-      cname = GNUNET_DNSPARSER_parse_name (rd[0].data,
-                                          rd[0].data_size,
-                                          &off);
-      if ( (NULL == cname) ||
-          (off != rd[0].data_size) )
-      {
-       GNUNET_break_op (0);
-        GNUNET_free_non_null (cname);
-        fail_resolution (rh);
-       return;
-      }
-      handle_gns_cname_result (rh,
-                              cname);
-      GNUNET_free (cname);
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                 _("GNS lookup failed (zero records found for `%s')\n"),
+                 rh->name);
+      fail_resolution(rh);
       return;
     }
-    /* If A/AAAA was requested, but we got a VPN
-       record, we convert it to A/AAAA using GNUnet VPN */
-    if ( (GNUNET_DNSPARSER_TYPE_A == rh->record_type) ||
-        (GNUNET_DNSPARSER_TYPE_AAAA == rh->record_type) )
+
+  if (0 == rh->name_resolution_pos)
     {
-      for (unsigned int i=0;i<rd_count;i++)
-      {
-       switch (rd[i].record_type)
-       {
-       case GNUNET_GNSRECORD_TYPE_VPN:
-         {
-           af = (GNUNET_DNSPARSER_TYPE_A == rh->record_type) ? AF_INET : AF_INET6;
-           if (sizeof (struct GNUNET_TUN_GnsVpnRecord) >
-               rd[i].data_size)
-           {
-             GNUNET_break_op (0);
-              fail_resolution (rh);
-             return;
-           }
-           vpn = (const struct GNUNET_TUN_GnsVpnRecord *) rd[i].data;
-           vname = (const char *) &vpn[1];
-           if ('\0' != vname[rd[i].data_size - 1 - sizeof (struct GNUNET_TUN_GnsVpnRecord)])
-           {
-             GNUNET_break_op (0);
-              fail_resolution (rh);
-             return;
-           }
-           GNUNET_TUN_service_name_to_hash (vname,
-                                             &vhash);
-            GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                        "Attempting VPN allocation for %s-%s (AF: %d, proto %d)\n",
-                        GNUNET_i2s (&vpn->peer),
-                        vname,
-                        (int) af,
-                        (int) ntohs (vpn->proto));
-           vpn_ctx = GNUNET_new (struct VpnContext);
-           rh->vpn_ctx = vpn_ctx;
-           vpn_ctx->rh = rh;
-           vpn_ctx->rd_data_size = GNUNET_GNSRECORD_records_get_size (rd_count,
-                                                                      rd);
-            if (vpn_ctx->rd_data_size < 0)
+      /* top-level match, are we done yet? */
+      if ((rd_count > 0) &&
+          (GNUNET_DNSPARSER_TYPE_CNAME == rd[0].record_type) &&
+          (GNUNET_DNSPARSER_TYPE_CNAME != rh->record_type))
+        {
+          off = 0;
+          cname = GNUNET_DNSPARSER_parse_name(rd[0].data,
+                                              rd[0].data_size,
+                                              &off);
+          if ((NULL == cname) ||
+              (off != rd[0].data_size))
             {
-             GNUNET_break_op (0);
-              GNUNET_free (vpn_ctx);
-              fail_resolution (rh);
-             return;
-            }
-           vpn_ctx->rd_data = GNUNET_malloc ((size_t) vpn_ctx->rd_data_size);
-            vpn_ctx->rd_count = rd_count;
-           GNUNET_assert (vpn_ctx->rd_data_size ==
-                           GNUNET_GNSRECORD_records_serialize (rd_count,
-                                                               rd,
-                                                               (size_t) vpn_ctx->rd_data_size,
-                                                               vpn_ctx->rd_data));
-           vpn_ctx->vpn_request = GNUNET_VPN_redirect_to_peer (vpn_handle,
-                                                               af,
-                                                               ntohs (vpn->proto),
-                                                               &vpn->peer,
-                                                               &vhash,
-                                                               GNUNET_TIME_relative_to_absolute (VPN_TIMEOUT),
-                                                               &vpn_allocation_cb,
-                                                               vpn_ctx);
-           return;
-         }
-       case GNUNET_GNSRECORD_TYPE_GNS2DNS:
-         {
-           /* delegation to DNS */
-            GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                        "Found GNS2DNS record, delegating to DNS!\n");
-            if (GNUNET_OK ==
-                recursive_gns2dns_resolution (rh,
-                                              rd_count,
-                                              rd))
+              GNUNET_break_op(0);
+              GNUNET_free_non_null(cname);
+              fail_resolution(rh);
               return;
-            else
-              goto fail;
-         }
-       default:
-         break;
-       } /* end: switch */
-      } /* end: for rd */
-    } /* end: name_resolution_pos */
-    /* convert relative names in record values to absolute names,
-       using 'scratch' array for memory allocations */
-    scratch_off = 0;
-    rd_off = 0;
-    for (unsigned int i=0;i<rd_count;i++)
-    {
-      GNUNET_assert (rd_off <= i);
-      if ( (0 != rh->protocol) &&
-           (0 != rh->service) &&
-           (GNUNET_GNSRECORD_TYPE_BOX != rd[i].record_type) )
-        continue; /* we _only_ care about boxed records */
-
-      GNUNET_assert (rd_off < rd_count);
-      rd_new[rd_off] = rd[i];
-      /* Check if the embedded name(s) end in "+", and if so,
-        replace the "+" with the zone at "ac_tail", changing the name
-        to a ".ZONEKEY".  The name is allocated on the 'scratch' array,
-        so we can free it afterwards. */
-      switch (rd[i].record_type)
-      {
-      case GNUNET_DNSPARSER_TYPE_CNAME:
-       {
-         char *cname;
-
-         off = 0;
-         cname = GNUNET_DNSPARSER_parse_name (rd[i].data,
-                                              rd[i].data_size,
-                                              &off);
-         if ( (NULL == cname) ||
-              (off != rd[i].data_size) )
-         {
-           GNUNET_break_op (0); /* record not well-formed */
-         }
-         else
-         {
-           cname = translate_dot_plus (rh, cname);
-            GNUNET_break (NULL != cname);
-           scratch_start = scratch_off;
-           if (GNUNET_OK !=
-               GNUNET_DNSPARSER_builder_add_name (scratch,
-                                                  sizeof (scratch),
-                                                  &scratch_off,
-                                                  cname))
-           {
-             GNUNET_break (0);
-           }
-           else
-           {
-              GNUNET_assert (rd_off < rd_count);
-             rd_new[rd_off].data = &scratch[scratch_start];
-             rd_new[rd_off].data_size = scratch_off - scratch_start;
-             rd_off++;
-           }
-         }
-         GNUNET_free_non_null (cname);
-       }
-       break;
-      case GNUNET_DNSPARSER_TYPE_SOA:
-       {
-         struct GNUNET_DNSPARSER_SoaRecord *soa;
-
-         off = 0;
-         soa = GNUNET_DNSPARSER_parse_soa (rd[i].data,
-                                           rd[i].data_size,
-                                           &off);
-         if ( (NULL == soa) ||
-              (off != rd[i].data_size) )
-         {
-           GNUNET_break_op (0); /* record not well-formed */
-         }
-         else
-         {
-           soa->mname = translate_dot_plus (rh, soa->mname);
-           soa->rname = translate_dot_plus (rh, soa->rname);
-           scratch_start = scratch_off;
-           if (GNUNET_OK !=
-               GNUNET_DNSPARSER_builder_add_soa (scratch,
-                                                 sizeof (scratch),
-                                                 &scratch_off,
-                                                 soa))
-           {
-             GNUNET_break (0);
-           }
-           else
-           {
-              GNUNET_assert (rd_off < rd_count);
-             rd_new[rd_off].data = &scratch[scratch_start];
-             rd_new[rd_off].data_size = scratch_off - scratch_start;
-             rd_off++;
-           }
-         }
-         if (NULL != soa)
-           GNUNET_DNSPARSER_free_soa (soa);
-       }
-       break;
-      case GNUNET_DNSPARSER_TYPE_MX:
-       {
-         struct GNUNET_DNSPARSER_MxRecord *mx;
-
-         off = 0;
-         mx = GNUNET_DNSPARSER_parse_mx (rd[i].data,
-                                         rd[i].data_size,
-                                         &off);
-         if ( (NULL == mx) ||
-              (off != rd[i].data_size) )
-         {
-           GNUNET_break_op (0); /* record not well-formed */
-         }
-         else
-         {
-           mx->mxhost = translate_dot_plus (rh, mx->mxhost);
-           scratch_start = scratch_off;
-           if (GNUNET_OK !=
-               GNUNET_DNSPARSER_builder_add_mx (scratch,
-                                                sizeof (scratch),
-                                                &scratch_off,
-                                                mx))
-           {
-             GNUNET_break (0);
-           }
-           else
-           {
-              GNUNET_assert (rd_off < rd_count);
-             rd_new[rd_off].data = &scratch[scratch_start];
-             rd_new[rd_off].data_size = scratch_off - scratch_start;
-             rd_off++;
-           }
-         }
-         if (NULL != mx)
-           GNUNET_DNSPARSER_free_mx (mx);
-       }
-       break;
-      case GNUNET_DNSPARSER_TYPE_SRV:
-       {
-         struct GNUNET_DNSPARSER_SrvRecord *srv;
-
-         off = 0;
-         srv = GNUNET_DNSPARSER_parse_srv (rd[i].data,
-                                           rd[i].data_size,
-                                           &off);
-         if ( (NULL == srv) ||
-              (off != rd[i].data_size) )
-         {
-           GNUNET_break_op (0); /* record not well-formed */
-         }
-         else
-         {
-           srv->target = translate_dot_plus (rh, srv->target);
-           scratch_start = scratch_off;
-           if (GNUNET_OK !=
-               GNUNET_DNSPARSER_builder_add_srv (scratch,
-                                                 sizeof (scratch),
-                                                 &scratch_off,
-                                                 srv))
-           {
-             GNUNET_break (0);
-           }
-           else
-           {
-              GNUNET_assert (rd_off < rd_count);
-             rd_new[rd_off].data = &scratch[scratch_start];
-             rd_new[rd_off].data_size = scratch_off - scratch_start;
-             rd_off++;
-           }
-         }
-         if (NULL != srv)
-           GNUNET_DNSPARSER_free_srv (srv);
-       }
-       break;
-
-      case GNUNET_GNSRECORD_TYPE_NICK:
-        {
-          const char *nick;
-
-          nick = rd[i].data;
-          if ((rd[i].data_size > 0) &&
-              (nick[rd[i].data_size -1] != '\0'))
-          {
-            GNUNET_break_op (0);
-            break;
-          }
-          break;
-        }
-      case GNUNET_GNSRECORD_TYPE_PKEY:
-        {
-         struct GNUNET_CRYPTO_EcdsaPublicKey pub;
-
-         if (rd[i].data_size != sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))
-         {
-           GNUNET_break_op (0);
-           break;
-         }
-         GNUNET_memcpy (&pub,
-                         rd[i].data,
-                         rd[i].data_size);
-          rd_off++;
-          if (GNUNET_GNSRECORD_TYPE_PKEY != rh->record_type)
-          {
-            /* try to resolve "@" */
-            struct AuthorityChain *ac;
-
-            ac = GNUNET_new (struct AuthorityChain);
-            ac->rh = rh;
-            ac->gns_authority = GNUNET_YES;
-            ac->authority_info.gns_authority = pub;
-            ac->label = GNUNET_strdup (GNUNET_GNS_EMPTY_LABEL_AT);
-            GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head,
-                                              rh->ac_tail,
-                                              ac);
-            rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution,
-                                                    rh);
-            return;
-          }
+            }
+          handle_gns_cname_result(rh,
+                                  cname);
+          GNUNET_free(cname);
+          return;
         }
-       break;
-      case GNUNET_GNSRECORD_TYPE_GNS2DNS:
+      /* If A/AAAA was requested, but we got a VPN
+         record, we convert it to A/AAAA using GNUnet VPN */
+      if ((GNUNET_DNSPARSER_TYPE_A == rh->record_type) ||
+          (GNUNET_DNSPARSER_TYPE_AAAA == rh->record_type))
         {
-          /* delegation to DNS */
-          if (GNUNET_GNSRECORD_TYPE_GNS2DNS == rh->record_type)
-          {
-            rd_off++;
-            break; /* do not follow to DNS, we wanted the GNS2DNS record! */
-          }
-          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                      "Found GNS2DNS record, delegating to DNS!\n");
-          if (GNUNET_OK ==
-              recursive_gns2dns_resolution (rh,
-                                            rd_count,
-                                            rd))
-            return;
-          else
-            goto fail;
-        }
-      case GNUNET_GNSRECORD_TYPE_BOX:
+          for (unsigned int i = 0; i < rd_count; i++)
+            {
+              switch (rd[i].record_type)
+                {
+                case GNUNET_GNSRECORD_TYPE_VPN:
+                {
+                  af = (GNUNET_DNSPARSER_TYPE_A == rh->record_type) ? AF_INET : AF_INET6;
+                  if (sizeof(struct GNUNET_TUN_GnsVpnRecord) >
+                      rd[i].data_size)
+                    {
+                      GNUNET_break_op(0);
+                      fail_resolution(rh);
+                      return;
+                    }
+                  vpn = (const struct GNUNET_TUN_GnsVpnRecord *)rd[i].data;
+                  vname = (const char *)&vpn[1];
+                  if ('\0' != vname[rd[i].data_size - 1 - sizeof(struct GNUNET_TUN_GnsVpnRecord)])
+                    {
+                      GNUNET_break_op(0);
+                      fail_resolution(rh);
+                      return;
+                    }
+                  GNUNET_TUN_service_name_to_hash(vname,
+                                                  &vhash);
+                  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                             "Attempting VPN allocation for %s-%s (AF: %d, proto %d)\n",
+                             GNUNET_i2s(&vpn->peer),
+                             vname,
+                             (int)af,
+                             (int)ntohs(vpn->proto));
+                  vpn_ctx = GNUNET_new(struct VpnContext);
+                  rh->vpn_ctx = vpn_ctx;
+                  vpn_ctx->rh = rh;
+                  vpn_ctx->rd_data_size = GNUNET_GNSRECORD_records_get_size(rd_count,
+                                                                            rd);
+                  if (vpn_ctx->rd_data_size < 0)
+                    {
+                      GNUNET_break_op(0);
+                      GNUNET_free(vpn_ctx);
+                      fail_resolution(rh);
+                      return;
+                    }
+                  vpn_ctx->rd_data = GNUNET_malloc((size_t)vpn_ctx->rd_data_size);
+                  vpn_ctx->rd_count = rd_count;
+                  GNUNET_assert(vpn_ctx->rd_data_size ==
+                                GNUNET_GNSRECORD_records_serialize(rd_count,
+                                                                   rd,
+                                                                   (size_t)vpn_ctx->rd_data_size,
+                                                                   vpn_ctx->rd_data));
+                  vpn_ctx->vpn_request = GNUNET_VPN_redirect_to_peer(vpn_handle,
+                                                                     af,
+                                                                     ntohs(vpn->proto),
+                                                                     &vpn->peer,
+                                                                     &vhash,
+                                                                     GNUNET_TIME_relative_to_absolute(VPN_TIMEOUT),
+                                                                     &vpn_allocation_cb,
+                                                                     vpn_ctx);
+                  return;
+                }
+
+                case GNUNET_GNSRECORD_TYPE_GNS2DNS:
+                {
+                  /* delegation to DNS */
+                  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                             "Found GNS2DNS record, delegating to DNS!\n");
+                  if (GNUNET_OK ==
+                      recursive_gns2dns_resolution(rh,
+                                                   rd_count,
+                                                   rd))
+                    return;
+                  else
+                    goto fail;
+                }
+
+                default:
+                  break;
+                } /* end: switch */
+            } /* end: for rd */
+        } /* end: name_resolution_pos */
+      /* convert relative names in record values to absolute names,
+         using 'scratch' array for memory allocations */
+      scratch_off = 0;
+      rd_off = 0;
+      for (unsigned int i = 0; i < rd_count; i++)
         {
-          /* unbox SRV/TLSA records if a specific one was requested */
-          if ( (0 != rh->protocol) &&
-               (0 != rh->service) &&
-               (rd[i].data_size >= sizeof (struct GNUNET_GNSRECORD_BoxRecord)) )
-          {
-            const struct GNUNET_GNSRECORD_BoxRecord *box;
+          GNUNET_assert(rd_off <= i);
+          if ((0 != rh->protocol) &&
+              (0 != rh->service) &&
+              (GNUNET_GNSRECORD_TYPE_BOX != rd[i].record_type))
+            continue; /* we _only_ care about boxed records */
+
+          GNUNET_assert(rd_off < rd_count);
+          rd_new[rd_off] = rd[i];
+          /* Check if the embedded name(s) end in "+", and if so,
+             replace the "+" with the zone at "ac_tail", changing the name
+             to a ".ZONEKEY".  The name is allocated on the 'scratch' array,
+             so we can free it afterwards. */
+          switch (rd[i].record_type)
+            {
+            case GNUNET_DNSPARSER_TYPE_CNAME:
+            {
+              char *cname;
+
+              off = 0;
+              cname = GNUNET_DNSPARSER_parse_name(rd[i].data,
+                                                  rd[i].data_size,
+                                                  &off);
+              if ((NULL == cname) ||
+                  (off != rd[i].data_size))
+                {
+                  GNUNET_break_op(0); /* record not well-formed */
+                }
+              else
+                {
+                  cname = translate_dot_plus(rh, cname);
+                  GNUNET_break(NULL != cname);
+                  scratch_start = scratch_off;
+                  if (GNUNET_OK !=
+                      GNUNET_DNSPARSER_builder_add_name(scratch,
+                                                        sizeof(scratch),
+                                                        &scratch_off,
+                                                        cname))
+                    {
+                      GNUNET_break(0);
+                    }
+                  else
+                    {
+                      GNUNET_assert(rd_off < rd_count);
+                      rd_new[rd_off].data = &scratch[scratch_start];
+                      rd_new[rd_off].data_size = scratch_off - scratch_start;
+                      rd_off++;
+                    }
+                }
+              GNUNET_free_non_null(cname);
+            }
+            break;
 
-            box = rd[i].data;
-            if ( (ntohs (box->protocol) == rh->protocol) &&
-                 (ntohs (box->service) == rh->service) )
+            case GNUNET_DNSPARSER_TYPE_SOA:
             {
-              /* Box matches, unbox! */
-              GNUNET_assert (rd_off < rd_count);
-              rd_new[rd_off].record_type = ntohl (box->record_type);
-              rd_new[rd_off].data_size -= sizeof (struct GNUNET_GNSRECORD_BoxRecord);
-              rd_new[rd_off].data = &box[1];
+              struct GNUNET_DNSPARSER_SoaRecord *soa;
+
+              off = 0;
+              soa = GNUNET_DNSPARSER_parse_soa(rd[i].data,
+                                               rd[i].data_size,
+                                               &off);
+              if ((NULL == soa) ||
+                  (off != rd[i].data_size))
+                {
+                  GNUNET_break_op(0); /* record not well-formed */
+                }
+              else
+                {
+                  soa->mname = translate_dot_plus(rh, soa->mname);
+                  soa->rname = translate_dot_plus(rh, soa->rname);
+                  scratch_start = scratch_off;
+                  if (GNUNET_OK !=
+                      GNUNET_DNSPARSER_builder_add_soa(scratch,
+                                                       sizeof(scratch),
+                                                       &scratch_off,
+                                                       soa))
+                    {
+                      GNUNET_break(0);
+                    }
+                  else
+                    {
+                      GNUNET_assert(rd_off < rd_count);
+                      rd_new[rd_off].data = &scratch[scratch_start];
+                      rd_new[rd_off].data_size = scratch_off - scratch_start;
+                      rd_off++;
+                    }
+                }
+              if (NULL != soa)
+                GNUNET_DNSPARSER_free_soa(soa);
+            }
+            break;
+
+            case GNUNET_DNSPARSER_TYPE_MX:
+            {
+              struct GNUNET_DNSPARSER_MxRecord *mx;
+
+              off = 0;
+              mx = GNUNET_DNSPARSER_parse_mx(rd[i].data,
+                                             rd[i].data_size,
+                                             &off);
+              if ((NULL == mx) ||
+                  (off != rd[i].data_size))
+                {
+                  GNUNET_break_op(0); /* record not well-formed */
+                }
+              else
+                {
+                  mx->mxhost = translate_dot_plus(rh, mx->mxhost);
+                  scratch_start = scratch_off;
+                  if (GNUNET_OK !=
+                      GNUNET_DNSPARSER_builder_add_mx(scratch,
+                                                      sizeof(scratch),
+                                                      &scratch_off,
+                                                      mx))
+                    {
+                      GNUNET_break(0);
+                    }
+                  else
+                    {
+                      GNUNET_assert(rd_off < rd_count);
+                      rd_new[rd_off].data = &scratch[scratch_start];
+                      rd_new[rd_off].data_size = scratch_off - scratch_start;
+                      rd_off++;
+                    }
+                }
+              if (NULL != mx)
+                GNUNET_DNSPARSER_free_mx(mx);
+            }
+            break;
+
+            case GNUNET_DNSPARSER_TYPE_SRV:
+            {
+              struct GNUNET_DNSPARSER_SrvRecord *srv;
+
+              off = 0;
+              srv = GNUNET_DNSPARSER_parse_srv(rd[i].data,
+                                               rd[i].data_size,
+                                               &off);
+              if ((NULL == srv) ||
+                  (off != rd[i].data_size))
+                {
+                  GNUNET_break_op(0); /* record not well-formed */
+                }
+              else
+                {
+                  srv->target = translate_dot_plus(rh, srv->target);
+                  scratch_start = scratch_off;
+                  if (GNUNET_OK !=
+                      GNUNET_DNSPARSER_builder_add_srv(scratch,
+                                                       sizeof(scratch),
+                                                       &scratch_off,
+                                                       srv))
+                    {
+                      GNUNET_break(0);
+                    }
+                  else
+                    {
+                      GNUNET_assert(rd_off < rd_count);
+                      rd_new[rd_off].data = &scratch[scratch_start];
+                      rd_new[rd_off].data_size = scratch_off - scratch_start;
+                      rd_off++;
+                    }
+                }
+              if (NULL != srv)
+                GNUNET_DNSPARSER_free_srv(srv);
+            }
+            break;
+
+            case GNUNET_GNSRECORD_TYPE_NICK:
+            {
+              const char *nick;
+
+              nick = rd[i].data;
+              if ((rd[i].data_size > 0) &&
+                  (nick[rd[i].data_size - 1] != '\0'))
+                {
+                  GNUNET_break_op(0);
+                  break;
+                }
+              break;
+            }
+
+            case GNUNET_GNSRECORD_TYPE_PKEY:
+            {
+              struct GNUNET_CRYPTO_EcdsaPublicKey pub;
+
+              if (rd[i].data_size != sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey))
+                {
+                  GNUNET_break_op(0);
+                  break;
+                }
+              GNUNET_memcpy(&pub,
+                            rd[i].data,
+                            rd[i].data_size);
               rd_off++;
+              if (GNUNET_GNSRECORD_TYPE_PKEY != rh->record_type)
+                {
+                  /* try to resolve "@" */
+                  struct AuthorityChain *ac;
+
+                  ac = GNUNET_new(struct AuthorityChain);
+                  ac->rh = rh;
+                  ac->gns_authority = GNUNET_YES;
+                  ac->authority_info.gns_authority = pub;
+                  ac->label = GNUNET_strdup(GNUNET_GNS_EMPTY_LABEL_AT);
+                  GNUNET_CONTAINER_DLL_insert_tail(rh->ac_head,
+                                                   rh->ac_tail,
+                                                   ac);
+                  rh->task_id = GNUNET_SCHEDULER_add_now(&recursive_resolution,
+                                                         rh);
+                  return;
+                }
+            }
+            break;
+
+            case GNUNET_GNSRECORD_TYPE_GNS2DNS:
+            {
+              /* delegation to DNS */
+              if (GNUNET_GNSRECORD_TYPE_GNS2DNS == rh->record_type)
+                {
+                  rd_off++;
+                  break; /* do not follow to DNS, we wanted the GNS2DNS record! */
+                }
+              GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                         "Found GNS2DNS record, delegating to DNS!\n");
+              if (GNUNET_OK ==
+                  recursive_gns2dns_resolution(rh,
+                                               rd_count,
+                                               rd))
+                return;
+              else
+                goto fail;
             }
-          }
-          else
-          {
-            /* no specific protocol/service specified, preserve all BOX
-               records (for modern, GNS-enabled applications) */
-            rd_off++;
-          }
-          break;
-        }
-      default:
-       rd_off++;
-       break;
-      } /* end: switch */
-    } /* end: for rd_count */
-
-    /* yes, we are done, return result */
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Returning GNS response for `%s' with %u answers\n",
-                rh->ac_tail->label,
-                rd_off);
-    rh->proc (rh->proc_cls,
-              rd_off,
-              rd_new);
-    rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                            rh);
-    return;
-  }
+
+            case GNUNET_GNSRECORD_TYPE_BOX:
+            {
+              /* unbox SRV/TLSA records if a specific one was requested */
+              if ((0 != rh->protocol) &&
+                  (0 != rh->service) &&
+                  (rd[i].data_size >= sizeof(struct GNUNET_GNSRECORD_BoxRecord)))
+                {
+                  const struct GNUNET_GNSRECORD_BoxRecord *box;
+
+                  box = rd[i].data;
+                  if ((ntohs(box->protocol) == rh->protocol) &&
+                      (ntohs(box->service) == rh->service))
+                    {
+                      /* Box matches, unbox! */
+                      GNUNET_assert(rd_off < rd_count);
+                      rd_new[rd_off].record_type = ntohl(box->record_type);
+                      rd_new[rd_off].data_size -= sizeof(struct GNUNET_GNSRECORD_BoxRecord);
+                      rd_new[rd_off].data = &box[1];
+                      rd_off++;
+                    }
+                }
+              else
+                {
+                  /* no specific protocol/service specified, preserve all BOX
+                     records (for modern, GNS-enabled applications) */
+                  rd_off++;
+                }
+              break;
+            }
+
+            default:
+              rd_off++;
+              break;
+            } /* end: switch */
+        } /* end: for rd_count */
+
+      /* yes, we are done, return result */
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Returning GNS response for `%s' with %u answers\n",
+                 rh->ac_tail->label,
+                 rd_off);
+      rh->proc(rh->proc_cls,
+               rd_off,
+               rd_new);
+      rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                             rh);
+      return;
+    }
 
   switch (rd[0].record_type)
-  {
-  case GNUNET_DNSPARSER_TYPE_CNAME:
-    GNUNET_break_op (1 == rd_count); /* CNAME should be unique */
-    recursive_cname_resolution (rh,
+    {
+    case GNUNET_DNSPARSER_TYPE_CNAME:
+      GNUNET_break_op(1 == rd_count); /* CNAME should be unique */
+      recursive_cname_resolution(rh,
+                                 &rd[0]);
+      return;
+
+    case GNUNET_GNSRECORD_TYPE_PKEY:
+      GNUNET_break_op(1 == rd_count); /* PKEY should be unique */
+      recursive_pkey_resolution(rh,
                                 &rd[0]);
-    return;
-  case GNUNET_GNSRECORD_TYPE_PKEY:
-    GNUNET_break_op (1 == rd_count); /* PKEY should be unique */
-    recursive_pkey_resolution (rh,
-                               &rd[0]);
-    return;
-  default:
-    if (GNUNET_OK ==
-        recursive_gns2dns_resolution (rh,
-                                      rd_count,
-                                      rd))
       return;
-    break;
-  }
- fail:
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-             _("GNS lookup recursion failed (no delegation record found)\n"));
-  fail_resolution (rh);
+
+    default:
+      if (GNUNET_OK ==
+          recursive_gns2dns_resolution(rh,
+                                       rd_count,
+                                       rd))
+        return;
+      break;
+    }
+fail:
+  GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+             _("GNS lookup recursion failed (no delegation record found)\n"));
+  fail_resolution(rh);
 }
 
 
@@ -2275,21 +2283,21 @@ handle_gns_resolution_result (void *cls,
  * @param emsg error message
  */
 static void
-namecache_cache_continuation (void *cls,
-                             int32_t success,
-                             const char *emsg)
+namecache_cache_continuation(void *cls,
+                             int32_t success,
+                             const char *emsg)
 {
   struct CacheOps *co = cls;
 
   co->namecache_qe_cache = NULL;
   if (GNUNET_OK != success)
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               _("Failed to cache GNS resolution: %s\n"),
-               emsg);
-  GNUNET_CONTAINER_DLL_remove (co_head,
-                              co_tail,
-                              co);
-  GNUNET_free (co);
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+               _("Failed to cache GNS resolution: %s\n"),
+               emsg);
+  GNUNET_CONTAINER_DLL_remove(co_head,
+                              co_tail,
+                              co);
+  GNUNET_free(co);
 }
 
 
@@ -2311,88 +2319,88 @@ namecache_cache_continuation (void *cls,
  * @param data pointer to the result data
  */
 static void
-handle_dht_response (void *cls,
-                    struct GNUNET_TIME_Absolute exp,
-                    const struct GNUNET_HashCode *key,
-                    const struct GNUNET_PeerIdentity *get_path,
-                    unsigned int get_path_length,
-                    const struct GNUNET_PeerIdentity *put_path,
-                    unsigned int put_path_length,
-                    enum GNUNET_BLOCK_Type type,
-                    size_t size,
-                    const void *data)
+handle_dht_response(void *cls,
+                    struct GNUNET_TIME_Absolute exp,
+                    const struct GNUNET_HashCode *key,
+                    const struct GNUNET_PeerIdentity *get_path,
+                    unsigned int get_path_length,
+                    const struct GNUNET_PeerIdentity *put_path,
+                    unsigned int put_path_length,
+                    enum GNUNET_BLOCK_Type type,
+                    size_t size,
+                    const void *data)
 {
   struct GNS_ResolverHandle *rh = cls;
   struct AuthorityChain *ac = rh->ac_tail;
   const struct GNUNET_GNSRECORD_Block *block;
   struct CacheOps *co;
 
-  (void) exp;
-  (void) key;
-  (void) get_path;
-  (void) get_path_length;
-  (void) put_path;
-  (void) put_path_length;
-  (void) type;
-  GNUNET_DHT_get_stop (rh->get_handle);
+  (void)exp;
+  (void)key;
+  (void)get_path;
+  (void)get_path_length;
+  (void)put_path;
+  (void)put_path_length;
+  (void)type;
+  GNUNET_DHT_get_stop(rh->get_handle);
   rh->get_handle = NULL;
-  GNUNET_CONTAINER_heap_remove_node (rh->dht_heap_node);
+  GNUNET_CONTAINER_heap_remove_node(rh->dht_heap_node);
   rh->dht_heap_node = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Handling response from the DHT\n");
-  if (size < sizeof (struct GNUNET_GNSRECORD_Block))
-  {
-    /* how did this pass DHT block validation!? */
-    GNUNET_break (0);
-    fail_resolution (rh);
-    return;
-  }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Handling response from the DHT\n");
+  if (size < sizeof(struct GNUNET_GNSRECORD_Block))
+    {
+      /* how did this pass DHT block validation!? */
+      GNUNET_break(0);
+      fail_resolution(rh);
+      return;
+    }
   block = data;
   if (size !=
-      ntohl (block->purpose.size) +
-      sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
-      sizeof (struct GNUNET_CRYPTO_EcdsaSignature))
-  {
-    /* how did this pass DHT block validation!? */
-    GNUNET_break (0);
-    fail_resolution (rh);
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Decrypting DHT block of size %u for `%s', expires %s\n",
-             ntohl (block->purpose.size),
-             rh->name,
-             GNUNET_STRINGS_absolute_time_to_string (exp));
+      ntohl(block->purpose.size) +
+      sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey) +
+      sizeof(struct GNUNET_CRYPTO_EcdsaSignature))
+    {
+      /* how did this pass DHT block validation!? */
+      GNUNET_break(0);
+      fail_resolution(rh);
+      return;
+    }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Decrypting DHT block of size %u for `%s', expires %s\n",
+             ntohl(block->purpose.size),
+             rh->name,
+             GNUNET_STRINGS_absolute_time_to_string(exp));
   if (GNUNET_OK !=
-      GNUNET_GNSRECORD_block_decrypt (block,
-                                     &ac->authority_info.gns_authority,
-                                     ac->label,
-                                     &handle_gns_resolution_result,
-                                     rh))
-  {
-    GNUNET_break_op (0); /* block was ill-formed */
-    fail_resolution (rh);
-    return;
-  }
-  if (0 == GNUNET_TIME_absolute_get_remaining (GNUNET_TIME_absolute_ntoh (block->expiration_time)).rel_value_us)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Received expired block from the DHT, will not cache it.\n");
-    return;
-  }
+      GNUNET_GNSRECORD_block_decrypt(block,
+                                     &ac->authority_info.gns_authority,
+                                     ac->label,
+                                     &handle_gns_resolution_result,
+                                     rh))
+    {
+      GNUNET_break_op(0); /* block was ill-formed */
+      fail_resolution(rh);
+      return;
+    }
+  if (0 == GNUNET_TIME_absolute_get_remaining(GNUNET_TIME_absolute_ntoh(block->expiration_time)).rel_value_us)
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Received expired block from the DHT, will not cache it.\n");
+      return;
+    }
   if (GNUNET_YES == disable_cache)
     return;
   /* Cache well-formed blocks */
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Caching response from the DHT in namecache\n");
-  co = GNUNET_new (struct CacheOps);
-  co->namecache_qe_cache = GNUNET_NAMECACHE_block_cache (namecache_handle,
-                                                        block,
-                                                        &namecache_cache_continuation,
-                                                        co);
-  GNUNET_CONTAINER_DLL_insert (co_head,
-                              co_tail,
-                              co);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Caching response from the DHT in namecache\n");
+  co = GNUNET_new(struct CacheOps);
+  co->namecache_qe_cache = GNUNET_NAMECACHE_block_cache(namecache_handle,
+                                                        block,
+                                                        &namecache_cache_continuation,
+                                                        co);
+  GNUNET_CONTAINER_DLL_insert(co_head,
+                              co_tail,
+                              co);
 }
 
 
@@ -2403,30 +2411,30 @@ handle_dht_response (void *cls,
  * @param query key to use in the DHT lookup
  */
 static void
-start_dht_request (struct GNS_ResolverHandle *rh,
-                   const struct GNUNET_HashCode *query)
+start_dht_request(struct GNS_ResolverHandle *rh,
+                  const struct GNUNET_HashCode *query)
 {
   struct GNS_ResolverHandle *rx;
 
-  GNUNET_assert (NULL == rh->get_handle);
-  rh->get_handle = GNUNET_DHT_get_start (dht_handle,
-                                         GNUNET_BLOCK_TYPE_GNS_NAMERECORD,
-                                         query,
-                                         DHT_GNS_REPLICATION_LEVEL,
-                                         GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
-                                         NULL, 0,
-                                         &handle_dht_response, rh);
-  rh->dht_heap_node = GNUNET_CONTAINER_heap_insert (dht_lookup_heap,
-                                                    rh,
-                                                    GNUNET_TIME_absolute_get ().abs_value_us);
-  if (GNUNET_CONTAINER_heap_get_size (dht_lookup_heap) > max_allowed_background_queries)
-  {
-    /* fail longest-standing DHT request */
-    rx = GNUNET_CONTAINER_heap_remove_root (dht_lookup_heap);
-    rx->dht_heap_node = NULL;
-    GNUNET_assert (NULL != rx);
-    fail_resolution (rx);
-  }
+  GNUNET_assert(NULL == rh->get_handle);
+  rh->get_handle = GNUNET_DHT_get_start(dht_handle,
+                                        GNUNET_BLOCK_TYPE_GNS_NAMERECORD,
+                                        query,
+                                        DHT_GNS_REPLICATION_LEVEL,
+                                        GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                                        NULL, 0,
+                                        &handle_dht_response, rh);
+  rh->dht_heap_node = GNUNET_CONTAINER_heap_insert(dht_lookup_heap,
+                                                   rh,
+                                                   GNUNET_TIME_absolute_get().abs_value_us);
+  if (GNUNET_CONTAINER_heap_get_size(dht_lookup_heap) > max_allowed_background_queries)
+    {
+      /* fail longest-standing DHT request */
+      rx = GNUNET_CONTAINER_heap_remove_root(dht_lookup_heap);
+      rx->dht_heap_node = NULL;
+      GNUNET_assert(NULL != rx);
+      fail_resolution(rx);
+    }
 }
 
 
@@ -2439,19 +2447,19 @@ start_dht_request (struct GNS_ResolverHandle *rh,
  * @param rd array of records with data to store
  */
 static void
-handle_gns_namecache_resolution_result (void *cls,
-                                        unsigned int rd_count,
-                                        const struct GNUNET_GNSRECORD_Data *rd)
+handle_gns_namecache_resolution_result(void *cls,
+                                       unsigned int rd_count,
+                                       const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct GNS_ResolverHandle *rh = cls;
 
   if (0 == rd_count)
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               _("GNS namecache returned empty result for `%s'\n"),
-               rh->name);
-  handle_gns_resolution_result (rh,
-                                rd_count,
-                                rd);
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+               _("GNS namecache returned empty result for `%s'\n"),
+               rh->name);
+  handle_gns_resolution_result(rh,
+                               rd_count,
+                               rd);
 }
 
 
@@ -2462,8 +2470,8 @@ handle_gns_namecache_resolution_result (void *cls,
  * @param block block that was stored in the namecache
  */
 static void
-handle_namecache_block_response (void *cls,
-                                const struct GNUNET_GNSRECORD_Block *block)
+handle_namecache_block_response(void *cls,
+                                const struct GNUNET_GNSRECORD_Block *block)
 {
   struct GNS_ResolverHandle *rh = cls;
   struct AuthorityChain *ac = rh->ac_tail;
@@ -2471,62 +2479,62 @@ handle_namecache_block_response (void *cls,
   const struct GNUNET_CRYPTO_EcdsaPublicKey *auth = &ac->authority_info.gns_authority;
   struct GNUNET_HashCode query;
 
-  GNUNET_assert (NULL != rh->namecache_qe);
+  GNUNET_assert(NULL != rh->namecache_qe);
   rh->namecache_qe = NULL;
-  if ( ( (GNUNET_GNS_LO_DEFAULT == rh->options) ||
-        ( (GNUNET_GNS_LO_LOCAL_MASTER == rh->options) &&
-          (ac != rh->ac_head) ) ) &&
-       ( (NULL == block) ||
-        (0 == GNUNET_TIME_absolute_get_remaining (GNUNET_TIME_absolute_ntoh (block->expiration_time)).rel_value_us) ) )
-  {
-    /* namecache knows nothing; try DHT lookup */
-    GNUNET_GNSRECORD_query_from_public_key (auth,
-                                            label,
-                                            &query);
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Starting DHT lookup for `%s' in zone `%s' under key `%s'\n",
-                ac->label,
-                GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority),
-                GNUNET_h2s (&query));
-    start_dht_request (rh, &query);
-    return;
-  }
+  if (((GNUNET_GNS_LO_DEFAULT == rh->options) ||
+       ((GNUNET_GNS_LO_LOCAL_MASTER == rh->options) &&
+        (ac != rh->ac_head))) &&
+      ((NULL == block) ||
+       (0 == GNUNET_TIME_absolute_get_remaining(GNUNET_TIME_absolute_ntoh(block->expiration_time)).rel_value_us)))
+    {
+      /* namecache knows nothing; try DHT lookup */
+      GNUNET_GNSRECORD_query_from_public_key(auth,
+                                             label,
+                                             &query);
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Starting DHT lookup for `%s' in zone `%s' under key `%s'\n",
+                 ac->label,
+                 GNUNET_GNSRECORD_z2s(&ac->authority_info.gns_authority),
+                 GNUNET_h2s(&query));
+      start_dht_request(rh, &query);
+      return;
+    }
 
-  if ( (NULL == block) ||
-       (0 == GNUNET_TIME_absolute_get_remaining (GNUNET_TIME_absolute_ntoh (block->expiration_time)).rel_value_us) )
-  {
-    /* DHT not permitted and no local result, fail */
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Resolution failed for `%s' in zone %s (DHT lookup not permitted by configuration)\n",
-               ac->label,
-               GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority));
-    fail_resolution (rh);
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Received result from namecache for label `%s'\n",
-              ac->label);
+  if ((NULL == block) ||
+      (0 == GNUNET_TIME_absolute_get_remaining(GNUNET_TIME_absolute_ntoh(block->expiration_time)).rel_value_us))
+    {
+      /* DHT not permitted and no local result, fail */
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Resolution failed for `%s' in zone %s (DHT lookup not permitted by configuration)\n",
+                 ac->label,
+                 GNUNET_GNSRECORD_z2s(&ac->authority_info.gns_authority));
+      fail_resolution(rh);
+      return;
+    }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Received result from namecache for label `%s'\n",
+             ac->label);
 
   if (GNUNET_OK !=
-      GNUNET_GNSRECORD_block_decrypt (block,
-                                     auth,
-                                     label,
-                                     &handle_gns_namecache_resolution_result,
-                                     rh))
-  {
-    GNUNET_break_op (0); /* block was ill-formed */
-    /* try DHT instead */
-    GNUNET_GNSRECORD_query_from_public_key (auth,
-                                            label,
-                                            &query);
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Starting DHT lookup for `%s' in zone `%s' under key `%s'\n",
-                ac->label,
-                GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority),
-                GNUNET_h2s (&query));
-    start_dht_request (rh, &query);
-    return;
-  }
+      GNUNET_GNSRECORD_block_decrypt(block,
+                                     auth,
+                                     label,
+                                     &handle_gns_namecache_resolution_result,
+                                     rh))
+    {
+      GNUNET_break_op(0); /* block was ill-formed */
+      /* try DHT instead */
+      GNUNET_GNSRECORD_query_from_public_key(auth,
+                                             label,
+                                             &query);
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Starting DHT lookup for `%s' in zone `%s' under key `%s'\n",
+                 ac->label,
+                 GNUNET_GNSRECORD_z2s(&ac->authority_info.gns_authority),
+                 GNUNET_h2s(&query));
+      start_dht_request(rh, &query);
+      return;
+    }
 }
 
 
@@ -2536,32 +2544,32 @@ handle_namecache_block_response (void *cls,
  * @param rh query we are processing
  */
 static void
-recursive_gns_resolution_namecache (struct GNS_ResolverHandle *rh)
+recursive_gns_resolution_namecache(struct GNS_ResolverHandle *rh)
 {
   struct AuthorityChain *ac = rh->ac_tail;
   struct GNUNET_HashCode query;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Starting GNS resolution for `%s' in zone %s\n",
-             ac->label,
-             GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority));
-  GNUNET_GNSRECORD_query_from_public_key (&ac->authority_info.gns_authority,
-                                         ac->label,
-                                         &query);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Starting GNS resolution for `%s' in zone %s\n",
+             ac->label,
+             GNUNET_GNSRECORD_z2s(&ac->authority_info.gns_authority));
+  GNUNET_GNSRECORD_query_from_public_key(&ac->authority_info.gns_authority,
+                                         ac->label,
+                                         &query);
   if (GNUNET_YES != disable_cache)
-  {
-    rh->namecache_qe
-      = GNUNET_NAMECACHE_lookup_block (namecache_handle,
-                                       &query,
-                                       &handle_namecache_block_response,
-                                       rh);
-    GNUNET_assert (NULL != rh->namecache_qe);
-  }
+    {
+      rh->namecache_qe
+        = GNUNET_NAMECACHE_lookup_block(namecache_handle,
+                                        &query,
+                                        &handle_namecache_block_response,
+                                        rh);
+      GNUNET_assert(NULL != rh->namecache_qe);
+    }
   else
-  {
-    start_dht_request (rh,
-                      &query);
-  }
+    {
+      start_dht_request(rh,
+                        &query);
+    }
 }
 
 
@@ -2572,22 +2580,22 @@ recursive_gns_resolution_namecache (struct GNS_ResolverHandle *rh)
  * @param is_valid #GNUNET_YES if the zone was not yet revoked
  */
 static void
-handle_revocation_result (void *cls,
-                          int is_valid)
+handle_revocation_result(void *cls,
+                         int is_valid)
 {
   struct GNS_ResolverHandle *rh = cls;
   struct AuthorityChain *ac = rh->ac_tail;
 
   rh->rev_check = NULL;
   if (GNUNET_YES != is_valid)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                _("Zone %s was revoked, resolution fails\n"),
-                GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority));
-    fail_resolution (rh);
-    return;
-  }
-  recursive_gns_resolution_namecache (rh);
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                 _("Zone %s was revoked, resolution fails\n"),
+                 GNUNET_GNSRECORD_z2s(&ac->authority_info.gns_authority));
+      fail_resolution(rh);
+      return;
+    }
+  recursive_gns_resolution_namecache(rh);
 }
 
 
@@ -2597,18 +2605,18 @@ handle_revocation_result (void *cls,
  * @param rh query we are processing
  */
 static void
-recursive_gns_resolution_revocation (struct GNS_ResolverHandle *rh)
+recursive_gns_resolution_revocation(struct GNS_ResolverHandle *rh)
 {
   struct AuthorityChain *ac = rh->ac_tail;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Starting revocation check for zone %s\n",
-             GNUNET_GNSRECORD_z2s (&ac->authority_info.gns_authority));
-  rh->rev_check = GNUNET_REVOCATION_query (cfg,
-                                           &ac->authority_info.gns_authority,
-                                           &handle_revocation_result,
-                                           rh);
-  GNUNET_assert (NULL != rh->rev_check);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Starting revocation check for zone %s\n",
+             GNUNET_GNSRECORD_z2s(&ac->authority_info.gns_authority));
+  rh->rev_check = GNUNET_REVOCATION_query(cfg,
+                                          &ac->authority_info.gns_authority,
+                                          &handle_revocation_result,
+                                          rh);
+  GNUNET_assert(NULL != rh->rev_check);
 }
 
 
@@ -2618,23 +2626,23 @@ recursive_gns_resolution_revocation (struct GNS_ResolverHandle *rh)
  * @param cls the `struct GNS_ResolverHandle` of the resolution
  */
 static void
-recursive_resolution (void *cls)
+recursive_resolution(void *cls)
 {
   struct GNS_ResolverHandle *rh = cls;
 
   rh->task_id = NULL;
   if (MAX_RECURSION < rh->loop_limiter++)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               "Encountered unbounded recursion resolving `%s'\n",
-               rh->name);
-    fail_resolution (rh);
-    return;
-  }
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+                 "Encountered unbounded recursion resolving `%s'\n",
+                 rh->name);
+      fail_resolution(rh);
+      return;
+    }
   if (GNUNET_YES == rh->ac_tail->gns_authority)
-    recursive_gns_resolution_revocation (rh);
+    recursive_gns_resolution_revocation(rh);
   else
-    recursive_dns_resolution (rh);
+    recursive_dns_resolution(rh);
 }
 
 
@@ -2645,7 +2653,7 @@ recursive_resolution (void *cls)
  * @param cls the `struct GNS_ResolverHandle`
  */
 static void
-start_resolver_lookup (void *cls)
+start_resolver_lookup(void *cls)
 {
   struct GNS_ResolverHandle *rh = cls;
   struct AuthorityChain *ac;
@@ -2653,61 +2661,61 @@ start_resolver_lookup (void *cls)
   struct in6_addr v6;
 
   rh->task_id = NULL;
-  if (1 == inet_pton (AF_INET,
-                      rh->name,
-                      &v4))
-  {
-    /* name is IPv4 address, pretend it's an A record */
-    struct GNUNET_GNSRECORD_Data rd;
-
-    rd.data = &v4;
-    rd.data_size = sizeof (v4);
-    rd.expiration_time = UINT64_MAX;
-    rd.record_type = GNUNET_DNSPARSER_TYPE_A;
-    rd.flags = 0;
-    rh->proc (rh->proc_cls,
-              1,
-              &rd);
-    GNUNET_assert (NULL == rh->task_id);
-    rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                            rh);
-    return;
-  }
-  if (1 == inet_pton (AF_INET6,
-                      rh->name,
-                      &v6))
-  {
-    /* name is IPv6 address, pretend it's an AAAA record */
-    struct GNUNET_GNSRECORD_Data rd;
-
-    rd.data = &v6;
-    rd.data_size = sizeof (v6);
-    rd.expiration_time = UINT64_MAX;
-    rd.record_type = GNUNET_DNSPARSER_TYPE_AAAA;
-    rd.flags = 0;
-    rh->proc (rh->proc_cls,
-              1,
-              &rd);
-    GNUNET_assert (NULL == rh->task_id);
-    rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                            rh);
-    return;
-  }
+  if (1 == inet_pton(AF_INET,
+                     rh->name,
+                     &v4))
+    {
+      /* name is IPv4 address, pretend it's an A record */
+      struct GNUNET_GNSRECORD_Data rd;
+
+      rd.data = &v4;
+      rd.data_size = sizeof(v4);
+      rd.expiration_time = UINT64_MAX;
+      rd.record_type = GNUNET_DNSPARSER_TYPE_A;
+      rd.flags = 0;
+      rh->proc(rh->proc_cls,
+               1,
+               &rd);
+      GNUNET_assert(NULL == rh->task_id);
+      rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                             rh);
+      return;
+    }
+  if (1 == inet_pton(AF_INET6,
+                     rh->name,
+                     &v6))
+    {
+      /* name is IPv6 address, pretend it's an AAAA record */
+      struct GNUNET_GNSRECORD_Data rd;
+
+      rd.data = &v6;
+      rd.data_size = sizeof(v6);
+      rd.expiration_time = UINT64_MAX;
+      rd.record_type = GNUNET_DNSPARSER_TYPE_AAAA;
+      rd.flags = 0;
+      rh->proc(rh->proc_cls,
+               1,
+               &rd);
+      GNUNET_assert(NULL == rh->task_id);
+      rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                             rh);
+      return;
+    }
 
-  ac = GNUNET_new (struct AuthorityChain);
+  ac = GNUNET_new(struct AuthorityChain);
   ac->rh = rh;
-  ac->label = resolver_lookup_get_next_label (rh);
+  ac->label = resolver_lookup_get_next_label(rh);
   if (NULL == ac->label)
     /* name was just the "TLD", so we default to label
-       #GNUNET_GNS_EMPTY_LABEL_AT */
-    ac->label = GNUNET_strdup (GNUNET_GNS_EMPTY_LABEL_AT);
+     #GNUNET_GNS_EMPTY_LABEL_AT */
+    ac->label = GNUNET_strdup(GNUNET_GNS_EMPTY_LABEL_AT);
   ac->gns_authority = GNUNET_YES;
   ac->authority_info.gns_authority = rh->authority_zone;
-  GNUNET_CONTAINER_DLL_insert_tail (rh->ac_head,
-                                   rh->ac_tail,
-                                   ac);
-  rh->task_id = GNUNET_SCHEDULER_add_now (&recursive_resolution,
-                                         rh);
+  GNUNET_CONTAINER_DLL_insert_tail(rh->ac_head,
+                                   rh->ac_tail,
+                                   ac);
+  rh->task_id = GNUNET_SCHEDULER_add_now(&recursive_resolution,
+                                         rh);
 }
 
 
@@ -2724,31 +2732,31 @@ start_resolver_lookup (void *cls)
  * @return handle to cancel operation
  */
 struct GNS_ResolverHandle *
-GNS_resolver_lookup (const struct GNUNET_CRYPTO_EcdsaPublicKey *zone,
-                    uint32_t record_type,
-                    const char *name,
-                    enum GNUNET_GNS_LocalOptions options,
-                    GNS_ResultProcessor proc,
-                    void *proc_cls)
+GNS_resolver_lookup(const struct GNUNET_CRYPTO_EcdsaPublicKey *zone,
+                    uint32_t record_type,
+                    const char *name,
+                    enum GNUNET_GNS_LocalOptions options,
+                    GNS_ResultProcessor proc,
+                    void *proc_cls)
 {
   struct GNS_ResolverHandle *rh;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Starting lookup for `%s'\n",
-             name);
-  rh = GNUNET_new (struct GNS_ResolverHandle);
-  GNUNET_CONTAINER_DLL_insert (rlh_head,
-                              rlh_tail,
-                              rh);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+             "Starting lookup for `%s'\n",
+             name);
+  rh = GNUNET_new(struct GNS_ResolverHandle);
+  GNUNET_CONTAINER_DLL_insert(rlh_head,
+                              rlh_tail,
+                              rh);
   rh->authority_zone = *zone;
   rh->proc = proc;
   rh->proc_cls = proc_cls;
   rh->options = options;
   rh->record_type = record_type;
-  rh->name = GNUNET_strdup (name);
-  rh->name_resolution_pos = strlen (name);
-  rh->task_id = GNUNET_SCHEDULER_add_now (&start_resolver_lookup,
-                                         rh);
+  rh->name = GNUNET_strdup(name);
+  rh->name_resolution_pos = strlen(name);
+  rh->task_id = GNUNET_SCHEDULER_add_now(&start_resolver_lookup,
+                                         rh);
   return rh;
 }
 
@@ -2759,107 +2767,107 @@ GNS_resolver_lookup (const struct GNUNET_CRYPTO_EcdsaPublicKey *zone,
  * @param rh resolution to abort
  */
 void
-GNS_resolver_lookup_cancel (struct GNS_ResolverHandle *rh)
+GNS_resolver_lookup_cancel(struct GNS_ResolverHandle *rh)
 {
   struct DnsResult *dr;
   struct AuthorityChain *ac;
   struct VpnContext *vpn_ctx;
 
-  GNUNET_CONTAINER_DLL_remove (rlh_head,
-                              rlh_tail,
-                              rh);
+  GNUNET_CONTAINER_DLL_remove(rlh_head,
+                              rlh_tail,
+                              rh);
   if (NULL != rh->dns_request)
-  {
-    GNUNET_DNSSTUB_resolve_cancel (rh->dns_request);
-    rh->dns_request = NULL;
-  }
+    {
+      GNUNET_DNSSTUB_resolve_cancel(rh->dns_request);
+      rh->dns_request = NULL;
+    }
   while (NULL != (ac = rh->ac_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (rh->ac_head,
-                                rh->ac_tail,
-                                ac);
-    if (GNUNET_NO == ac->gns_authority)
     {
-      struct Gns2DnsPending *gp;
-
-      while (NULL != (gp = ac->authority_info.dns_authority.gp_head))
-      {
-        GNUNET_CONTAINER_DLL_remove (ac->authority_info.dns_authority.gp_head,
-                                     ac->authority_info.dns_authority.gp_tail,
-                                     gp);
-        if (NULL != gp->rh)
+      GNUNET_CONTAINER_DLL_remove(rh->ac_head,
+                                  rh->ac_tail,
+                                  ac);
+      if (GNUNET_NO == ac->gns_authority)
         {
-          /* rh->g2dc->rh is NOT in the DLL yet, so to enable us
-             using GNS_resolver_lookup_cancel here, we need to
-             add it first... */
-          GNUNET_CONTAINER_DLL_insert (rlh_head,
-                                       rlh_tail,
-                                       gp->rh);
-          GNUNET_assert (NULL == gp->rh->task_id);
-          gp->rh->task_id = GNUNET_SCHEDULER_add_now (&GNS_resolver_lookup_cancel_,
-                                                      gp->rh);
-          gp->rh = NULL;
-        }
-        if (NULL != gp->dns_rh)
-        {
-          GNUNET_RESOLVER_request_cancel (gp->dns_rh);
-          gp->dns_rh = NULL;
+          struct Gns2DnsPending *gp;
+
+          while (NULL != (gp = ac->authority_info.dns_authority.gp_head))
+            {
+              GNUNET_CONTAINER_DLL_remove(ac->authority_info.dns_authority.gp_head,
+                                          ac->authority_info.dns_authority.gp_tail,
+                                          gp);
+              if (NULL != gp->rh)
+                {
+                  /* rh->g2dc->rh is NOT in the DLL yet, so to enable us
+                     using GNS_resolver_lookup_cancel here, we need to
+                     add it first... */
+                  GNUNET_CONTAINER_DLL_insert(rlh_head,
+                                              rlh_tail,
+                                              gp->rh);
+                  GNUNET_assert(NULL == gp->rh->task_id);
+                  gp->rh->task_id = GNUNET_SCHEDULER_add_now(&GNS_resolver_lookup_cancel_,
+                                                             gp->rh);
+                  gp->rh = NULL;
+                }
+              if (NULL != gp->dns_rh)
+                {
+                  GNUNET_RESOLVER_request_cancel(gp->dns_rh);
+                  gp->dns_rh = NULL;
+                }
+              GNUNET_free(gp);
+            }
+          GNUNET_DNSSTUB_stop(ac->authority_info.dns_authority.dns_handle);
         }
-        GNUNET_free (gp);
-      }
-      GNUNET_DNSSTUB_stop (ac->authority_info.dns_authority.dns_handle);
+      GNUNET_free(ac->label);
+      GNUNET_free(ac);
     }
-    GNUNET_free (ac->label);
-    GNUNET_free (ac);
-  }
   if (NULL != rh->task_id)
-  {
-    GNUNET_SCHEDULER_cancel (rh->task_id);
-    rh->task_id = NULL;
-  }
+    {
+      GNUNET_SCHEDULER_cancel(rh->task_id);
+      rh->task_id = NULL;
+    }
   if (NULL != rh->get_handle)
-  {
-    GNUNET_DHT_get_stop (rh->get_handle);
-    rh->get_handle = NULL;
-  }
+    {
+      GNUNET_DHT_get_stop(rh->get_handle);
+      rh->get_handle = NULL;
+    }
   if (NULL != rh->dht_heap_node)
-  {
-    GNUNET_CONTAINER_heap_remove_node (rh->dht_heap_node);
-    rh->dht_heap_node = NULL;
-  }
+    {
+      GNUNET_CONTAINER_heap_remove_node(rh->dht_heap_node);
+      rh->dht_heap_node = NULL;
+    }
   if (NULL != (vpn_ctx = rh->vpn_ctx))
-  {
-    GNUNET_VPN_cancel_request (vpn_ctx->vpn_request);
-    GNUNET_free (vpn_ctx->rd_data);
-    GNUNET_free (vpn_ctx);
-  }
+    {
+      GNUNET_VPN_cancel_request(vpn_ctx->vpn_request);
+      GNUNET_free(vpn_ctx->rd_data);
+      GNUNET_free(vpn_ctx);
+    }
   if (NULL != rh->namecache_qe)
-  {
-    GNUNET_NAMECACHE_cancel (rh->namecache_qe);
-    rh->namecache_qe = NULL;
-  }
+    {
+      GNUNET_NAMECACHE_cancel(rh->namecache_qe);
+      rh->namecache_qe = NULL;
+    }
   if (NULL != rh->rev_check)
-  {
-    GNUNET_REVOCATION_query_cancel (rh->rev_check);
-    rh->rev_check = NULL;
-  }
+    {
+      GNUNET_REVOCATION_query_cancel(rh->rev_check);
+      rh->rev_check = NULL;
+    }
   if (NULL != rh->std_resolve)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Canceling standard DNS resolution\n");
-    GNUNET_RESOLVER_request_cancel (rh->std_resolve);
-    rh->std_resolve = NULL;
-  }
+    {
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+                 "Canceling standard DNS resolution\n");
+      GNUNET_RESOLVER_request_cancel(rh->std_resolve);
+      rh->std_resolve = NULL;
+    }
   while (NULL != (dr = rh->dns_result_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (rh->dns_result_head,
-                                rh->dns_result_tail,
-                                dr);
-    GNUNET_free (dr);
-  }
-  GNUNET_free_non_null (rh->leho);
-  GNUNET_free (rh->name);
-  GNUNET_free (rh);
+    {
+      GNUNET_CONTAINER_DLL_remove(rh->dns_result_head,
+                                  rh->dns_result_tail,
+                                  dr);
+      GNUNET_free(dr);
+    }
+  GNUNET_free_non_null(rh->leho);
+  GNUNET_free(rh->name);
+  GNUNET_free(rh);
 }
 
 
@@ -2875,24 +2883,24 @@ GNS_resolver_lookup_cancel (struct GNS_ResolverHandle *rh)
  * @param max_bg_queries maximum number of parallel background queries in dht
  */
 void
-GNS_resolver_init (struct GNUNET_NAMECACHE_Handle *nc,
-                  struct GNUNET_DHT_Handle *dht,
-                  const struct GNUNET_CONFIGURATION_Handle *c,
-                  unsigned long long max_bg_queries)
+GNS_resolver_init(struct GNUNET_NAMECACHE_Handle *nc,
+                  struct GNUNET_DHT_Handle *dht,
+                  const struct GNUNET_CONFIGURATION_Handle *c,
+                  unsigned long long max_bg_queries)
 {
   cfg = c;
   namecache_handle = nc;
   dht_handle = dht;
   dht_lookup_heap =
-    GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
+    GNUNET_CONTAINER_heap_create(GNUNET_CONTAINER_HEAP_ORDER_MIN);
   max_allowed_background_queries = max_bg_queries;
-  disable_cache = GNUNET_CONFIGURATION_get_value_yesno (cfg,
-                                                       "namecache",
-                                                       "DISABLE");
+  disable_cache = GNUNET_CONFIGURATION_get_value_yesno(cfg,
+                                                       "namecache",
+                                                       "DISABLE");
   if (GNUNET_YES == disable_cache)
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "Namecache disabled\n");
-  vpn_handle = GNUNET_VPN_connect (cfg);
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+               "Namecache disabled\n");
+  vpn_handle = GNUNET_VPN_connect(cfg);
 }
 
 
@@ -2900,30 +2908,30 @@ GNS_resolver_init (struct GNUNET_NAMECACHE_Handle *nc,
  * Shutdown resolver
  */
 void
-GNS_resolver_done ()
+GNS_resolver_done()
 {
   struct GNS_ResolverHandle *rh;
   struct CacheOps *co;
 
   /* abort active resolutions */
   while (NULL != (rh = rlh_head))
-  {
-    rh->proc (rh->proc_cls,
-              0,
-              NULL);
-    GNS_resolver_lookup_cancel (rh);
-  }
+    {
+      rh->proc(rh->proc_cls,
+               0,
+               NULL);
+      GNS_resolver_lookup_cancel(rh);
+    }
   while (NULL != (co = co_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (co_head,
-                                co_tail,
-                                co);
-    GNUNET_NAMECACHE_cancel (co->namecache_qe_cache);
-    GNUNET_free (co);
-  }
-  GNUNET_CONTAINER_heap_destroy (dht_lookup_heap);
+    {
+      GNUNET_CONTAINER_DLL_remove(co_head,
+                                  co_tail,
+                                  co);
+      GNUNET_NAMECACHE_cancel(co->namecache_qe_cache);
+      GNUNET_free(co);
+    }
+  GNUNET_CONTAINER_heap_destroy(dht_lookup_heap);
   dht_lookup_heap = NULL;
-  GNUNET_VPN_disconnect (vpn_handle);
+  GNUNET_VPN_disconnect(vpn_handle);
   vpn_handle = NULL;
   dht_handle = NULL;
   namecache_handle = NULL;