gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnunet] branch master updated: fix broken zone iteration


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated: fix broken zone iteration
Date: Sat, 13 Oct 2018 15:21:12 +0200

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new ec105da10 fix broken zone iteration
ec105da10 is described below

commit ec105da10b0e8280e74fc0dc03b9c5973897d372
Author: Schanzenbach, Martin <address@hidden>
AuthorDate: Sat Oct 13 22:21:05 2018 +0900

    fix broken zone iteration
---
 src/gns/test_gns_defaults.conf           |   2 -
 src/gns/test_gns_dht_lookup.sh           |  15 ++-
 src/gns/test_gns_lookup.conf             |  40 +++++++-
 src/namestore/gnunet-service-namestore.c | 163 ++++++++++++++++---------------
 src/namestore/plugin_namestore_sqlite.c  |   7 +-
 5 files changed, 137 insertions(+), 90 deletions(-)

diff --git a/src/gns/test_gns_defaults.conf b/src/gns/test_gns_defaults.conf
index 01825fafe..19ba01ebb 100644
--- a/src/gns/test_gns_defaults.conf
+++ b/src/gns/test_gns_defaults.conf
@@ -1,5 +1,3 @@
address@hidden@ ../../contrib/conf/gnunet/no_forcestart.conf
-
 [PATHS]
 GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-testing/
 
diff --git a/src/gns/test_gns_dht_lookup.sh b/src/gns/test_gns_dht_lookup.sh
index d59434c7d..64af868a5 100755
--- a/src/gns/test_gns_dht_lookup.sh
+++ b/src/gns/test_gns_dht_lookup.sh
@@ -20,6 +20,8 @@ OTHER_EGO="delegatedego"
 
 rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths -o GNUNET_TEST_HOME`
 gnunet-arm -s -c test_gns_lookup.conf
+gnunet-arm -i zonemaster -c test_gns_lookup.conf
+gnunet-arm -i datastore -c test_gns_lookup.conf
 gnunet-identity -C $OTHER_EGO -c test_gns_lookup.conf
 DELEGATED_PKEY=$(gnunet-identity -d -c test_gns_lookup.conf | grep $OTHER_EGO 
| awk '{print $3}')
 gnunet-identity -C $MY_EGO -c test_gns_lookup.conf
@@ -29,14 +31,21 @@ gnunet-namestore -p -z $OTHER_EGO -a -n www -t A -V 
$TEST_IP -e never -c test_gn
 #This doesn't
 gnunet-namestore -p -z $OTHER_EGO -a -n www2 -t A -V $TEST_IP -e '5 s' -c 
test_gns_lookup.conf
 sleep 6
-gnunet-arm -r -c test_gns_lookup.conf
-gnunet-arm -i gns -c test_gns_lookup.conf
-gnunet-identity -D $OTHER_EGO -c test_gns_lookup.conf
+#gnunet-namestore -p -z $OTHER_EGO -d -n www2 -t A -V $TEST_IP -e '5 s' -c 
test_gns_lookup.conf
+#gnunet-namestore -p -z $OTHER_EGO -a -n www2 -t A -V $TEST_IP -e '5 s' -c 
test_gns_lookup.conf
+gnunet-arm -k zonemaster -c test_gns_lookup.conf
+gnunet-arm -i zonemaster -c test_gns_lookup.conf
+#gnunet-arm -r -c test_gns_lookup.conf
+#gnunet-arm -i zonemaster
+#gnunet-arm -i gns -c test_gns_lookup.conf
+gnunet-arm -I -c test_gns_lookup.conf
+#gnunet-identity -D $OTHER_EGO -c test_gns_lookup.conf
 #gnunet-namestore -z $MY_EGO -d -n b -t PKEY -V $DELEGATED_PKEY  -e never -c 
test_gns_lookup.conf
 #gnunet-namestore -z $OTHER_EGO -d -n www -t A -V $TEST_IP  -e never -c 
test_gns_lookup.conf
 RES_IP=`$DO_TIMEOUT gnunet-gns --raw -u www.b.$MY_EGO -t A -c 
