gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] 01/02: -fix missing own member session during room opening


From: gnunet
Subject: [gnunet] 01/02: -fix missing own member session during room opening
Date: Fri, 19 Nov 2021 21:02:26 +0100

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

thejackimonster pushed a commit to branch master
in repository gnunet.

commit 020bc56abfb923fa2f4c770be71eb8b26adfbb89
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Fri Nov 19 20:18:07 2021 +0100

    -fix missing own member session during room opening
    
    Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
 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    | 11 ++++++++---
 src/messenger/gnunet-service-messenger_service.c |  2 +-
 5 files changed, 20 insertions(+), 13 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..77657591e 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));
   }
 }
 
@@ -377,7 +380,9 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
   }
 
 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]