[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r22114 - gnunet/src/gns
From: |
gnunet |
Subject: |
[GNUnet-SVN] r22114 - gnunet/src/gns |
Date: |
Tue, 19 Jun 2012 16:32:19 +0200 |
Author: schanzen
Date: 2012-06-19 16:32:19 +0200 (Tue, 19 Jun 2012)
New Revision: 22114
Modified:
gnunet/src/gns/Makefile.am
gnunet/src/gns/gnunet-service-gns_resolver.c
gnunet/src/gns/test_gns_simple_lookup.conf
Log:
-ns tests, fixes
Modified: gnunet/src/gns/Makefile.am
===================================================================
--- gnunet/src/gns/Makefile.am 2012-06-19 14:26:38 UTC (rev 22113)
+++ gnunet/src/gns/Makefile.am 2012-06-19 14:32:19 UTC (rev 22114)
@@ -50,7 +50,8 @@
test_gns_pseu_shorten \
test_gns_max_queries \
test_gns_dht_threepeer \
- test_gns_cname_lookup
+ test_gns_cname_lookup \
+ test_gns_ns_lookup
# test_gns_simple_lookup
@@ -210,6 +211,20 @@
$(top_builddir)/src/gns/libgnunetgns.la \
$(top_builddir)/src/testing_old/libgnunettesting_old.la
+
+test_gns_ns_lookup_SOURCES = \
+ test_gns_ns_lookup.c
+test_gns_ns_lookup_LDADD = \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/namestore/libgnunetnamestore.la \
+ $(top_builddir)/src/gns/libgnunetgns.la \
+ $(top_builddir)/src/testing_old/libgnunettesting_old.la
+test_gns_ns_lookup_DEPENDENCIES = \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/namestore/libgnunetnamestore.la \
+ $(top_builddir)/src/gns/libgnunetgns.la \
+ $(top_builddir)/src/testing_old/libgnunettesting_old.la
+
gnunet_gns_SOURCES = \
gnunet-gns.c
gnunet_gns_LDADD = \
@@ -306,5 +321,7 @@
EXTRA_DIST = \
test_gns_defaults.conf \
test_gns_simple_lookup.conf \
- test_gns_dht_default.conf
+ test_gns_dht_default.conf \
+ zonefiles/188JSUMKEF25GVU8TTV0PBNNN8JVCPUEDFV1UHJJU884JD25V0T0.zkey \
+ zonefiles/OEFL7A4VEF1B40QLEMTG5D8G1CN6EN16QUSG5R2DT71GRJN34LSG.zkey
Modified: gnunet/src/gns/gnunet-service-gns_resolver.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns_resolver.c 2012-06-19 14:26:38 UTC
(rev 22113)
+++ gnunet/src/gns/gnunet-service-gns_resolver.c 2012-06-19 14:32:19 UTC
(rev 22114)
@@ -1325,6 +1325,8 @@
struct ResolverHandle *rh = cls;
struct RecordLookupHandle *rlh = rh->proc_cls;
struct GNUNET_NAMESTORE_RecordData rd;
+ struct sockaddr_in *sai;
+ struct sockaddr_in6 *sai6;
if (NULL == addr)
{
@@ -1336,16 +1338,25 @@
}
if (addrlen == sizeof (struct sockaddr_in))
+ {
+ sai = (struct sockaddr_in*) addr;
rd.record_type = GNUNET_GNS_RECORD_TYPE_A;
+ rd.data_size = sizeof (struct in_addr);
+ rd.data = &sai->sin_addr;
+ }
else
+ {
+ sai6 = (struct sockaddr_in6*) addr;
rd.record_type = GNUNET_GNS_RECORD_AAAA;
+ rd.data_size = sizeof (struct in6_addr);
+ rd.data = &sai6->sin6_addr;
+ }
rd.expiration = GNUNET_TIME_UNIT_FOREVER_ABS;
- rd.data_size = addrlen;
- rd.data = addr;
finish_lookup (rh, rlh, 1, &rd);
free_resolver_handle (rh);
+ GNUNET_RESOLVER_request_cancel (rh->dns_resolver_handle);
}
/**
@@ -1412,7 +1423,9 @@
if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_READ_READY))
{
/* timeout or shutdown */
- rh->proc (rh->proc_cls, rh, 0, NULL);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Terminating DNS query\n");
+ finish_lookup (rh, rlh, 0, NULL);
GNUNET_NETWORK_socket_close (rh->dns_sock);
free_resolver_handle (rh);
return;
@@ -1427,7 +1440,7 @@
if (-1 == r)
{
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "recvfrom");
- rh->proc (rh->proc_cls, rh, 0, NULL);
+ finish_lookup (rh, rlh, 0, NULL);
GNUNET_NETWORK_socket_close (rh->dns_sock);
free_resolver_handle (rh);
return;
@@ -1439,7 +1452,7 @@
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Failed to parse DNS reply!\n");
- rh->proc (rh->proc_cls, rh, 0, NULL);
+ finish_lookup (rh, rlh, 0, NULL);
GNUNET_NETWORK_socket_close (rh->dns_sock);
free_resolver_handle (rh);
return;
@@ -1447,8 +1460,12 @@
for (i = 0; i < packet->num_answers; i++)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Got record type %d (want %d)\n",
+ packet->answers[i].type,
+ rlh->record_type);
/* http://tools.ietf.org/html/rfc1034#section-3.6.2 */
- if (packet->authority_records[i].type == GNUNET_GNS_RECORD_TYPE_CNAME)
+ if (packet->answers[i].type == GNUNET_GNS_RECORD_TYPE_CNAME)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"CNAME... restarting query with %s\n",
@@ -1471,7 +1488,7 @@
rd.record_type = packet->answers[i].type;
rd.flags = 0;
rd.expiration = packet->answers[i].expiration_time;
- rh->proc (rh->proc_cls, rh, 1, &rd);
+ finish_lookup (rh, rlh, 1, &rd);
GNUNET_NETWORK_socket_close (rh->dns_sock);
GNUNET_DNSPARSER_free_packet (packet);
free_resolver_handle (rh);
@@ -1488,9 +1505,17 @@
/* restart query with CNAME */
if (0 == strcmp (rh->dns_name+zone_offset, rh->dns_zone))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Asking same server for %s\n", rh->dns_name);
send_dns_packet (rh);
+ }
else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Trying system resolver for %s\n", rh->dns_name);
resolve_dns_name (rh);
+ }
GNUNET_DNSPARSER_free_packet (packet);
return;
@@ -1529,8 +1554,8 @@
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Failed to parse DNS reply!\n");
- rh->proc (rh->proc_cls, rh, 0, NULL);
+ "Nothing useful in DNS reply!\n");
+ finish_lookup (rh, rlh, 0, NULL);
GNUNET_NETWORK_socket_close (rh->dns_sock);
free_resolver_handle (rh);
GNUNET_DNSPARSER_free_packet (packet);
@@ -1581,7 +1606,6 @@
struct GNUNET_DNSPARSER_Query query;
struct GNUNET_DNSPARSER_Packet packet;
struct GNUNET_DNSPARSER_Flags flags;
- char dns_name[MAX_DNS_NAME_LENGTH];
struct in_addr dnsip;
struct sockaddr_in addr;
struct sockaddr *sa;
@@ -1622,7 +1646,8 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"GNS_PHASE_REC_DNS-%llu: Looking up %s from %s\n",
- dns_name,
+ rh->id,
+ rh->dns_name,
inet_ntoa (dnsip));
rh->dns_sock = GNUNET_NETWORK_socket_create (AF_INET, SOCK_DGRAM, 0);
if (rh->dns_sock == NULL)
@@ -1630,7 +1655,8 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"GNS_PHASE_REC_DNS-%llu: Error creating udp socket for dns!\n",
rh->id);
- rh->proc(rh->proc_cls, rh, 0, NULL);
+ finish_lookup (rh, rlh, 0, NULL);
+ free_resolver_handle (rh);
return;
}
@@ -1645,16 +1671,13 @@
"GNS_PHASE_REC_DNS-%llu: Error binding udp socket for dns!\n",
rh->id);
GNUNET_NETWORK_socket_close (rh->dns_sock);
- rh->proc(rh->proc_cls, rh, 0, NULL);
+ finish_lookup (rh, rlh, 0, NULL);
+ free_resolver_handle (rh);
return;
}
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "GNS_PHASE_REC_DNS-%llu: NOT IMPLEMENTED!\n",
- rh->id);
- GNUNET_NETWORK_socket_close (rh->dns_sock);
- rh->proc(rh->proc_cls, rh, 0, NULL);
+
/*TODO create dnsparser query, serialize, sendto, handle reply*/
- query.name = dns_name;
+ query.name = rh->dns_name;
query.type = rlh->record_type;
query.class = GNUNET_DNSPARSER_CLASS_INTERNET;
memset (&flags, 0, sizeof (flags));
@@ -1678,7 +1701,8 @@
"GNS_PHASE_REC_DNS-%llu: Creating raw dns packet!\n",
rh->id);
GNUNET_NETWORK_socket_close (rh->dns_sock);
- rh->proc(rh->proc_cls, rh, 0, NULL);
+ finish_lookup (rh, rlh, 0, NULL);
+ free_resolver_handle (rh);
return;
}
@@ -1690,13 +1714,6 @@
#endif
send_dns_packet (rh);
-
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "GNS_PHASE_REC_DNS-%llu: NOT IMPLEMENTED!\n",
- rh->id);
- GNUNET_free (rh->dns_raw_packet);
- GNUNET_NETWORK_socket_close (rh->dns_sock);
- rh->proc(rh->proc_cls, rh, 0, NULL);
}
@@ -2643,7 +2660,7 @@
}
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "GNS_PHASE_DELEGATE_NS-%llu: VPN delegation starting.\n",
+ "GNS_PHASE_DELEGATE_NS-%llu: NS delegation starting.\n",
rh->id);
GNUNET_assert (NULL != rd);
rh->proc = &handle_record_ns;
@@ -2673,7 +2690,28 @@
}
return;
}
-
+
+ if (rh->status & RSL_DELEGATE_NS)
+ {
+ if (rlh->record_type == GNUNET_GNS_RECORD_TYPE_NS)
+ {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "GNS_PHASE_DELEGATE_NS-%llu: Resolved queried NSRR in NS.\n",
+ rh->id);
+ finish_lookup(rh, rlh, rd_count, rd);
+ free_resolver_handle(rh);
+ return;
+ }
+
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "GNS_PHASE_DELEGATE_NS-%llu: NS delegation starting.\n",
+ rh->id);
+ GNUNET_assert (NULL != rd);
+ rh->proc = &handle_record_ns;
+ resolve_record_dns (rh, rd_count, rd);
+ return;
+ }
+
/**
* we still have some left
* check if authority in ns is fresh
@@ -2873,6 +2911,7 @@
rh->id);
rh->status |= RSL_DELEGATE_NS;
rh->proc (rh->proc_cls, rh, rd_count, rd);
+ return;
}
if (rd[i].record_type != GNUNET_GNS_RECORD_PKEY)
Modified: gnunet/src/gns/test_gns_simple_lookup.conf
===================================================================
--- gnunet/src/gns/test_gns_simple_lookup.conf 2012-06-19 14:26:38 UTC (rev
22113)
+++ gnunet/src/gns/test_gns_simple_lookup.conf 2012-06-19 14:32:19 UTC (rev
22114)
@@ -3,7 +3,7 @@
AUTOSTART = NO
[resolver]
-AUTOSTART = NO
+AUTOSTART = YES
HOSTNAME = localhost
[dht]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22114 - gnunet/src/gns,
gnunet <=