test_gns_lookup.conf`
 RES_IP_REL=`$DO_TIMEOUT gnunet-gns --raw -u www2.b.$MY_EGO -t A -c 
test_gns_lookup.conf`
 #gnunet-namestore -z $MY_EGO -d -n b -t PKEY -V $DELEGATED_PKEY  -e never -c 
test_gns_lookup.conf
+gnunet-arm -I -c test_gns_lookup.conf
 gnunet-arm -e -c test_gns_lookup.conf
 rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths -o GNUNET_TEST_HOME`
 
diff --git a/src/gns/test_gns_lookup.conf b/src/gns/test_gns_lookup.conf
index 0d9d2b49a..2b874f80d 100644
--- a/src/gns/test_gns_lookup.conf
+++ b/src/gns/test_gns_lookup.conf
@@ -1,14 +1,14 @@
 @INLINE@ test_gns_defaults.conf
 
+[namecache]
+DISABLE = YES
+
 [PATHS]
 GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-peer-1/
 
 [dht]
 START_ON_DEMAND = YES
 
-[transport]
-PLUGINS =
-
 [gns]
 # PREFIX = valgrind --leak-check=full --track-origins=yes
 START_ON_DEMAND = YES
@@ -19,5 +19,39 @@ RECORD_PUT_INTERVAL = 1 h
 ZONE_PUBLISH_TIME_WINDOW = 1 h
 DNS_ROOT=PD67SGHF3E0447TU9HADIVU9OM7V4QHTOG0EBU69TFRI2LG63DR0
 
+[namestore]
+#PREFIX = valgrind --leak-check=full --track-origins=yes --log-file=/tmp/ns_log
+
 [revocation]
 WORKBITS = 1
+
+[dhtcache]
+QUOTA = 1 MB
+DATABASE = heap
+
+[topology]
+TARGET-CONNECTION-COUNT = 16
+AUTOCONNECT = YES
+FRIENDS-ONLY = NO
+MINIMUM-FRIENDS = 0
+
+[ats]
+WAN_QUOTA_IN = 1 GB
+WAN_QUOTA_OUT = 1 GB
+
+[transport]
+plugins = tcp
+NEIGHBOUR_LIMIT = 50
+PORT = 2091
+
+[transport-tcp]
+TIMEOUT = 300 s
+
+[nat]
+DISABLEV6 = YES
+BINDTO = 127.0.0.1
+ENABLE_UPNP = NO
+BEHIND_NAT = NO
+ALLOW_NAT = NO
+INTERNAL_ADDRESS = 127.0.0.1
+EXTERNAL_ADDRESS = 127.0.0.1
diff --git a/src/namestore/gnunet-service-namestore.c 
b/src/namestore/gnunet-service-namestore.c
index acb6a745a..cdefd0be9 100644
--- a/src/namestore/gnunet-service-namestore.c
+++ b/src/namestore/gnunet-service-namestore.c
@@ -713,7 +713,9 @@ send_store_response (struct NamestoreClient *nc,
 {
   struct GNUNET_MQ_Envelope *env;
   struct RecordStoreResponseMessage *rcr_msg;
-
+  
+  if (NULL == nc)
+    return;
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Sending RECORD_STORE_RESPONSE message\n");
   GNUNET_STATISTICS_update (statistics,
@@ -1694,11 +1696,13 @@ zone_iterate_proc (void *cls,
   proc->limit--;
   proc->zi->seq = seq;
   send_lookup_response (proc->zi->nc,
-                       proc->zi->request_id,
-                       zone_key,
-                       name,
-                       rd_count,
-                       rd);
+                        proc->zi->request_id,
+                        zone_key,
+                        name,
+                        rd_count,
+                        rd);
+
+
   do_refresh_block = GNUNET_NO;
   for (unsigned int i=0;i<rd_count;i++)
     if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION))
@@ -1708,7 +1712,7 @@ zone_iterate_proc (void *cls,
     }
   if (GNUNET_YES == do_refresh_block)
     refresh_block (NULL,
-                  0,
+                   0,
                    zone_key,
                    name,
                    rd_count,
@@ -1764,23 +1768,23 @@ run_zone_iteration_round (struct ZoneIteration *zi,
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Returned %llu results, more results available\n",
-               (unsigned long long) limit);
+                (unsigned long long) limit);
     return; /* more results later after we get the
-               #GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_NEXT message */
+#GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_NEXT message */
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Completed iteration after %llu/%llu results\n",
-             (unsigned long long) (limit - proc.limit),
-             (unsigned long long) limit);
+              "Completed iteration after %llu/%llu results\n",
+              (unsigned long long) (limit - proc.limit),
+              (unsigned long long) limit);
   /* send empty response to indicate end of list */
   env = GNUNET_MQ_msg (rrm,
-                      GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_RESULT);
+                       GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_RESULT);
   rrm->gns_header.r_id = htonl (zi->request_id);
   GNUNET_MQ_send (zi->nc->mq,
-                 env);
+                  env);
   GNUNET_CONTAINER_DLL_remove (zi->nc->op_head,
-                              zi->nc->op_tail,
-                              zi);
+                               zi->nc->op_tail,
+                               zi);
   GNUNET_free (zi);
 }
 
