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:
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.
*