gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] branch master updated (7317fe5b9 -> d8f23ce7e)


From: gnunet
Subject: [gnunet] branch master updated (7317fe5b9 -> d8f23ce7e)
Date: Sat, 02 Apr 2022 20:04:01 +0200

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

thejackimonster pushed a change to branch master
in repository gnunet.

    from 7317fe5b9 -unused
     new e95235a5f -implement messenger key update, fix ego store operations
     new d8f23ce7e -add include for type fd_set

The 2 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_network_lib.h                   |  10 +-
 src/messenger/gnunet-service-messenger_ego_store.c | 175 ++++++++++++++++++---
 src/messenger/gnunet-service-messenger_ego_store.h |  57 ++++++-
 src/messenger/gnunet-service-messenger_handle.c    |  56 +++----
 4 files changed, 240 insertions(+), 58 deletions(-)

diff --git a/src/include/gnunet_network_lib.h b/src/include/gnunet_network_lib.h
index ff1e853f5..b1cf58711 100644
--- a/src/include/gnunet_network_lib.h
+++ b/src/include/gnunet_network_lib.h
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2009-2013 GNUnet e.V.
+     Copyright (C) 2009-2013, 2022 GNUnet e.V.
 
      GNUnet is free software: you can redistribute it and/or modify it
      under the terms of the GNU Affero General Public License as published
@@ -20,6 +20,7 @@
 
 /**
  * @author Nils Durner
+ * @author Tobias Frisch
  *
  * @file
  * Basic low-level networking interface
@@ -39,6 +40,13 @@ extern "C"
 #endif
 #endif
 
+//#ifdef HAVE_SYS_SELECT_H
+/*
+ * Include "sys/select.h" because it is required to use
+ * "fd_set" in "struct GNUNET_NETWORK_FDSet"!
+ */
+#include <sys/select.h>
+//#endif
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
diff --git a/src/messenger/gnunet-service-messenger_ego_store.c 
b/src/messenger/gnunet-service-messenger_ego_store.c
index c460ac1c7..bcc301e95 100644
--- a/src/messenger/gnunet-service-messenger_ego_store.c
+++ b/src/messenger/gnunet-service-messenger_ego_store.c
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2020--2021 GNUnet e.V.
+   Copyright (C) 2020--2022 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -33,14 +33,21 @@ callback_update_ego (void *cls,
                      void **ctx,
                      const char *identifier)
 {
-  if ((!ego) || (!identifier))
+  if ((!ctx) || (!identifier))
     return;
 
   struct GNUNET_MESSENGER_EgoStore *store = cls;
 
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "New ego in use: '%s'\n", identifier);
-
-  update_store_ego (store, identifier, GNUNET_IDENTITY_ego_get_private_key 
(ego));
+  if (ego)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New ego in use: '%s'\n", identifier);
+    update_store_ego (store, identifier, GNUNET_IDENTITY_ego_get_private_key 
(ego));
+  }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ego got deleted: '%s'\n", 
identifier);
+    delete_store_ego (store, identifier);
+  }
 }
 
 void
