From a5eca485466421a58547811362961eb91f1ca20a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Philipp=20T=C3=B6lke?= Date: Wed, 26 Oct 2011 12:30:41 +0000 Subject: [PATCH] *really* do A/AAAA --- src/vpn/gnunet-service-dns.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/vpn/gnunet-service-dns.c b/src/vpn/gnunet-service-dns.c index 700940904..7e649d88b 100644 --- a/src/vpn/gnunet-service-dns.c +++ b/src/vpn/gnunet-service-dns.c @@ -97,6 +97,7 @@ static struct uint16_t local_port; char *name; uint8_t namelen; + uint16_t qtype; } query_states[UINT16_MAX+1]; /** @@ -529,14 +530,14 @@ receive_mesh_answer (void *cls (struct dns_record_line *) (dpkt->data + (query_states[dns->s.id].namelen) + sizeof (struct dns_query_line) + 2); - if (16 == answer->pkt.addrsize) + if (ntohs(28) == query_states[dns->s.id].qtype) { answer->pkt.subtype = GNUNET_DNS_ANSWER_TYPE_REMOTE_AAAA; dque->type = htons (28); /* AAAA */ drec_data->type = htons (28); /* AAAA */ drec_data->data_len = htons (16); } - else if (4 == answer->pkt.addrsize) + if (ntohs(1) == query_states[dns->s.id].qtype) { answer->pkt.subtype = GNUNET_DNS_ANSWER_TYPE_REMOTE_A; dque->type = htons (1); /* A */ @@ -819,6 +820,17 @@ receive_query (void *cls memcpy (query_states[dns->s.id].name, dns->data, query_states[dns->s.id].namelen); + int i; + for (i= 0; i < pdns->s.qdcount; i++) + { + if (pdns->queries[i]->qtype == htons(28) || + pdns->queries[i]->qtype == htons(28)) + { + query_states[dns->s.id].qtype = pdns->queries[i]->qtype; + break; + } + } + /* The query is for a .gnunet-address */ if (pdns->queries[0]->namelen > 9 && 0 == strncmp (pdns->queries[0]->name + (pdns->queries[0]->namelen - 9), -- 2.25.1