aboutsummaryrefslogtreecommitdiff
path: root/src/vpn
diff options
context:
space:
mode:
authorPhilipp Tölke <toelke@in.tum.de>2011-10-26 12:42:24 +0000
committerPhilipp Tölke <toelke@in.tum.de>2011-10-26 12:42:24 +0000
commite02328ef9988444880c36d108aed7ab531c9e3b2 (patch)
tree9e7d75735e3f66ba1db5367b65861e20527abe17 /src/vpn
parentf67ad281327fb463f1463a94cf07bae94f49b4a0 (diff)
downloadgnunet-e02328ef9988444880c36d108aed7ab531c9e3b2.tar.gz
gnunet-e02328ef9988444880c36d108aed7ab531c9e3b2.zip
bugs
Diffstat (limited to 'src/vpn')
-rw-r--r--src/vpn/gnunet-service-dns.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/vpn/gnunet-service-dns.c b/src/vpn/gnunet-service-dns.c
index 56f218b81..2f413c763 100644
--- a/src/vpn/gnunet-service-dns.c
+++ b/src/vpn/gnunet-service-dns.c
@@ -411,6 +411,8 @@ receive_mesh_query (void *cls
411 411
412 struct sockaddr_in dest; 412 struct sockaddr_in dest;
413 413
414 struct dns_pkt_parsed *pdns = parse_dns_packet(dns);
415
414 memset (&dest, 0, sizeof dest); 416 memset (&dest, 0, sizeof dest);
415 dest.sin_port = htons (53); 417 dest.sin_port = htons (53);
416 char *dns_resolver; 418 char *dns_resolver;
@@ -423,6 +425,18 @@ receive_mesh_query (void *cls
423 query_states[dns->s.id].tunnel = tunnel; 425 query_states[dns->s.id].tunnel = tunnel;
424 query_states[dns->s.id].valid = GNUNET_YES; 426 query_states[dns->s.id].valid = GNUNET_YES;
425 427
428 int i;
429 for (i= 0; i < ntohs(pdns->s.qdcount); i++)
430 {
431 if (pdns->queries[i]->qtype == htons(28) ||
432 pdns->queries[i]->qtype == htons(1))
433 {
434 query_states[dns->s.id].qtype = pdns->queries[i]->qtype;
435 break;
436 }
437 }
438 free_parsed_dns_packet(pdns);
439
426 GNUNET_NETWORK_socket_sendto (dnsout, dns, 440 GNUNET_NETWORK_socket_sendto (dnsout, dns,
427 ntohs (message->size) - 441 ntohs (message->size) -
428 sizeof (struct GNUNET_MessageHeader), 442 sizeof (struct GNUNET_MessageHeader),
@@ -547,7 +561,7 @@ receive_mesh_answer (void *cls
547 else 561 else
548 { 562 {
549 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "dns-answer with pending qtype = %d\n", query_states[dns->s.id].qtype); 563 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "dns-answer with pending qtype = %d\n", query_states[dns->s.id].qtype);
550 GNUNET_break(0); 564 GNUNET_assert(0);
551 } 565 }
552 dque->class = htons (1); /* IN */ 566 dque->class = htons (1); /* IN */
553 567
@@ -824,7 +838,7 @@ receive_query (void *cls
824 for (i= 0; i < ntohs(pdns->s.qdcount); i++) 838 for (i= 0; i < ntohs(pdns->s.qdcount); i++)
825 { 839 {
826 if (pdns->queries[i]->qtype == htons(28) || 840 if (pdns->queries[i]->qtype == htons(28) ||
827 pdns->queries[i]->qtype == htons(28)) 841 pdns->queries[i]->qtype == htons(1))
828 { 842 {
829 query_states[dns->s.id].qtype = pdns->queries[i]->qtype; 843 query_states[dns->s.id].qtype = pdns->queries[i]->qtype;
830 break; 844 break;