gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] branch master updated (7e5fdf075 -> 820ba28f3)


From: gnunet
Subject: [gnunet] branch master updated (7e5fdf075 -> 820ba28f3)
Date: Fri, 19 Nov 2021 21:02:25 +0100

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

thejackimonster pushed a change to branch master
in repository gnunet.

    from 7e5fdf075 Merge branch 'master' of ssh://git.gnunet.org/gnunet
     new 020bc56ab -fix missing own member session during room opening
     new 820ba28f3 -fix missing join messages in known rooms

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/messenger/gnunet-service-messenger.c         |  2 +-
 src/messenger/gnunet-service-messenger_handle.c  | 14 ++++++++------
 src/messenger/gnunet-service-messenger_handle.h  |  4 ++--
 src/messenger/gnunet-service-messenger_room.c    | 19 +++++++++----------
 src/messenger/gnunet-service-messenger_service.c |  2 +-
 5 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/messenger/gnunet-service-messenger.c 
b/src/messenger/gnunet-service-messenger.c
index a994e16ee..67a8b16e3 100644
--- a/src/messenger/gnunet-service-messenger.c
+++ b/src/messenger/gnunet-service-messenger.c
@@ -310,7 +310,7 @@ callback_found_message (void *cls,
   struct GNUNET_MESSENGER_MemberSession *session = 
get_member_session_of(member, message, hash);
 
   if (session)
-    notify_handle_message (msg_client->handle, get_room_key(room), session, 
message, hash);
+    notify_handle_message (msg_client->handle, room, session, message, hash);
 }
 
 static void
diff --git a/src/messenger/gnunet-service-messenger_handle.c 
b/src/messenger/gnunet-service-messenger_handle.c
index 2095f8b29..fa6830697 100644
--- a/src/messenger/gnunet-service-messenger_handle.c
+++ b/src/messenger/gnunet-service-messenger_handle.c
@@ -501,14 +501,14 @@ get_next_member_session_contect(const struct 
GNUNET_MESSENGER_MemberSession *ses
 
 static const struct GNUNET_MESSENGER_MemberSession*
 get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle,
+                           struct GNUNET_MESSENGER_SrvRoom *room,
                            const struct GNUNET_HashCode *key)
 {
-  GNUNET_assert((handle) && (key) && (handle->service));
+  GNUNET_assert((handle) && (room) && (key) && (handle->service));
 
   const struct GNUNET_ShortHashCode *id = get_handle_member_id(handle, key);
-  struct GNUNET_MESSENGER_SrvRoom *room = get_service_room(handle->service, 
key);
 
-  if ((!id) || (!room))
+  if (!id)
     return NULL;
 
   struct GNUNET_MESSENGER_MemberStore *store = get_room_member_store(room);
@@ -524,12 +524,14 @@ get_handle_member_session (struct 
GNUNET_MESSENGER_SrvHandle *handle,
 
 void
 notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
-                       const struct GNUNET_HashCode *key,
+                       struct GNUNET_MESSENGER_SrvRoom *room,
                        const struct GNUNET_MESSENGER_MemberSession *session,
                        const struct GNUNET_MESSENGER_Message *message,
                        const struct GNUNET_HashCode *hash)
 {
-  GNUNET_assert((handle) && (key) && (session) && (message) && (hash));
+  GNUNET_assert((handle) && (room) && (session) && (message) && (hash));
+
+  const struct GNUNET_HashCode *key = get_room_key(room);
 
   if ((!handle->mq) || (!get_handle_member_id (handle, key)))
   {
@@ -575,7 +577,7 @@ notify_handle_message (struct GNUNET_MESSENGER_SrvHandle 
*handle,
 
   msg->flags = (uint32_t) GNUNET_MESSENGER_FLAG_NONE;
 
-  if (get_handle_member_session(handle, key) == session)
+  if (get_handle_member_session(handle, room, key) == session)
     msg->flags |= (uint32_t) GNUNET_MESSENGER_FLAG_SENT;
 
   if (private_message)
diff --git a/src/messenger/gnunet-service-messenger_handle.h 
b/src/messenger/gnunet-service-messenger_handle.h
index 97a984721..4438570b9 100644
--- a/src/messenger/gnunet-service-messenger_handle.h
+++ b/src/messenger/gnunet-service-messenger_handle.h
@@ -219,14 +219,14 @@ send_handle_message (struct GNUNET_MESSENGER_SrvHandle 
*handle,
  * Notifies the handle that a new message was received or sent.
  *
  * @param[in/out] handle Handle
- * @param[in] key Key of room
+ * @param[in] room Room of the message
  * @param[in] session Member session
  * @param[in] message Message
  * @param[in] hash Hash of message
  */
 void
 notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
-                       const struct GNUNET_HashCode *key,
+                       struct GNUNET_MESSENGER_SrvRoom *room,
                        const struct GNUNET_MESSENGER_MemberSession *session,
                        const struct GNUNET_MESSENGER_Message *message,
                        const struct GNUNET_HashCode *hash);
diff --git a/src/messenger/gnunet-service-messenger_room.c 
b/src/messenger/gnunet-service-messenger_room.c
index 920abb10e..d34665511 100644
--- a/src/messenger/gnunet-service-messenger_room.c
+++ b/src/messenger/gnunet-service-messenger_room.c
@@ -212,7 +212,9 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Joining room: %s (%s)\n", GNUNET_h2s 
(get_room_key (room)),
              GNUNET_sh2s (get_member_id(member)));
 
-  if (GNUNET_OK != change_handle_member_id (handle, get_room_key(room), 
get_member_id(member)))
+  const struct GNUNET_ShortHashCode *member_id = get_member_id(member);
+
+  if (GNUNET_OK != change_handle_member_id (handle, get_room_key(room), 
member_id))
     return GNUNET_NO;
 
   struct GNUNET_MESSENGER_Message *message = create_message_join 
(get_handle_ego (handle));
@@ -224,6 +226,7 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
     return GNUNET_NO;
   }
 
+  GNUNET_memcpy(&(message->header.sender_id), member_id, sizeof(*member_id));
   return send_room_message (room, handle, message);
 }
 
@@ -262,7 +265,7 @@ notify_about_members (struct GNUNET_MESSENGER_MemberNotify 
*notify,
     const struct GNUNET_MESSENGER_Message *message = 
get_store_message(message_store, &(element->hash));
 
     if (message)
-      notify_handle_message (notify->handle, get_room_key(notify->room), 
session, message, &(element->hash));
+      notify_handle_message (notify->handle, notify->room, session, message, 
&(element->hash));
   }
 }
 