@@ -1793,22 +1797,23 @@ run_zone_iteration_round (struct ZoneIteration *zi,
  */
 static void
 handle_iteration_start (void *cls,
-                       const struct ZoneIterationStartMessage *zis_msg)
+                        const struct ZoneIterationStartMessage *zis_msg)
 {
   struct NamestoreClient *nc = cls;
   struct ZoneIteration *zi;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Received ZONE_ITERATION_START message\n");
+              "Received ZONE_ITERATION_START message\n");
   zi = GNUNET_new (struct ZoneIteration);
   zi->request_id = ntohl (zis_msg->gns_header.r_id);
   zi->offset = 0;
   zi->nc = nc;
+  zi->seq = 1;
   zi->zone = zis_msg->zone;
 
   GNUNET_CONTAINER_DLL_insert (nc->op_head,
-                              nc->op_tail,
-                              zi);
+                               nc->op_tail,
+                               zi);
   run_zone_iteration_round (zi,
                             1);
   GNUNET_SERVICE_client_continue (nc->client);
@@ -1823,14 +1828,14 @@ handle_iteration_start (void *cls,
  */
 static void
 handle_iteration_stop (void *cls,
-                      const struct ZoneIterationStopMessage *zis_msg)
+                       const struct ZoneIterationStopMessage *zis_msg)
 {
   struct NamestoreClient *nc = cls;
   struct ZoneIteration *zi;
   uint32_t rid;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Received ZONE_ITERATION_STOP message\n");
+              "Received ZONE_ITERATION_STOP message\n");
   rid = ntohl (zis_msg->gns_header.r_id);
   for (zi = nc->op_head; NULL != zi; zi = zi->next)
     if (zi->request_id == rid)
@@ -1842,8 +1847,8 @@ handle_iteration_stop (void *cls,
     return;
   }
   GNUNET_CONTAINER_DLL_remove (nc->op_head,
-                              nc->op_tail,
-                              zi);
+                               nc->op_tail,
+                               zi);
   GNUNET_free (zi);
   GNUNET_SERVICE_client_continue (nc->client);
 }
@@ -1857,7 +1862,7 @@ handle_iteration_stop (void *cls,
  */
 static void
 handle_iteration_next (void *cls,
-                      const struct ZoneIterationNextMessage *zis_msg)
+                       const struct ZoneIterationNextMessage *zis_msg)
 {
   struct NamestoreClient *nc = cls;
   struct ZoneIteration *zi;
@@ -1939,9 +1944,9 @@ monitor_sync (struct ZoneMonitor *zm)
   struct GNUNET_MessageHeader *sync;
 
   env = GNUNET_MQ_msg (sync,
-                      GNUNET_MESSAGE_TYPE_NAMESTORE_MONITOR_SYNC);
+                       GNUNET_MESSAGE_TYPE_NAMESTORE_MONITOR_SYNC);
   GNUNET_MQ_send (zm->nc->mq,
-                 env);
+                  env);
   /* mark iteration done */
   zm->in_first_iteration = GNUNET_NO;
   zm->iteration_cnt = 0;
