about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-10-18 14:50:25 +0200
committerMichael Vetter <jubalh@iodoru.org>2019-10-18 14:50:25 +0200
commit06f300a42c4c627b6f1817bd48d92f083ffd9883 (patch)
treeb1aab57931696be76a7a8c2b470c78f2a91687c6 /src
parent3bd5c9f535327b11c8417456fa0268b217de666e (diff)
downloadprofani-tty-06f300a42c4c627b6f1817bd48d92f083ffd9883.tar.gz
Move message sent by us logic in own function
Diffstat (limited to 'src')
-rw-r--r--src/event/server_events.c16
-rw-r--r--src/xmpp/message.c16
-rw-r--r--src/xmpp/message.h1
3 files changed, 21 insertions, 12 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index 6b1b6611..6b8792a8 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -304,19 +304,11 @@ sv_ev_room_message(ProfMessage *message)
 
     char *mynick = muc_nick(mucwin->roomjid);
 
-    // messages from ourselves
-    if (g_strcmp0(mynick, message->jid->resourcepart) == 0 && message->id != NULL) {
-        // test if message was sent from this client
-        // we check the </origin-id> for this we calculate a hash into it so we can detect
-        // whether this client sent it. See connection_create_stanza_id()
-        gsize tmp_len;
-        char *tmp = (char*)g_base64_decode(message->id, &tmp_len);
-        // log if not from this client. our client sents at least 10 for the identifier + random message bytes
-        if ((tmp_len < 11) || (g_strcmp0(&tmp[10], connection_get_profanity_identifier()) != 0)) {
-            _log_muc(message);
-        }
-    // messages from others
+    // messages from ourselves (account and this client)
+    if (g_strcmp0(mynick, message->jid->resourcepart) == 0 && message_is_sent_by_us(message)) {
+        _log_muc(message);
     } else {
+        // messages from others
         _log_muc(message);
     }
 
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 </origin-id> 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