[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.