diff options
author | Philipp Tölke <toelke@in.tum.de> | 2011-10-26 12:42:24 +0000 |
---|---|---|
committer | Philipp Tölke <toelke@in.tum.de> | 2011-10-26 12:42:24 +0000 |
commit | e02328ef9988444880c36d108aed7ab531c9e3b2 (patch) | |
tree | 9e7d75735e3f66ba1db5367b65861e20527abe17 /src/vpn | |
parent | f67ad281327fb463f1463a94cf07bae94f49b4a0 (diff) | |
download | gnunet-e02328ef9988444880c36d108aed7ab531c9e3b2.tar.gz gnunet-e02328ef9988444880c36d108aed7ab531c9e3b2.zip |
bugs
Diffstat (limited to 'src/vpn')
-rw-r--r-- | src/vpn/gnunet-service-dns.c | 18 |
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; |