From 41433c728b2256e10849596ff093132d0f319a00 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Mon, 20 Feb 2012 17:21:44 +0000 Subject: [PATCH] -minor changes --- src/gns/gnunet-service-gns.c | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/gns/gnunet-service-gns.c b/src/gns/gnunet-service-gns.c index 902c2adec..26164a6a8 100644 --- a/src/gns/gnunet-service-gns.c +++ b/src/gns/gnunet-service-gns.c @@ -94,6 +94,7 @@ static void shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { GNUNET_DNS_disconnect(dns_handle); + GNUNET_NAMESTORE_disconnect(namestore_handle, 0); } static void @@ -109,6 +110,10 @@ process_ns_result(void* cls, const GNUNET_HashCode *zone, struct GNUNET_DNSPARSER_Packet *packet; struct GNUNET_DNSPARSER_Flags dnsflags; char *reply_buffer; + struct GNUNET_CONTAINER_SList_Iterator *i; + struct GNUNET_CONTAINER_SList_Iterator head; + int j; + size_t record_len; answer = (struct GNUNET_GNS_PendingQuery *) cls; @@ -123,6 +128,20 @@ process_ns_result(void* cls, const GNUNET_HashCode *zone, packet = GNUNET_malloc(sizeof(struct GNUNET_DNSPARSER_Packet)); packet->answers = GNUNET_malloc(sizeof(struct GNUNET_DNSPARSER_Record) * answer->num_records); + + j = 0; + head = GNUNET_CONTAINER_slist_begin (answer->records); + i = &head; + record_len = sizeof(struct GNUNET_DNSPARSER_Record*); + for (;i != NULL; GNUNET_CONTAINER_slist_next (i)) + { + memcpy(&packet->answers[j], + GNUNET_CONTAINER_slist_get (i, &record_len), + sizeof (struct GNUNET_DNSPARSER_Record)); + j++; + } + + /* FIXME how to handle auth, additional etc */ packet->num_answers = answer->num_records; packet->num_authority_records = answer->num_authority_records; @@ -143,6 +162,7 @@ process_ns_result(void* cls, const GNUNET_HashCode *zone, GNUNET_DNS_request_answer(answer->request_handle, 6000, //FIXME what length here reply_buffer); + //FIXME return code, free datastructures } else { @@ -259,6 +279,39 @@ handle_client_record_lookup(void *cls, { } +/** + * test function + */ +void +put_some_records(void) +{ + /* put a few records into namestore */ + char* ipA = "1.2.3.4"; + char* ipB = "5.6.7.8"; + GNUNET_NAMESTORE_record_put (namestore_handle, + my_zone, + "alice.gnunet", + GNUNET_GNS_RECORD_TYPE_A, + GNUNET_TIME_absolute_get_forever(), + GNUNET_NAMESTORE_RF_AUTHORITY, + NULL, //sig loc + strlen (ipA), + ipA, + NULL, + NULL); + GNUNET_NAMESTORE_record_put (namestore_handle, + my_zone, + "bob.gnunet", + GNUNET_GNS_RECORD_TYPE_A, + GNUNET_TIME_absolute_get_forever(), + GNUNET_NAMESTORE_RF_AUTHORITY, + NULL, //sig loc + strlen (ipB), + ipB, + NULL, + NULL); +} + /** * Process GNS requests. * @@ -299,6 +352,13 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, */ namestore_handle = GNUNET_NAMESTORE_connect(c); + if (NULL == namestore_handle) + { + //FIXME do error handling; + } + + put_some_records(); + GNUNET_SERVER_add_handlers (server, handlers); /** * Esp the lookup would require to keep track of the clients' context -- 2.25.1