@@ -1972,11 +1977,11 @@ monitor_iteration_next (void *cls);
  */
 static void
 monitor_iterate_cb (void *cls,
-                   uint64_t seq,
-                   const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key,
-                   const char *name,
-                   unsigned int rd_count,
-                   const struct GNUNET_GNSRECORD_Data *rd)
+                    uint64_t seq,
+                    const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key,
+                    const char *name,
+                    unsigned int rd_count,
+                    const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct ZoneMonitor *zm = cls;
 
@@ -1989,11 +1994,11 @@ monitor_iterate_cb (void *cls,
   zm->limit--;
   zm->iteration_cnt--;
   send_lookup_response (zm->nc,
-                       0,
-                       zone_key,
-                       name,
-                       rd_count,
-                       rd);
+                        0,
+                        zone_key,
+                        name,
+                        rd_count,
+                        rd);
   if ( (0 == zm->iteration_cnt) &&
        (0 != zm->limit) )
   {
@@ -2014,28 +2019,28 @@ monitor_iterate_cb (void *cls,
  */
 static void
 handle_monitor_start (void *cls,
-                     const struct ZoneMonitorStartMessage *zis_msg)
+                      const struct ZoneMonitorStartMessage *zis_msg)
 {
   struct NamestoreClient *nc = cls;
   struct ZoneMonitor *zm;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Received ZONE_MONITOR_START message\n");
+              "Received ZONE_MONITOR_START message\n");
   zm = GNUNET_new (struct ZoneMonitor);
   zm->nc = nc;
   zm->zone = zis_msg->zone;
   zm->limit = 1;
   zm->in_first_iteration = (GNUNET_YES == ntohl (zis_msg->iterate_first));
   GNUNET_CONTAINER_DLL_insert (monitor_head,
-                              monitor_tail,
-                              zm);
+                               monitor_tail,
+                               zm);
   GNUNET_SERVICE_client_mark_monitor (nc->client);
   GNUNET_SERVICE_client_continue (nc->client);
   GNUNET_notification_context_add (monitor_nc,
-                                  nc->mq);
+                                   nc->mq);
   if (zm->in_first_iteration)
     zm->task = GNUNET_SCHEDULER_add_now (&monitor_iteration_next,
-                                        zm);
+                                         zm);
   else
     monitor_sync (zm);
 }
@@ -2060,14 +2065,14 @@ monitor_iteration_next (void *cls)
     zm->iteration_cnt = zm->limit; /* use it all */
   ret = GSN_database->iterate_records (GSN_database->cls,
                                        (0 == memcmp (&zm->zone,
-                                                    &zero,
-                                                    sizeof (zero)))
+                                                     &zero,
+                                                     sizeof (zero)))
                                        ? NULL
                                        : &zm->zone,
-                                      zm->seq,
+                                       zm->seq,
                                        zm->iteration_cnt,
-                                      &monitor_iterate_cb,
-                                      zm);
+                                       &monitor_iterate_cb,
+                                       zm);
   if (GNUNET_SYSERR == ret)
   {
     GNUNET_SERVICE_client_drop (zm->nc->client);
@@ -2098,7 +2103,7 @@ handle_monitor_next (void *cls,
 
   inc = GNUNET_ntohll (nm->limit);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Received ZONE_MONITOR_NEXT message with limit %llu\n",
+              "Received ZONE_MONITOR_NEXT message with limit %llu\n",
               (unsigned long long) inc);
   for (zm = monitor_head; NULL != zm; zm = zm->next)
     if (zm->nc == nc)
@@ -2161,13 +2166,13 @@ run (void *cls,
   (void) cls;
   (void) service;
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Starting namestore service\n");
+              "Starting namestore service\n");
   cache_keys = GNUNET_CONFIGURATION_get_value_yesno (cfg,
                                                      "namestore",
                                                      "CACHE_KEYS");
   disable_namecache = GNUNET_CONFIGURATION_get_value_yesno (cfg,
-                                                           "namecache",
-                                                           "DISABLE");
+                                                            "namecache",
+                                                            "DISABLE");
   GSN_cfg = cfg;
   monitor_nc = GNUNET_notification_context_create (1);
   if (GNUNET_YES != disable_namecache)
