grim/pidgin

18f9bdd43fda
Parents cc6d6c1ffe6b
Children c10fa2e7a6ba
XEP-0198 (Stream Management): check that server supports SM
--- a/libpurple/protocols/jabber/jabber.c Tue Aug 04 19:09:39 2015 +0200
+++ b/libpurple/protocols/jabber/jabber.c Fri Aug 07 20:36:34 2015 +0200
@@ -292,6 +292,10 @@
return;
}
+ /* XEP-0198: Stream Management */
+ if (purple_xmlnode_get_child_with_namespace(packet, "sm", NS_XMPP_SM))
+ js->server_caps |= JABBER_CAP_SM;
+
if(js->registration) {
jabber_register_start(js);
} else if(purple_xmlnode_get_child(packet, "mechanisms")) {
@@ -352,11 +356,11 @@
name = (*packet)->name;
xmlns = purple_xmlnode_get_namespace(*packet);
- if(!strcmp((*packet)->name, "iq")) {
+ if (purple_strequal(name, "iq")) {
jabber_iq_parse(js, *packet);
- } else if(!strcmp((*packet)->name, "presence")) {
+ } else if (purple_strequal(name, "presence")) {
jabber_presence_parse(js, *packet);
- } else if(!strcmp((*packet)->name, "message")) {
+ } else if (purple_strequal(name, "message")) {
jabber_message_parse(js, *packet);
} else if (purple_strequal(xmlns, NS_XMPP_STREAMS)) {
if (g_str_equal(name, "features"))
--- a/libpurple/protocols/jabber/jabber.h Tue Aug 04 19:09:39 2015 +0200
+++ b/libpurple/protocols/jabber/jabber.h Fri Aug 07 20:36:34 2015 +0200
@@ -52,7 +52,8 @@
JABBER_CAP_FACEBOOK = 1 << 16,
JABBER_MSG_DELIVERY = 1 << 17,
JABBER_MSG_REPLACE = 1 << 18,
- JABBER_CAP_CARBONS = 1 << 19,
+ JABBER_CAP_CARBONS = 1 << 19,
+ JABBER_CAP_SM = 1 << 20,
JABBER_CAP_RETRIEVED = 1 << 31
} JabberCapabilities;
--- a/libpurple/protocols/jabber/namespaces.h Tue Aug 04 19:09:39 2015 +0200
+++ b/libpurple/protocols/jabber/namespaces.h Fri Aug 07 20:36:34 2015 +0200
@@ -31,6 +31,7 @@
#define NS_XMPP_STANZAS "urn:ietf:params:xml:ns:xmpp-stanzas"
#define NS_XMPP_STREAMS "http://etherx.jabber.org/streams"
#define NS_XMPP_TLS "urn:ietf:params:xml:ns:xmpp-tls"
+#define NS_XMPP_SM "urn:xmpp:sm:3"
/* XEP-0012 Last Activity (and XEP-0256 Last Activity in Presence) */
#define NS_LAST_ACTIVITY "jabber:iq:last"