From 06f300a42c4c627b6f1817bd48d92f083ffd9883 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 18 Oct 2019 14:50:25 +0200 Subject: Move message sent by us logic in own function --- src/xmpp/message.c | 16 ++++++++++++++++ src/xmpp/message.h | 1 + 2 files changed, 17 insertions(+) (limited to 'src/xmpp') diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 84c85471..78364ca2 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -1158,3 +1158,19 @@ _send_message_stanza(xmpp_stanza_t *const stanza) } xmpp_free(connection_get_ctx(), text); } + +bool message_is_sent_by_us(ProfMessage *message) { + // we check the for this we calculate a hash into it so we can detect + // whether this client sent it. See connection_create_stanza_id() + if (message->id != NULL) { + gsize tmp_len; + char *tmp = (char*)g_base64_decode(message->id, &tmp_len); + + // our client sents at least 10 for the identifier + random message bytes + if ((tmp_len > 10) || (g_strcmp0(&tmp[10], connection_get_profanity_identifier()) == 0)) { + return TRUE; + } + } + + return FALSE; +} diff --git a/src/xmpp/message.h b/src/xmpp/message.h index badfba72..154fff49 100644 --- a/src/xmpp/message.h +++ b/src/xmpp/message.h @@ -67,5 +67,6 @@ void message_free(ProfMessage *message); void message_handlers_init(void); void message_handlers_clear(void); void message_pubsub_event_handler_add(const char *const node, ProfMessageCallback func, ProfMessageFreeCallback free_func, void *userdata); +bool message_is_sent_by_us(ProfMessage *message); #endif -- cgit 1.4.1-2-gfad0