@@ -2193,12 +2198,12 @@ run (void *cls,
   statistics = GNUNET_STATISTICS_create ("namestore",
                                          cfg);
   GNUNET_SCHEDULER_add_shutdown (&cleanup_task,
-                                NULL);
+                                 NULL);
   if (NULL == GSN_database)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               "Could not load database backend `%s'\n",
-               db_lib_name);
+                "Could not load database backend `%s'\n",
+                db_lib_name);
     GNUNET_SCHEDULER_shutdown ();
     return;
   }
@@ -2216,37 +2221,37 @@ GNUNET_SERVICE_MAIN
  &client_disconnect_cb,
  NULL,
  GNUNET_MQ_hd_var_size (record_store,
-                       GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_STORE,
-                       struct RecordStoreMessage,
-                       NULL),
+                        GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_STORE,
+                        struct RecordStoreMessage,
+                        NULL),
  GNUNET_MQ_hd_var_size (record_lookup,
-                       GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP,
-                       struct LabelLookupMessage,
-                       NULL),
+                        GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP,
+                        struct LabelLookupMessage,
+                        NULL),
  GNUNET_MQ_hd_fixed_size (zone_to_name,
-                         GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_TO_NAME,
-                         struct ZoneToNameMessage,
-                         NULL),
+                          GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_TO_NAME,
+                          struct ZoneToNameMessage,
+                          NULL),
  GNUNET_MQ_hd_fixed_size (iteration_start,
-                         GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_START,
-                         struct ZoneIterationStartMessage,
-                         NULL),
+                          GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_START,
+                          struct ZoneIterationStartMessage,
+                          NULL),
  GNUNET_MQ_hd_fixed_size (iteration_next,
-                         GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_NEXT,
-                         struct ZoneIterationNextMessage,
-                         NULL),
+                          GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_NEXT,
+                          struct ZoneIterationNextMessage,
+                          NULL),
  GNUNET_MQ_hd_fixed_size (iteration_stop,
-                         GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_STOP,
-                         struct ZoneIterationStopMessage,
-                         NULL),
+                          GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_ITERATION_STOP,
+                          struct ZoneIterationStopMessage,
+                          NULL),
  GNUNET_MQ_hd_fixed_size (monitor_start,
-                         GNUNET_MESSAGE_TYPE_NAMESTORE_MONITOR_START,
-                         struct ZoneMonitorStartMessage,
-                         NULL),
+                          GNUNET_MESSAGE_TYPE_NAMESTORE_MONITOR_START,
+                          struct ZoneMonitorStartMessage,
+                          NULL),
  GNUNET_MQ_hd_fixed_size (monitor_next,
-                         GNUNET_MESSAGE_TYPE_NAMESTORE_MONITOR_NEXT,
-                         struct ZoneMonitorNextMessage,
-                         NULL),
+                          GNUNET_MESSAGE_TYPE_NAMESTORE_MONITOR_NEXT,
+                          struct ZoneMonitorNextMessage,
+                          NULL),
  GNUNET_MQ_handler_end ());
 
 
diff --git a/src/namestore/plugin_namestore_sqlite.c 
b/src/namestore/plugin_namestore_sqlite.c
index 6960e5d12..07784a779 100644
--- a/src/namestore/plugin_namestore_sqlite.c
+++ b/src/namestore/plugin_namestore_sqlite.c
@@ -503,7 +503,6 @@ get_records_and_call_iterator (struct Plugin *plugin,
 
       if (NULL == zone_key)
       {
-        zone_key = &zk;
         ret = GNUNET_SQ_extract_result (stmt,
                                         rsx);
       }
@@ -537,10 +536,12 @@ get_records_and_call_iterator (struct Plugin *plugin,
         }
         else
         {
+          if (NULL != zone_key)
+            zk = *zone_key;
           if (NULL != iter)
             iter (iter_cls,
-                 seq + 1,
-                  zone_key,
+                             seq + 1,
+                  &zk,
                   label,
                   record_count,
                   rd);

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]