commit 864110d3d23724a50ddc974ffb4b5de4addea958
parent ca161736d0d14109a22eadd22207e6eba37d7db9
Author: Jacki <jacki@thejackimonster.de>
Date: Mon, 19 Feb 2024 01:50:58 +0100
Fix handling of deleted messages for async callback processing
Signed-off-by: Jacki <jacki@thejackimonster.de>
Diffstat:
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/gnunet_chat_contact_intern.c b/src/gnunet_chat_contact_intern.c
@@ -74,7 +74,8 @@ it_contact_find_rejection (void *cls,
const struct GNUNET_CHAT_Message *message = value;
- if (GNUNET_YES != message_has_msg(message))
+ if ((GNUNET_YES != message_has_msg(message)) ||
+ (message->flags & GNUNET_MESSENGER_FLAG_DELETE))
return GNUNET_YES;
if (message->flags & GNUNET_MESSENGER_FLAG_SENT)
diff --git a/src/gnunet_chat_handle_intern.c b/src/gnunet_chat_handle_intern.c
@@ -974,9 +974,6 @@ skip_sender_handing:
handle->msg_cb(handle->msg_cls, context, message);
clear_dependencies:
- if (GNUNET_MESSENGER_FLAG_DELETE & message->flags)
- message->msg = NULL;
-
GNUNET_CONTAINER_multihashmap_get_multiple(context->dependencies,
&(message->hash),
it_context_iterate_dependencies,
@@ -1066,6 +1063,9 @@ on_handle_message (void *cls,
if (message)
{
+ if (message->flags & GNUNET_MESSENGER_FLAG_DELETE)
+ return;
+
message_update_msg (message, flags, msg);
if (0 == (message->flags & GNUNET_MESSENGER_FLAG_UPDATE))
diff --git a/src/gnunet_chat_message.c b/src/gnunet_chat_message.c
@@ -89,7 +89,8 @@ message_update_msg (struct GNUNET_CHAT_Message* message,
{
GNUNET_assert((message) && (msg));
- if (message->flag != GNUNET_CHAT_FLAG_NONE)
+ if ((GNUNET_YES != message_has_msg(message)) ||
+ (message->flags & GNUNET_MESSENGER_FLAG_DELETE))
return;
if (flags & GNUNET_MESSENGER_FLAG_UPDATE)