libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

commit 7d43dc0a81ff20c11ae497fece2b414fd241a00c
parent f3336d34b37cf157ed8b4dbcb63994c4a8ba06e5
Author: Jacki <jacki@thejackimonster.de>
Date:   Sat, 10 Feb 2024 17:38:38 +0100

Abstract function to check for message content

Signed-off-by: Jacki <jacki@thejackimonster.de>

Diffstat:
Msrc/gnunet_chat_handle_intern.c | 4++--
Msrc/gnunet_chat_lib.c | 23++++++++++++++---------
Msrc/gnunet_chat_message.c | 17+++++++++++++++++
Msrc/gnunet_chat_message.h | 11+++++++++++
4 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/src/gnunet_chat_handle_intern.c b/src/gnunet_chat_handle_intern.c @@ -779,7 +779,7 @@ on_handle_message_callback(void *cls) message->task = NULL; - if (! message->msg) + if (GNUNET_YES != message_has_msg(message)) return; const struct GNUNET_TIME_Absolute timestamp = GNUNET_TIME_absolute_ntoh( @@ -1040,7 +1040,7 @@ on_handle_message (void *cls, context->messages, &(msg->body.deletion.hash) ); - if ((!message) || (message->msg) || + if ((!message) || (GNUNET_YES == message_has_msg(message)) || (0 == (message->flags & GNUNET_MESSENGER_FLAG_DELETE))) return; } diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c @@ -1381,7 +1381,7 @@ GNUNET_CHAT_context_send_read_receipt (struct GNUNET_CHAT_Context *context, return GNUNET_SYSERR; } - if ((!(message->msg)) || + if ((GNUNET_YES != message_has_msg(message)) || (GNUNET_MESSENGER_KIND_TEXT != message->msg->header.kind)) goto skip_filter; @@ -1592,7 +1592,7 @@ GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message) break; } - if (!(message->msg)) + if (GNUNET_YES != message_has_msg(message)) return GNUNET_CHAT_KIND_UNKNOWN; return util_message_kind_from_kind(message->msg->header.kind); @@ -1604,7 +1604,7 @@ GNUNET_CHAT_message_get_timestamp (const struct GNUNET_CHAT_Message *message) { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg))) + if ((!message) || (GNUNET_YES != message_has_msg(message))) return GNUNET_TIME_absolute_get_zero_(); return GNUNET_TIME_absolute_ntoh(message->msg->header.timestamp); @@ -1703,7 +1703,8 @@ GNUNET_CHAT_message_get_read_receipt (const struct GNUNET_CHAT_Message *message, { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg)) || (!(message->context))) + if ((!message) || (GNUNET_YES != message_has_msg(message)) || + (!(message->context))) return GNUNET_SYSERR; struct GNUNET_CHAT_MessageIterateReadReceipts it; @@ -1722,7 +1723,7 @@ GNUNET_CHAT_message_get_text (const struct GNUNET_CHAT_Message *message) { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg))) + if ((!message) || (GNUNET_YES != message_has_msg(message))) return NULL; if (GNUNET_CHAT_FLAG_WARNING == message->flag) @@ -1744,7 +1745,8 @@ GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message) { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg)) || (!(message->context))) + if ((!message) || (GNUNET_YES != message_has_msg(message)) || + (!(message->context))) return NULL; if (GNUNET_MESSENGER_KIND_FILE != message->msg->header.kind) @@ -1762,7 +1764,8 @@ GNUNET_CHAT_message_get_invitation (const struct GNUNET_CHAT_Message *message) { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg)) || (!(message->context))) + if ((!message) || (GNUNET_YES != message_has_msg(message)) || + (!(message->context))) return NULL; if (GNUNET_MESSENGER_KIND_INVITE != message->msg->header.kind) @@ -1780,7 +1783,8 @@ GNUNET_CHAT_message_get_target (const struct GNUNET_CHAT_Message *message) { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg)) || (!(message->context))) + if ((!message) || (GNUNET_YES != message_has_msg(message)) || + (!(message->context))) return NULL; struct GNUNET_CHAT_Message *target; @@ -1804,7 +1808,8 @@ GNUNET_CHAT_message_delete (const struct GNUNET_CHAT_Message *message, { GNUNET_CHAT_VERSION_ASSERT(); - if ((!message) || (!(message->msg)) || (!(message->context))) + if ((!message) || (GNUNET_YES != message_has_msg(message)) || + (!(message->context))) return GNUNET_SYSERR; GNUNET_MESSENGER_delete_message(message->context->room, &(message->hash), delay); diff --git a/src/gnunet_chat_message.c b/src/gnunet_chat_message.c @@ -66,6 +66,20 @@ message_create_internally (struct GNUNET_CHAT_Context *context, return message; } +enum GNUNET_GenericReturnValue +message_has_msg (const struct GNUNET_CHAT_Message* message) +{ + GNUNET_assert(message); + + if (message->flag != GNUNET_CHAT_FLAG_NONE) + return GNUNET_NO; + + if (message->msg) + return GNUNET_YES; + else + return GNUNET_NO; +} + void message_update_msg (struct GNUNET_CHAT_Message* message, enum GNUNET_MESSENGER_MessageFlags flags, @@ -73,6 +87,9 @@ message_update_msg (struct GNUNET_CHAT_Message* message, { GNUNET_assert(message); + if (message->flag != GNUNET_CHAT_FLAG_NONE) + return; + if (flags & GNUNET_MESSENGER_FLAG_UPDATE) message->msg = msg; else if (flags & GNUNET_MESSENGER_FLAG_DELETE) diff --git a/src/gnunet_chat_message.h b/src/gnunet_chat_message.h @@ -25,6 +25,7 @@ #ifndef GNUNET_CHAT_MESSAGE_H_ #define GNUNET_CHAT_MESSAGE_H_ +#include <gnunet/gnunet_common.h> #include <gnunet/gnunet_messenger_service.h> #include <gnunet/gnunet_util_lib.h> @@ -97,6 +98,16 @@ message_create_internally (struct GNUNET_CHAT_Context *context, const char *warning); /** + * Returns whether a chat <i>message</i> contains an actual + * message from the messenger service. + * + * @param[in] message Chat message + * @return #GNUNET_YES if it contains message content, #GNUNET_NO otherwise + */ +enum GNUNET_GenericReturnValue +message_has_msg (const struct GNUNET_CHAT_Message* message); + +/** * Updates a chat message representing an actual message * from the messenger service. *