From: Philipp Tölke Date: Tue, 18 Oct 2011 18:41:16 +0000 (+0000) Subject: send queries as both A and AAAA X-Git-Tag: initial-import-from-subversion-38251~16415 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e7d61b1a418b271876e82a3693332559339e6189;p=oweals%2Fgnunet.git send queries as both A and AAAA --- diff --git a/src/vpn/gnunet-service-dns.c b/src/vpn/gnunet-service-dns.c index e0692937b..49e774dc2 100644 --- a/src/vpn/gnunet-service-dns.c +++ b/src/vpn/gnunet-service-dns.c @@ -917,6 +917,32 @@ receive_query (void *cls cls_->hdr.size - sizeof (struct GNUNET_MessageHeader)); GNUNET_SCHEDULER_add_now (send_mesh_query, cls_); + if (pdns->s.qdcount == 1) + { + if (pdns->queries[0]->qtype == 1) + pdns->queries[0]->qtype = 28; + else if (pdns->queries[0]->qtype == 28) + pdns->queries[0]->qtype = 1; + else + goto outfree; + struct dns_pkt *rdns = unparse_dns_packet (pdns); + size_t size = + sizeof (struct GNUNET_MESH_Tunnel *) + + sizeof (struct GNUNET_MessageHeader) + (ntohs (message->size) - + sizeof (struct query_packet) + + 1); + struct tunnel_cls *cls_ = GNUNET_malloc (size); + + cls_->hdr.size = size - sizeof (struct GNUNET_MESH_Tunnel *); + + cls_->hdr.type = ntohs (GNUNET_MESSAGE_TYPE_VPN_REMOTE_QUERY_DNS); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "size: %d\n", size); + + memcpy (&cls_->dns, rdns, + cls_->hdr.size - sizeof (struct GNUNET_MessageHeader)); + GNUNET_SCHEDULER_add_now (send_mesh_query, cls_); + } + goto outfree; }