about summary refs log tree commit diff stats
path: root/src/xmpp/message.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmpp/message.c')
-rw-r--r--src/xmpp/message.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index 7520aa0a..6da2b367 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -346,37 +346,33 @@ _groupchat_handler(xmpp_conn_t * const conn,
     char *room_jid = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
     Jid *jid = jid_create(room_jid);
 
+    // handle room subject
+    xmpp_stanza_t *subject = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_SUBJECT);
+    if (subject != NULL) {
+        message = xmpp_stanza_get_text(subject);
+        if (message != NULL) {
+            handle_room_subject(jid->barejid, message);
+            xmpp_free(ctx, message);
+        }
+
+        jid_destroy(jid);
+        return 1;
+    }
+
     // handle room broadcasts
     if (jid->resourcepart == NULL) {
-        xmpp_stanza_t *subject = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_SUBJECT);
-
-        // handle subject
-        if (subject != NULL) {
-            message = xmpp_stanza_get_text(subject);
+        xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_BODY);
+        if (body != NULL) {
+            message = xmpp_stanza_get_text(body);
             if (message != NULL) {
-                handle_room_subject(jid->barejid, message);
+                handle_room_broadcast(room_jid, message);
                 xmpp_free(ctx, message);
             }
-
-            jid_destroy(jid);
-            return 1;
-
-        // handle other room broadcasts
-        } else {
-            xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_BODY);
-            if (body != NULL) {
-                message = xmpp_stanza_get_text(body);
-                if (message != NULL) {
-                    handle_room_broadcast(room_jid, message);
-                    xmpp_free(ctx, message);
-                }
-            }
-
-            jid_destroy(jid);
-            return 1;
         }
-    }
 
+        jid_destroy(jid);
+        return 1;
+    }
 
     if (!jid_is_valid_room_form(jid)) {
         log_error("Invalid room JID: %s", jid->str);