about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-06-16 18:58:18 +0100
committerJames Booth <boothj5@gmail.com>2013-06-16 18:58:18 +0100
commit96496ca21933ebcc21e0f28b6947dba084fa6c56 (patch)
tree9d69c2051c3a62612efd45ce1f6193a66ef70bed
parent1f207beb99648daab295a802bacdc1de66ac2dfd (diff)
parentc84cb17bd4f85abdd30cfa5229b3c22743f5ba26 (diff)
downloadprofani-tty-96496ca21933ebcc21e0f28b6947dba084fa6c56.tar.gz
Merge remote-tracking branch 'dmitry/captcha-2' into captcha
-rw-r--r--src/xmpp/message.c12
-rw-r--r--src/xmpp/stanza.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index 29a7cd98..1111d6f5 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -185,6 +185,7 @@ _conference_message_handler(xmpp_conn_t * const conn,
     xmpp_ctx_t *ctx = connection_get_ctx();
     xmpp_stanza_t *x_muc = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_MUC_USER);
     xmpp_stanza_t *x_groupchat = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_CONFERENCE);
+    xmpp_stanza_t *captcha = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_CAPTCHA);
     char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
     char *room = NULL;
     char *invitor = NULL;
@@ -239,6 +240,17 @@ _conference_message_handler(xmpp_conn_t * const conn,
         prof_handle_room_invite(INVITE_DIRECT, invitor, room, reason);
 
         jid_destroy(jidp);
+
+    // XEP-0158
+    } else if (captcha != NULL) {
+        xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_BODY);
+        if (body != NULL) {
+            char *message = xmpp_stanza_get_text(body);
+            if (message != NULL) {
+                prof_handle_room_broadcast(from, message);
+                xmpp_free(ctx, message);
+            }
+        }
     }
 
     return 1;
diff --git a/src/xmpp/stanza.h b/src/xmpp/stanza.h
index b35486e8..d1f55890 100644
--- a/src/xmpp/stanza.h
+++ b/src/xmpp/stanza.h
@@ -99,6 +99,7 @@
 #define STANZA_NS_DATA "jabber:x:data"
 #define STANZA_NS_VERSION "jabber:iq:version"
 #define STANZA_NS_CONFERENCE "jabber:x:conference"
+#define STANZA_NS_CAPTCHA "urn:xmpp:captcha"
 
 #define STANZA_DATAFORM_SOFTWARE "urn:xmpp:dataforms:softwareinfo"