gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] branch master updated (99118ccc8 -> 23853f2d7)


From: gnunet
Subject: [gnunet] branch master updated (99118ccc8 -> 23853f2d7)
Date: Fri, 27 Oct 2023 17:43:53 +0200

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

t3sserakt pushed a change to branch master
in repository gnunet.

    from 99118ccc8 TRANSPORT/HOSTLIST: Fix crashing services; code smells still 
exist
     new 8093c8edb Changed relative path to no force test config
     new aa9bebd0e TNG: Fixed bug in handling hello to start validation.
     new 21be88737 News: Introduced closure to hold store context when caling 
function to add hello in peerstore.
     new 0ecf00fba Hello: Fixed usage of GNUNET_HELLO_builder_iterate.
     new 8ebef9f2e Cadet: Changes to use DhtHelloMessage instead of 
HelloUriMessage, and to hand over not a HelloMessage, but a block to the dht.
     new 23853f2d7 Merge branch 'master' of ssh://git.gnunet.org/gnunet

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/include/gnunet_peerstore_service.h               | 10 ++++++++++
 src/service/cadet/gnunet-service-cadet_dht.c         | 15 ++++++++++++---
 src/service/cadet/gnunet-service-cadet_hello.c       | 17 ++++++++++++++++-
 src/service/dht/gnunet-service-dht_clients.c         |  8 +++++---
 src/service/dht/gnunet-service-dht_neighbours.c      | 10 +++++++---
 src/service/dhtu/plugin_dhtu_gnunet.c                |  3 ++-
 src/service/hostlist/gnunet-daemon-hostlist_client.c | 10 ++++++++--
 src/service/topology/gnunet-daemon-topology.c        | 13 ++++++++++---
 src/service/transport/gnunet-service-transport.c     | 12 ++++++++++--
 src/service/transport/test_tng_defaults.conf         |  2 +-
 10 files changed, 81 insertions(+), 19 deletions(-)

diff --git a/src/include/gnunet_peerstore_service.h 
b/src/include/gnunet_peerstore_service.h
index 99ba98593..c57a66b1f 100644
--- a/src/include/gnunet_peerstore_service.h
+++ b/src/include/gnunet_peerstore_service.h
@@ -234,6 +234,16 @@ struct GNUNET_PEERSTORE_StoreHelloContext
   int success;
 };
 
+/**
+ * Closure to hold a GNUNET_PEERSTORE_StoreHelloContext.
+ */
+struct GNUNET_PEERSTORE_StoreHelloContextClosure
+{
+  /**
+   * The GNUNET_PEERSTORE_StoreHelloContext to hold.
+   */
+  struct GNUNET_PEERSTORE_StoreHelloContext *shc;
+};
 
 /**
  * Function called by PEERSTORE for each matching record.
diff --git a/src/service/cadet/gnunet-service-cadet_dht.c 
b/src/service/cadet/gnunet-service-cadet_dht.c
index ef5669344..28b5448fd 100644
--- a/src/service/cadet/gnunet-service-cadet_dht.c
+++ b/src/service/cadet/gnunet-service-cadet_dht.c
@@ -153,6 +153,8 @@ announce_id (void *cls)
   struct GNUNET_HashCode phash;
   const struct GNUNET_MessageHeader *hello;
   size_t size;
+  size_t block_size;
+  void *block;
   struct GNUNET_TIME_Absolute expiration;
   struct GNUNET_TIME_Relative next_put;
 
@@ -194,17 +196,24 @@ announce_id (void *cls)
   GNUNET_memcpy (&phash,
                  &my_full_id,
                  sizeof(my_full_id));
+  if (GNUNET_OK != GNUNET_HELLO_dht_msg_to_block (hello,
+                                                  &my_full_id,
+                                                  &block,
+                                                  &block_size,
+                                                  &expiration))
+    return;
+
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Announcing my HELLO (%lu bytes) in the DHT\n",
-       (unsigned long) size);
+       (unsigned long) block_size);
   GNUNET_DHT_put (dht_handle,    /* DHT handle */
                   &phash,       /* Key to use */
                   dht_replication_level,     /* Replication level */
                   GNUNET_DHT_RO_RECORD_ROUTE
                   | GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,    /* DHT options */
                   GNUNET_BLOCK_TYPE_DHT_HELLO,       /* Block type */