@@ -52,6 +59,7 @@ init_ego_store(struct GNUNET_MESSENGER_EgoStore *store,
   store->cfg = config;
   store->identity = GNUNET_IDENTITY_connect (config, &callback_update_ego, 
store);
   store->egos = GNUNET_CONTAINER_multihashmap_create (8, GNUNET_NO);
+  store->handles = GNUNET_CONTAINER_multihashmap_create (8, GNUNET_NO);
 
   store->lu_start = NULL;
   store->lu_end = NULL;
@@ -60,7 +68,6 @@ init_ego_store(struct GNUNET_MESSENGER_EgoStore *store,
   store->op_end = NULL;
 }
 
-
 static int
 iterate_destroy_egos (void *cls,
                       const struct GNUNET_HashCode *key,
@@ -109,6 +116,8 @@ clear_ego_store(struct GNUNET_MESSENGER_EgoStore *store)
   GNUNET_CONTAINER_multihashmap_iterate (store->egos, iterate_destroy_egos, 
NULL);
   GNUNET_CONTAINER_multihashmap_destroy (store->egos);
 
+  GNUNET_CONTAINER_multihashmap_destroy (store->handles);
+
   if (store->identity)
   {
     GNUNET_IDENTITY_disconnect (store->identity);
@@ -117,6 +126,16 @@ clear_ego_store(struct GNUNET_MESSENGER_EgoStore *store)
   }
 }
 
+static int
+iterate_create_ego (void *cls,
+                    const struct GNUNET_HashCode *key,
+                    void *value)
+{
+  struct GNUNET_MESSENGER_SrvHandle *handle = value;
+  set_handle_ego (handle, (struct GNUNET_MESSENGER_Ego*) cls);
+  return GNUNET_YES;
+}
+
 static void
 callback_ego_create (void *cls,
                      const struct GNUNET_IDENTITY_PrivateKey *key,
@@ -125,21 +144,22 @@ callback_ego_create (void *cls,
   struct GNUNET_MESSENGER_EgoOperation *element = cls;
   struct GNUNET_MESSENGER_EgoStore *store = element->store;
 
-  GNUNET_assert(element->identifier);
+  GNUNET_assert (element->identifier);
 
   if (emsg)
-    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "%s\n", emsg);
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%s\n", emsg);
 
   if (key)
   {
-    struct GNUNET_MESSENGER_SrvHandle *handle = element->handle;
-
     struct GNUNET_MESSENGER_Ego *msg_ego = update_store_ego (store, 
element->identifier, key);
 
-    set_handle_ego (handle, msg_ego);
+    struct GNUNET_HashCode hash;
+    GNUNET_CRYPTO_hash (element->identifier, strlen (element->identifier), 
&hash);
+
+    GNUNET_CONTAINER_multihashmap_get_multiple (store->handles, &hash, 
iterate_create_ego, msg_ego);
   }
   else
-    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Creating ego failed!\n");
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating ego failed!\n");
 
   GNUNET_CONTAINER_DLL_remove (store->op_start, store->op_end, element);
   GNUNET_free (element->identifier);
@@ -148,15 +168,16 @@ callback_ego_create (void *cls,
 
 void
 create_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
-                  const char *identifier,
-                  void *handle)
+                  const char *identifier)
 {
   GNUNET_assert ((store) && (identifier));
 
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store create ego: %s\n", identifier);
+
   struct GNUNET_MESSENGER_EgoOperation *element = GNUNET_new (struct 
GNUNET_MESSENGER_EgoOperation);
 
   element->store = store;
-  element->handle = handle;
+  element->cls = NULL;
 
   element->identifier = GNUNET_strdup (identifier);
 
@@ -166,6 +187,38 @@ create_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
   GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element);
 }
 
+void
+bind_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                const char *identifier,
+                void *handle)
+{
+  GNUNET_assert ((store) && (identifier) && (handle));
+
+  struct GNUNET_HashCode hash;
+  GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
+
+  if (GNUNET_YES == 
GNUNET_CONTAINER_multihashmap_contains_value(store->handles, &hash, handle))
+    return;
+
+  GNUNET_CONTAINER_multihashmap_put(store->handles, &hash, handle, 
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+}
+
+void
+unbind_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                  const char *identifier,
+                  void *handle)
+{
+  GNUNET_assert ((store) && (identifier) && (handle));
+
+  struct GNUNET_HashCode hash;
+  GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
+
+  if (GNUNET_YES != 
GNUNET_CONTAINER_multihashmap_contains_value(store->handles, &hash, handle))
+    return;
+
+  GNUNET_CONTAINER_multihashmap_remove(store->handles, &hash, handle);
+}
+
 static void
 callback_ego_lookup (void *cls,
                      struct GNUNET_IDENTITY_Ego *ego)
