-fix double free, linker issue
[oweals/gnunet.git] / src / gns / test_gns_dht_delegated_lookup.c
index b7d11bc5ab1702aaf5a714db86a28b174162cfbc..0fcd723e341c7f4ed60379b3d7a1038fab3952d6 100644 (file)
@@ -46,7 +46,7 @@
 #define DEFAULT_NUM_PEERS 2
 
 /* test records to resolve */
-#define TEST_DOMAIN "www.bob.gnunet"
+#define TEST_DOMAIN "www.bob.gads"
 #define TEST_IP "127.0.0.1"
 #define TEST_RECORD_NAME "www"
 
@@ -123,6 +123,13 @@ end_badly_now ()
   die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL);
 }
 
+static void shutdown_task (void *cls,
+                           const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  GNUNET_GNS_disconnect(gns_handle);
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Shutting down peer!\n");
+  GNUNET_SCHEDULER_shutdown ();
+}
 
 static void
 on_lookup_result(void *cls, uint32_t rd_count,
@@ -171,12 +178,10 @@ on_lookup_result(void *cls, uint32_t rd_count,
       }
     }
   }
-  GNUNET_GNS_disconnect(gns_handle);
-  gns_handle = NULL;
   GNUNET_DHT_disconnect (dht_handle);
   dht_handle = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Shutting down peer!\n");
-  GNUNET_SCHEDULER_shutdown ();
+
+  GNUNET_SCHEDULER_add_now (&shutdown_task, NULL);
 }
 
 
@@ -255,6 +260,7 @@ put_dht(void *cls, int32_t success, const char *emsg)
     GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Record serialization failed!\n");
     ok = 3;
     GNUNET_free (nrb);
+    GNUNET_free (web);
     end_badly_now ();
     return;
   }
@@ -270,7 +276,7 @@ put_dht(void *cls, int32_t success, const char *emsg)
     strlen(TEST_RECORD_NAME) + 1;
   GNUNET_DHT_put (dht_handle, &xor_hash,
                   0,
-                  GNUNET_DHT_RO_NONE,
+                  GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
                   GNUNET_BLOCK_TYPE_GNS_NAMERECORD,
                   rd_payload_length,
                   (char*)nrb,
@@ -278,7 +284,9 @@ put_dht(void *cls, int32_t success, const char *emsg)
                   DHT_OPERATION_TIMEOUT,
                   NULL,
                   NULL);
+  GNUNET_free (web);
   GNUNET_free (nrb);
+  GNUNET_free (sig);
   if (GNUNET_SCHEDULER_NO_TASK != die_task)
   {
       GNUNET_SCHEDULER_cancel (die_task);