about summary refs log tree commit diff stats
path: root/src/event/server_events.c
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-10-18 11:59:39 +0200
committerMichael Vetter <jubalh@iodoru.org>2019-10-18 11:59:39 +0200
commitdfead6415f58bf1709c99be12db96e7701df5ef8 (patch)
tree0b219fb92d2e9db78f46512279189ef77f0d4b81 /src/event/server_events.c
parentf7474cd72c1dbfcc8d4c3d6060c60a1062364dc2 (diff)
downloadprofani-tty-dfead6415f58bf1709c99be12db96e7701df5ef8.tar.gz
sv_ev_room_message: log in all cases if not our client
Forgot to check what happens if the length is <= 10.
Diffstat (limited to 'src/event/server_events.c')
-rw-r--r--src/event/server_events.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index 14da016a..6b1b6611 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -285,6 +285,15 @@ sv_ev_room_history(ProfMessage *message)
     }
 }
 
+static void _log_muc(ProfMessage *message)
+{
+    if (message->enc == PROF_MSG_ENC_OMEMO) {
+        groupchat_log_omemo_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain);
+    } else {
+        groupchat_log_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain);
+    }
+}
+
 void
 sv_ev_room_message(ProfMessage *message)
 {
@@ -302,23 +311,13 @@ sv_ev_room_message(ProfMessage *message)
         // whether this client sent it. See connection_create_stanza_id()
         gsize tmp_len;
         char *tmp = (char*)g_base64_decode(message->id, &tmp_len);
-        if (tmp_len > 10) {
-            // log if not from this client
-            if (g_strcmp0(&tmp[10], connection_get_profanity_identifier()) != 0) {
-                if (message->enc == PROF_MSG_ENC_OMEMO) {
-                    groupchat_log_omemo_msg_in(message->jid->barejid, message->jid->resourcepart, (char*)tmp);
-                } else {
-                    groupchat_log_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain);
-                }
-            }
+        // 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
     } else {
-        if (message->enc == PROF_MSG_ENC_OMEMO) {
-            groupchat_log_omemo_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain);
-        } else {
-            groupchat_log_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain);
-        }
+        _log_muc(message);
     }
 
     char *old_plain = message->plain;