@@ -359,12 +362,7 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
   const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (handle, 
get_room_key(room));
 
   struct GNUNET_MESSENGER_MemberStore *member_store = 
get_room_member_store(room);
-  struct GNUNET_MESSENGER_Member *member = get_store_member(member_store, 
member_id);
-
-  if (member)
-    goto exit_open_room;
-
-  member = add_store_member(member_store, member_id);
+  struct GNUNET_MESSENGER_Member *member = add_store_member(member_store, 
member_id);
 
   if ((GNUNET_NO == join_room (room, handle, member)) && (room->port))
   {
@@ -376,8 +374,9 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
     return GNUNET_NO;
   }
 
-exit_open_room:
-  return (room->port ? send_room_message (room, handle, create_message_peer 
(room->service)) : GNUNET_NO);
+  struct GNUNET_MESSENGER_Message *peer_msg = create_message_peer 
(room->service);
+  GNUNET_memcpy(&(peer_msg->header.sender_id), member_id, sizeof(*member_id));
+  return (room->port ? send_room_message (room, handle, peer_msg) : GNUNET_NO);
 }
 
 int
diff --git a/src/messenger/gnunet-service-messenger_service.c 
b/src/messenger/gnunet-service-messenger_service.c
index 91165cf63..b53b72af8 100644
--- a/src/messenger/gnunet-service-messenger_service.c
+++ b/src/messenger/gnunet-service-messenger_service.c
@@ -313,7 +313,7 @@ handle_service_message (struct GNUNET_MESSENGER_Service 
*service,
 
   while (element)
   {
-    notify_handle_message (element->handle, get_room_key(room), session, 
message, hash);
+    notify_handle_message (element->handle, room, session, message, hash);
     element = element->next;
   }
 }

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