@@ -173,7 +226,7 @@ callback_ego_lookup (void *cls,
   struct GNUNET_MESSENGER_EgoLookup *element = cls;
   struct GNUNET_MESSENGER_EgoStore *store = element->store;
 
-  GNUNET_assert(element->identifier);
+  GNUNET_assert (element->identifier);
 
   struct GNUNET_MESSENGER_Ego *msg_ego;
 
@@ -200,6 +253,8 @@ lookup_store_ego(struct GNUNET_MESSENGER_EgoStore *store,
 {
   GNUNET_assert (store);
 
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store lookup ego: %s\n", identifier);
+
   if (!identifier)
   {
     lookup(cls, identifier, NULL);
@@ -231,12 +286,14 @@ lookup_store_ego(struct GNUNET_MESSENGER_EgoStore *store,
 }
 
 struct GNUNET_MESSENGER_Ego*
-update_store_ego(struct GNUNET_MESSENGER_EgoStore *store,
-                 const char *identifier,
-                 const struct GNUNET_IDENTITY_PrivateKey *key)
+update_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                  const char *identifier,
+                  const struct GNUNET_IDENTITY_PrivateKey *key)
 {
   GNUNET_assert ((store) && (identifier) && (key));
 
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store update ego: %s\n", identifier);
+
   struct GNUNET_HashCode hash;
   GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
 
@@ -256,6 +313,29 @@ update_store_ego(struct GNUNET_MESSENGER_EgoStore *store,
   return ego;
 }
 
+void
+delete_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                  const char *identifier)
+{
+  GNUNET_assert ((store) && (identifier));
+
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store delete ego: %s\n", identifier);
+
+  struct GNUNET_HashCode hash;
+  GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
+
+  struct GNUNET_MESSENGER_Ego *ego = GNUNET_CONTAINER_multihashmap_get 
(store->egos, &hash);
+
+  if (ego)
+  {
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Ego is not stored!\n");
+    return;
+  }
+
+  GNUNET_CONTAINER_multihashmap_remove (store->egos, &hash, ego);
+  GNUNET_free(ego);
+}
+
 static void
 callback_ego_rename (void *cls,
                      const char *emsg)
@@ -263,19 +343,24 @@ callback_ego_rename (void *cls,
   struct GNUNET_MESSENGER_EgoOperation *element = cls;
   struct GNUNET_MESSENGER_EgoStore *store = element->store;
 
-  GNUNET_assert(element->identifier);
+  GNUNET_assert (element->identifier);
 
   if (emsg)
-    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "%s\n", emsg);
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%s\n", emsg);
 
   struct GNUNET_HashCode hash;
   GNUNET_CRYPTO_hash (element->identifier, strlen (element->identifier), 
&hash);
 
   struct GNUNET_MESSENGER_Ego *ego = GNUNET_CONTAINER_multihashmap_get 
(store->egos, &hash);
 
+  if (!ego)
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Ego is not stored!\n");
+
+  char *identifier = (char*) element->cls;
+
   if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_remove (store->egos, &hash, 
ego))
   {
-    GNUNET_CRYPTO_hash ((char*) element->handle, strlen ((char*) 
element->handle), &hash);
+    GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
 
     GNUNET_CONTAINER_multihashmap_put (store->egos, &hash, ego,
                                        
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
@@ -283,7 +368,7 @@ callback_ego_rename (void *cls,
   else
     GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Renaming ego failed!\n");
 
-  GNUNET_free (element->handle);
+  GNUNET_free (identifier);
 
   GNUNET_CONTAINER_DLL_remove (store->op_start, store->op_end, element);
   GNUNET_free (element->identifier);
@@ -297,10 +382,12 @@ rename_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
 {
   GNUNET_assert ((store) && (old_identifier) && (new_identifier));
 
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store rename ego: %s -> %s\n", 
old_identifier, new_identifier);
+
   struct GNUNET_MESSENGER_EgoOperation *element = GNUNET_new (struct 
GNUNET_MESSENGER_EgoOperation);
 
   element->store = store;
-  element->handle = GNUNET_strdup (new_identifier);
+  element->cls = GNUNET_strdup (new_identifier);
 
   element->identifier = GNUNET_strdup (old_identifier);
 
@@ -308,3 +395,43 @@ rename_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
 
   GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element);
 }
+
+
+static void
+callback_ego_delete (void *cls,
+                     const char *emsg)
+{
+  struct GNUNET_MESSENGER_EgoOperation *element = cls;
+  struct GNUNET_MESSENGER_EgoStore *store = element->store;
+
+  GNUNET_assert (element->identifier);
+
+  if (emsg)
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%s\n", emsg);
+
+  create_store_ego (store, element->identifier);
+
+  GNUNET_CONTAINER_DLL_remove (store->op_start, store->op_end, element);
+  GNUNET_free (element->identifier);
+  GNUNET_free (element);
+}
+
+void
+renew_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                 const char *identifier)
+{
+  GNUNET_assert ((store) && (identifier));
+
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Store renew ego: %s\n", identifier);
+
+  struct GNUNET_MESSENGER_EgoOperation *element = GNUNET_new (struct 
GNUNET_MESSENGER_EgoOperation);
+
+  element->store = store;
+  element->cls = NULL;
+
+  element->identifier = GNUNET_strdup (identifier);
+
+  element->operation = GNUNET_IDENTITY_delete(store->identity, identifier, 
callback_ego_delete, element);
+
+  GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element);
+}
diff --git a/src/messenger/gnunet-service-messenger_ego_store.h 
b/src/messenger/gnunet-service-messenger_ego_store.h
index 4222a4e91..4ed2bbf6d 100644
--- a/src/messenger/gnunet-service-messenger_ego_store.h
+++ b/src/messenger/gnunet-service-messenger_ego_store.h
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2020--2021 GNUnet e.V.
+   Copyright (C) 2020--2022 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -62,7 +62,8 @@ struct GNUNET_MESSENGER_EgoOperation
   struct GNUNET_IDENTITY_Operation *operation;
 
   struct GNUNET_MESSENGER_EgoStore *store;
-  void *handle;
+
+  void *cls;
 
   char *identifier;
 };