-                  size,  /* Size of the data */
-                  (const char *) hello, /* Data itself */
+                  block_size,  /* Size of the data */
+                  (const char *) block, /* Data itself */
                   expiration,  /* Data expiration */
                   NULL,         /* Continuation */
                   NULL);        /* Continuation closure */
diff --git a/src/service/cadet/gnunet-service-cadet_hello.c 
b/src/service/cadet/gnunet-service-cadet_hello.c
index 135fde25a..3c8509ea4 100644
--- a/src/service/cadet/gnunet-service-cadet_hello.c
+++ b/src/service/cadet/gnunet-service-cadet_hello.c
@@ -68,6 +68,7 @@ got_hello (void *cls,
            const char *err_msg)
 {
   struct CadetPeer *peer;
+  struct GNUNET_HELLO_Builder *builder;
 
   if ((NULL == id) ||
       (NULL == hello))
@@ -76,7 +77,11 @@ got_hello (void *cls,
                           &my_full_id))
   {
     GNUNET_free (mine);
-    mine = GNUNET_copy_message (hello);
+    builder = GNUNET_HELLO_builder_from_msg (hello);
+    mine = GNUNET_HELLO_builder_to_dht_hello_msg (builder,
+                                                  my_private_key,
+                                                  GNUNET_TIME_UNIT_ZERO);
+    GNUNET_HELLO_builder_free (builder);
     GCD_hello_update ();
     return;
   }
@@ -142,6 +147,16 @@ GCH_shutdown ()
 const struct GNUNET_MessageHeader *
 GCH_get_mine (void)
 {
+  struct GNUNET_HELLO_Builder *builder;
+
+  if (NULL == mine)
+  {
+    builder = GNUNET_HELLO_builder_new (&my_full_id);
+    mine = GNUNET_HELLO_builder_to_dht_hello_msg (builder,
+                                       my_private_key,
+                                       GNUNET_TIME_UNIT_ZERO);
+    GNUNET_HELLO_builder_free (builder);
+  }
   return mine;
 }
 
diff --git a/src/service/dht/gnunet-service-dht_clients.c 
b/src/service/dht/gnunet-service-dht_clients.c
index 90bb4d1f7..f2027888c 100644
--- a/src/service/dht/gnunet-service-dht_clients.c
+++ b/src/service/dht/gnunet-service-dht_clients.c
@@ -1203,7 +1203,7 @@ handle_dht_local_hello_offer (void *cls,
   struct ClientHandle *ch = cls;
   const char *url = (const char *) &msg[1];
   struct GNUNET_HELLO_Builder *b;
-  struct GNUNET_PeerIdentity pid;
+  struct GNUNET_PeerIdentity *pid;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Local client provided HELLO URL %s\n",
@@ -1216,10 +1216,12 @@ handle_dht_local_hello_offer (void *cls,
     return;
   }
   GNUNET_SERVICE_client_continue (ch->client);
+  pid = GNUNET_new (struct GNUNET_PeerIdentity);
   GNUNET_HELLO_builder_iterate (b,
-                                &pid,
+                                pid,
                                 &GDS_try_connect,
-                                &pid);
+                                pid);
+  GNUNET_free (pid);
   GNUNET_HELLO_builder_free (b);
 }
 
diff --git a/src/service/dht/gnunet-service-dht_neighbours.c 
b/src/service/dht/gnunet-service-dht_neighbours.c
index a2dc63808..dbbdf13eb 100644
--- a/src/service/dht/gnunet-service-dht_neighbours.c
+++ b/src/service/dht/gnunet-service-dht_neighbours.c
@@ -1300,7 +1300,7 @@ get_target_peers (const struct GNUNET_HashCode *key,
 static void
 hello_check (const struct GNUNET_DATACACHE_Block *bd)
 {
-  struct GNUNET_PeerIdentity pid;
+  struct GNUNET_PeerIdentity *pid;
   struct GNUNET_HELLO_Builder *b;
 
   if (GNUNET_BLOCK_TYPE_DHT_HELLO != bd->type)
@@ -1309,10 +1309,14 @@ hello_check (const struct GNUNET_DATACACHE_Block *bd)
   b = GNUNET_HELLO_builder_from_block (bd->data,
                                        bd->data_size);
   if (GNUNET_YES != disable_try_connect)
+  {
+    pid = GNUNET_new (struct GNUNET_PeerIdentity);
     GNUNET_HELLO_builder_iterate (b,
-                                  &pid,
+                                  pid,
                                   &GDS_try_connect,
-                                  &pid);
+                                  pid);
+    GNUNET_free (pid);
+  }
   GNUNET_HELLO_builder_free (b);
 }
 
