about summary refs log tree commit diff stats
path: root/src/xmpp
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-05-03 00:06:12 +0100
committerJames Booth <boothj5@gmail.com>2015-05-03 00:06:12 +0100
commit03ef791401f4bc467c23822a28513a0336bb7654 (patch)
tree3e4ba3fd3d09baf5f29ad4d03d73eff7a0b37d95 /src/xmpp
parent0bc4377ad75b0d4b7100b6f213314ee600987157 (diff)
parent5a90e2862e3d11ec86a34b990be7b87a03c7f01f (diff)
downloadprofani-tty-03ef791401f4bc467c23822a28513a0336bb7654.tar.gz
Merge branch 'master' into pgp
Diffstat (limited to 'src/xmpp')
-rw-r--r--src/xmpp/message.c64
1 files changed, 34 insertions, 30 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index 73d5a07a..f5cada10 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -60,6 +60,7 @@ static int _muc_user_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const sta
 static int _conference_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata);
 static int _captcha_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata);
 static int _message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata);
+static int _receipt_received_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata);
 
 void
 message_add_handlers(void)
@@ -73,6 +74,7 @@ message_add_handlers(void)
     HANDLE(STANZA_NS_MUC_USER,   NULL,                   _muc_user_handler);
     HANDLE(STANZA_NS_CONFERENCE, NULL,                   _conference_handler);
     HANDLE(STANZA_NS_CAPTCHA,    NULL,                   _captcha_handler);
+    HANDLE(STANZA_NS_RECEIPTS,   NULL,                   _receipt_received_handler);
 }
 
 char *
@@ -290,8 +292,7 @@ message_send_gone(const char * const jid)
 }
 
 static int
-_message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
-    void * const userdata)
+_message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
 {
     char *id = xmpp_stanza_get_id(stanza);
     char *jid = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
@@ -341,8 +342,7 @@ _message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
 }
 
 static int
-_muc_user_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
-    void * const userdata)
+_muc_user_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
 {
     xmpp_ctx_t *ctx = connection_get_ctx();
     xmpp_stanza_t *xns_muc_user = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_MUC_USER);
@@ -396,8 +396,7 @@ _muc_user_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
 }
 
 static int
-_conference_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
-    void * const userdata)
+_conference_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
 {
     xmpp_stanza_t *xns_conference = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_CONFERENCE);
     char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
@@ -434,8 +433,7 @@ _conference_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
 }
 
 static int
-_captcha_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
-    void * const userdata)
+_captcha_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
 {
     xmpp_ctx_t *ctx = connection_get_ctx();
     char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
@@ -459,8 +457,7 @@ _captcha_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
 }
 
 static int
-_groupchat_handler(xmpp_conn_t * const conn,
-    xmpp_stanza_t * const stanza, void * const userdata)
+_groupchat_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
 {
     xmpp_ctx_t *ctx = connection_get_ctx();
     char *message = NULL;
@@ -553,8 +550,33 @@ _message_send_receipt(const char * const fulljid, const char * const message_id)
 }
 
 static int
-_chat_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
-    void * const userdata)
+_receipt_received_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
+{
+    xmpp_stanza_t *receipt = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_RECEIPTS);
+    char *name = xmpp_stanza_get_name(receipt);
+    if (g_strcmp0(name, "received") != 0) {
+        return 1;
+    }
+
+    char *id = xmpp_stanza_get_attribute(receipt, STANZA_ATTR_ID);
+    if (!id) {
+        return 1;
+    }
+
+    char *fulljid = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
+    if (!fulljid) {
+        return 1;
+    }
+
+    Jid *jidp = jid_create(fulljid);
+    sv_ev_message_receipt(jidp->barejid, id);
+    jid_destroy(jidp);
+
+    return 1;
+}
+
+static int
+_chat_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
 {
     // ignore if type not chat or absent
     char *type = xmpp_stanza_get_type(stanza);
@@ -562,24 +584,6 @@ _chat_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
         return 1;
     }
 
-    // check if message receipt
-    xmpp_stanza_t *receipt = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_RECEIPTS);
-    if (receipt) {
-        char *name = xmpp_stanza_get_name(receipt);
-        if (g_strcmp0(name, "received") == 0) {
-            char *id = xmpp_stanza_get_attribute(receipt, STANZA_ATTR_ID);
-            if (id) {
-                char *fulljid = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
-                if (fulljid) {
-                    Jid *jidp = jid_create(fulljid);
-                    sv_ev_message_receipt(jidp->barejid, id);
-                    jid_destroy(jidp);
-                    return 1;
-                }
-            }
-        }
-    }
-
     // check if carbon message
     xmpp_stanza_t *carbons = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_CARBONS);
     if (carbons) {