@@ -73,6 +74,7 @@ struct GNUNET_MESSENGER_EgoStore
 
   struct GNUNET_IDENTITY_Handle *identity;
   struct GNUNET_CONTAINER_MultiHashMap *egos;
+  struct GNUNET_CONTAINER_MultiHashMap *handles;
 
   struct GNUNET_MESSENGER_EgoLookup *lu_start;
   struct GNUNET_MESSENGER_EgoLookup *lu_end;
@@ -101,15 +103,38 @@ clear_ego_store (struct GNUNET_MESSENGER_EgoStore *store);
 
 /**
  * Creates a new EGO which will be registered to a <i>store</i> under
- * a specific <i>identifier</i>. A given <i>handle</i> will be informed
- * about the creation and changes its EGO accordingly.
+ * a specific <i>identifier</i>.
  *
  * @param[in/out] store EGO-store
  * @param[in] identifier Identifier string
- * @param[in/out] handle Handle or NULL
  */
 void
 create_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                  const char *identifier);
+
+/**
+ * Binds an EGO which was registered to a <i>store</i> under
+ * a specific <i>identifier</i> to a given <i>handle</i>
+ *
+ * @param[in/out] store EGO-store
+ * @param[in] identifier Identifier string
+ * @param[in/out] handle Handle
+ */
+void
+bind_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                const char *identifier,
+                void *handle);
+
+/**
+ * Binds an EGO which was registered to a <i>store</i> under
+ * a specific <i>identifier</i> to a given <i>handle</i>
+ *
+ * @param[in/out] store EGO-store
+ * @param[in] identifier Identifier string
+ * @param[in/out] handle Handle
+ */
+void
+unbind_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
                   const char *identifier,
                   void *handle);
 
@@ -142,6 +167,17 @@ update_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
                   const char *identifier,
                   const struct GNUNET_IDENTITY_PrivateKey *key);
 
+/**
+ * Deletes the registration of an EGO in a <i>store</i> under
+ * a specific <i>identifier</i>.
+ *
+ * @param[in/out] store EGO-store
+ * @param[in] identifier Identifier string
+ */
+void
+delete_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                  const char *identifier);
+
 /**
  * Updates the location of a registered EGO in a <i>store</i> to
  * a different one under a specific <i>new_identifier<i> replacing
@@ -156,4 +192,15 @@ rename_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
                   const char *old_identifier,
                   const char *new_identifier);
 
+/**
+ * Replaces the registered EGO in a <i>store</i> under a specific
+ * <i>identifier</i> with a newly created one.
+ *
+ * @param[in/out] store EGO-store
+ * @param[in] identifier Identifier string
+ */
+void
+renew_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
+                 const char *identifier);
+
 #endif //GNUNET_SERVICE_MESSENGER_EGO_STORE_H