diff --git a/src/service/dhtu/plugin_dhtu_gnunet.c 
b/src/service/dhtu/plugin_dhtu_gnunet.c
index 75f466916..247ab7090 100644
--- a/src/service/dhtu/plugin_dhtu_gnunet.c
+++ b/src/service/dhtu/plugin_dhtu_gnunet.c
@@ -408,6 +408,7 @@ peerinfo_cb (void *cls,
 {
   struct Plugin *plugin = cls;
   struct GNUNET_HELLO_Builder *builder;
+  struct GNUNET_PeerIdentity pid;
 
   if (NULL == hello)
     return;
@@ -419,7 +420,7 @@ peerinfo_cb (void *cls,
     return;
   builder = GNUNET_HELLO_builder_from_msg (hello);
   GNUNET_HELLO_builder_iterate (builder,
-                                (struct GNUNET_PeerIdentity *) peer,
+                                &pid,
                                 add_addr,
                                 plugin);
   GNUNET_HELLO_builder_free (builder);
diff --git a/src/service/hostlist/gnunet-daemon-hostlist_client.c 
b/src/service/hostlist/gnunet-daemon-hostlist_client.c
index 3f963332d..5a61e62c2 100644
--- a/src/service/hostlist/gnunet-daemon-hostlist_client.c
+++ b/src/service/hostlist/gnunet-daemon-hostlist_client.c
@@ -323,7 +323,7 @@ static struct GNUNET_PEERSTORE_Handle *peerstore;
 static void
 shc_cont (void *cls, int success)
 {
-  (void *) cls;
+  struct GNUNET_PEERSTORE_StoreHelloContextClosure *shc_cls =  cls;
 
   if (GNUNET_YES == success)
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -331,6 +331,7 @@ shc_cont (void *cls, int success)
   else
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Error storing hostlist entry!\n");
+  GNUNET_CONTAINER_DLL_remove (shc_head, shc_tail, shc_cls->shc);
 }
 
 
@@ -348,6 +349,7 @@ callback_download (void *ptr, size_t size, size_t nmemb, 
void *ctx)
 {
   static char download_buffer[GNUNET_MAX_MESSAGE_SIZE - 1];
   struct GNUNET_PEERSTORE_StoreHelloContext *shc;
+  struct GNUNET_PEERSTORE_StoreHelloContextClosure *shc_cls;
   const char *cbuf = ptr;
   const struct GNUNET_MessageHeader *msg;
   size_t total;
@@ -411,12 +413,16 @@ callback_download (void *ptr, size_t size, size_t nmemb, 
void *ctx)
       1,
       GNUNET_NO);
     stat_hellos_obtained++;
+    shc_cls = GNUNET_new (struct GNUNET_PEERSTORE_StoreHelloContextClosure);
     shc = GNUNET_PEERSTORE_hello_add (peerstore,
                                       msg,
                                       shc_cont,
-                                      NULL);
+                                      shc_cls);
     if (NULL != shc)
+    {
+      shc_cls->shc = shc;
       GNUNET_CONTAINER_DLL_insert (shc_head, shc_tail, shc);
+    }
     memmove (download_buffer, &download_buffer[msize], download_pos - msize);
     download_pos -= msize;
   }
diff --git a/src/service/topology/gnunet-daemon-topology.c 
b/src/service/topology/gnunet-daemon-topology.c
index 0f4b046f8..19bd29563 100644
--- a/src/service/topology/gnunet-daemon-topology.c
+++ b/src/service/topology/gnunet-daemon-topology.c
@@ -843,7 +843,7 @@ check_hello (void *cls, const struct GNUNET_MessageHeader 
*message)
 static void
 shc_cont (void *cls, int success)
 {
-  (void *) cls;
+  struct GNUNET_PEERSTORE_StoreHelloContextClosure *shc_cls =  cls;
 
   if (GNUNET_YES == success)
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -851,6 +851,7 @@ shc_cont (void *cls, int success)
   else
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Error storing hello!\n");
+  GNUNET_CONTAINER_DLL_remove (shc_head, shc_tail, shc_cls->shc);
 }
 
 
@@ -865,6 +866,7 @@ static void
 handle_hello (void *cls, const struct GNUNET_MessageHeader *message)
 {
   struct GNUNET_PEERSTORE_StoreHelloContext *shc;
+  struct GNUNET_PEERSTORE_StoreHelloContextClosure *shc_cls;
   const struct GNUNET_PeerIdentity *other = cls;
   struct GNUNET_HELLO_Builder *builder = GNUNET_HELLO_builder_from_msg (
     message);
@@ -877,8 +879,13 @@ handle_hello (void *cls, const struct GNUNET_MessageHeader 
*message)
                             1,
                             GNUNET_NO);
   GNUNET_HELLO_builder_from_msg (message);
-  shc = GNUNET_PEERSTORE_hello_add (ps, message, &shc_cont, NULL);
-  GNUNET_CONTAINER_DLL_insert (shc_head, shc_tail, shc);
+  shc_cls = GNUNET_new (struct GNUNET_PEERSTORE_StoreHelloContextClosure);
+  shc = GNUNET_PEERSTORE_hello_add (ps, message, &shc_cont, shc_cls);
+  if (NULL != shc)
+  {
+    shc_cls->shc = shc;
+    GNUNET_CONTAINER_DLL_insert (shc_head, shc_tail, shc);
+  }
   GNUNET_HELLO_builder_free (builder);
 }
 
