about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-04-13 03:11:46 +0100
committerJames Booth <boothj5@gmail.com>2014-04-13 03:11:46 +0100
commitbc6f8ceb3aa62c714f09acb7dc1dec30580ab720 (patch)
tree3accc71bee1bac36ed0907fb5f86dfbecb59a766 /src
parent99592e27790b3bcd4e31d1e91fc7c0773789cdb3 (diff)
downloadprofani-tty-bc6f8ceb3aa62c714f09acb7dc1dec30580ab720.tar.gz
Fixed handling of room subject
Diffstat (limited to 'src')
-rw-r--r--src/xmpp/bookmark.c1
-rw-r--r--src/xmpp/message.c44
2 files changed, 20 insertions, 25 deletions
diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c
index 4df3ba9e..2e4f70db 100644
--- a/src/xmpp/bookmark.c
+++ b/src/xmpp/bookmark.c
@@ -260,7 +260,6 @@ _bookmark_handle_result(xmpp_conn_t * const conn,
                 room_jid = jid_create_from_bare_and_resource(jid, name);
                 if (!muc_room_is_active(room_jid->barejid)) {
                     presence_join_room(jid, name, NULL);
-                    /* TODO: this should be removed after fixing #195 */
                     handle_bookmark_autojoin(jid);
                 }
                 jid_destroy(room_jid);
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);