diff --git a/src/messenger/gnunet-service-messenger_handle.c 
b/src/messenger/gnunet-service-messenger_handle.c
index 341bb7251..218482e45 100644
--- a/src/messenger/gnunet-service-messenger_handle.c
+++ b/src/messenger/gnunet-service-messenger_handle.c
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2020--2021 GNUnet e.V.
+   Copyright (C) 2020--2022 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -68,7 +68,13 @@ destroy_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
     save_handle_configuration (handle);
 
   if (handle->name)
+  {
+    struct GNUNET_MESSENGER_EgoStore *store = 
get_service_ego_store(handle->service);
+
+    unbind_store_ego(store, handle->name, handle);
+
     GNUNET_free(handle->name);
+  }
 
   GNUNET_CONTAINER_multihashmap_iterate (handle->member_ids, 
iterate_free_member_ids, NULL);
   GNUNET_CONTAINER_multihashmap_destroy (handle->member_ids);
@@ -317,24 +323,26 @@ callback_update_handle (void *cls,
 {
   struct GNUNET_MESSENGER_SrvHandle *handle = cls;
 
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Updating handle...\n");
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Updating handle...\n");
 
   struct GNUNET_MESSENGER_EgoStore *store = 
get_service_ego_store(handle->service);
 
+  bind_store_ego(store, handle->name, handle);
+
   if (!ego)
-    create_store_ego(store, handle->name, handle);
+    create_store_ego (store, handle->name);
   else
-    change_handle_ego (handle, ego);
+    renew_store_ego (store, handle->name);
 }
 
 void
 update_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
 {
-  GNUNET_assert(handle);
+  GNUNET_assert (handle);
 
   if (!handle->name)
   {
-    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Updating handle failed: Name is 
required!\n");
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Updating handle failed: Name is 
required!\n");
     return;
   }
 
@@ -360,46 +368,38 @@ callback_set_handle_name (void *cls,
 
   struct GNUNET_MESSENGER_EgoStore *store = 
get_service_ego_store(handle->service);
 
-  int rename_ego_in_store = handle->ego? GNUNET_YES : GNUNET_NO;
-
   char *old_dir;
   get_handle_data_subdir (handle, handle->name, &old_dir);
 
   char *new_dir;
   get_handle_data_subdir (handle, name, &new_dir);
 
-  int result = 0;
+  if ((GNUNET_YES == GNUNET_DISK_directory_test (new_dir, GNUNET_NO)) &&
+      (GNUNET_OK != GNUNET_DISK_directory_remove(new_dir)))
+    goto free_dirs;
 
   if (GNUNET_YES == GNUNET_DISK_directory_test (old_dir, GNUNET_YES))
   {
     GNUNET_DISK_directory_create_for_file (new_dir);
 
-    result = rename (old_dir, new_dir);
+    if (0 != rename (old_dir, new_dir))
+      goto free_dirs;
   }
-  else if (GNUNET_YES == GNUNET_DISK_directory_test (new_dir, GNUNET_NO))
-    result = -1;
-
-  if (0 == result)
-  {
-    struct GNUNET_MESSENGER_MessageHandle msg_handle;
 
-    msg_handle.handle = handle;
-    msg_handle.message = create_message_name (name);
-
-    GNUNET_CONTAINER_multihashmap_iterate (handle->member_ids, 
iterate_send_message, &msg_handle);
+  if (handle->ego)
+    rename_store_ego(store, handle->name, name);
 
-    destroy_message (msg_handle.message);
+  struct GNUNET_MESSENGER_MessageHandle msg_handle;
+  msg_handle.handle = handle;
+  msg_handle.message = create_message_name (name);
 
-    change_handle_name (handle, name);
-  }
-  else
-    rename_ego_in_store = GNUNET_NO;
+  GNUNET_CONTAINER_multihashmap_iterate (handle->member_ids, 
iterate_send_message, &msg_handle);
+  destroy_message (msg_handle.message);
+  change_handle_name (handle, name);
 
+free_dirs:
   GNUNET_free(old_dir);
   GNUNET_free(new_dir);
-
-  if (GNUNET_YES == rename_ego_in_store)
-    rename_store_ego(store, handle->name, name);
 }
 
 void

-- 
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]