diff --git a/src/service/transport/gnunet-service-transport.c 
b/src/service/transport/gnunet-service-transport.c
index a09eac11e..54d42fd51 100644
--- a/src/service/transport/gnunet-service-transport.c
+++ b/src/service/transport/gnunet-service-transport.c
@@ -8655,6 +8655,7 @@ handle_hello_for_incoming (void *cls,
                            const char *emsg)
 {
   struct GNUNET_HELLO_Builder *builder;
+  struct GNUNET_PeerIdentity *pid;
 
   if (NULL != emsg)
   {
@@ -8665,11 +8666,14 @@ handle_hello_for_incoming (void *cls,
   }
   if (0 == GNUNET_memcmp (peer, &GST_my_identity))
     return;
-  builder = GNUNET_HELLO_builder_new (peer);
+  builder = GNUNET_HELLO_builder_from_msg (hello);
+  pid = GNUNET_new (struct GNUNET_PeerIdentity);
   GNUNET_HELLO_builder_iterate (builder,
                                 (struct GNUNET_PeerIdentity *) peer,
                                 hello_for_incoming_cb,
                                 (struct GNUNET_PeerIdentity *) peer);
+  GNUNET_free (pid);
+  GNUNET_HELLO_builder_free (builder);
 }
 
 
@@ -11289,6 +11293,7 @@ handle_hello_for_client (void *cls,
 {
   (void) cls;
   struct GNUNET_HELLO_Builder *builder;
+  struct GNUNET_PeerIdentity *pid;
 
   if (NULL != emsg)
   {
@@ -11299,11 +11304,14 @@ handle_hello_for_client (void *cls,
   }
   if (0 == GNUNET_memcmp (peer, &GST_my_identity))
     return;
-  builder = GNUNET_HELLO_builder_new (peer);
+  builder = GNUNET_HELLO_builder_from_msg (hello);
+  pid = GNUNET_new (struct GNUNET_PeerIdentity);
   GNUNET_HELLO_builder_iterate (builder,
                                 (struct GNUNET_PeerIdentity *) peer,
                                 hello_for_client_cb,
                                 NULL);
+  GNUNET_free (pid);
+  GNUNET_HELLO_builder_free (builder);
 }
 
 
diff --git a/src/service/transport/test_tng_defaults.conf 
b/src/service/transport/test_tng_defaults.conf
index e37dab25e..81dbb5bd7 100644
--- a/src/service/transport/test_tng_defaults.conf
+++ b/src/service/transport/test_tng_defaults.conf
@@ -1,4 +1,4 @@
-@INLINE@ ../../contrib/conf/gnunet/no_forcestart.conf
+@INLINE@ ../../../contrib/conf/gnunet/no_forcestart.conf
 
 [PATHS]
 GNUNET_TEST_HOME = $GNUNET_TMP/test-tng/

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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