about summary refs log tree commit diff stats
path: root/src/xmpp/omemo.c
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2019-03-14 19:43:14 +0140
committerPaul Fariello <paul@fariello.eu>2019-04-10 17:12:31 +0200
commit0dd5441f923d2b9a9e29e3b083dc3a4f61007302 (patch)
tree1d7489789c516b8f3f5ed0a1d437c2ae2ee841bb /src/xmpp/omemo.c
parent6bb7deeb9c33c61a1bb880dd15d45185e27a48d5 (diff)
downloadprofani-tty-0dd5441f923d2b9a9e29e3b083dc3a4f61007302.tar.gz
device_list iq should be from barejid or none
Ensure we request device_list and remove non conforming handling of
responses.

Move initialisation of iq_handlers before call to sv_ev_login_account_success
Diffstat (limited to 'src/xmpp/omemo.c')
-rw-r--r--src/xmpp/omemo.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/xmpp/omemo.c b/src/xmpp/omemo.c
index f68f7d6e..0c033921 100644
--- a/src/xmpp/omemo.c
+++ b/src/xmpp/omemo.c
@@ -74,7 +74,7 @@ void
 omemo_bundle_request(const char * const jid, uint32_t device_id, ProfIqCallback func, ProfIqFreeCallback free_func, void *userdata)
 {
     xmpp_ctx_t * const ctx = connection_get_ctx();
-    char *id = connection_create_stanza_id("devicelist_request");
+    char *id = connection_create_stanza_id("bundle_request");
 
     xmpp_stanza_t *iq = stanza_create_omemo_bundle_request(ctx, id, jid, device_id);
     iq_id_handler_add(id, func, free_func, userdata);
@@ -278,9 +278,6 @@ _omemo_receive_devicelist(xmpp_stanza_t *const stanza, void *const userdata)
 {
     GList *device_list = NULL;
     const char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
-    if (!from) {
-        return 1;
-    }
 
     xmpp_stanza_t *root = NULL;
     xmpp_stanza_t *event = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_PUBSUB_EVENT);
@@ -303,19 +300,17 @@ _omemo_receive_devicelist(xmpp_stanza_t *const stanza, void *const userdata)
     }
 
     xmpp_stanza_t *item = xmpp_stanza_get_child_by_name(items, "item");
-    if (!item) {
-        return 1;
-    }
-
-    xmpp_stanza_t *list = xmpp_stanza_get_child_by_ns(item, STANZA_NS_OMEMO);
-    if (!list) {
-        return 1;
-    }
+    if (item) {
+        xmpp_stanza_t *list = xmpp_stanza_get_child_by_ns(item, STANZA_NS_OMEMO);
+        if (!list) {
+            return 1;
+        }
 
-    xmpp_stanza_t *device;
-    for (device = xmpp_stanza_get_children(list); device != NULL; device = xmpp_stanza_get_next(device)) {
-        const char *id = xmpp_stanza_get_id(device);
-        device_list = g_list_append(device_list, GINT_TO_POINTER(strtoul(id, NULL, 10)));
+        xmpp_stanza_t *device;
+        for (device = xmpp_stanza_get_children(list); device != NULL; device = xmpp_stanza_get_next(device)) {
+            const char *id = xmpp_stanza_get_id(device);
+            device_list = g_list_append(device_list, GINT_TO_POINTER(strtoul(id, NULL, 10)));
+        }
     }
     omemo_set_device_list(from, device_list);