/soc/2015/koosha/main: 94a535d119e3: Parse 'location' attribute
Koosha Khajehmoogahi
koosha at posteo.de
Wed Aug 19 14:56:50 EDT 2015
Changeset: 94a535d119e33893f507c89f1472198d6af4e412
Author: Koosha Khajehmoogahi <koosha at posteo.de>
Date: 2015-08-17 20:51 +0200
Branch: default
URL: https://hg.pidgin.im/soc/2015/koosha/main/rev/94a535d119e3
Description:
Parse 'location' attribute
diffstat:
libpurple/protocols/jabber/jabber.c | 1 +
libpurple/protocols/jabber/sm.c | 10 ++++++----
libpurple/protocols/jabber/sm.h | 3 +++
3 files changed, 10 insertions(+), 4 deletions(-)
diffs (60 lines):
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -1702,6 +1702,7 @@ void jabber_close(PurpleConnection *gc)
js->commands = g_list_delete_link(js->commands, js->commands);
}
g_hash_table_destroy(js->sm->packets_buffer);
+ g_free(js->sm->location);
g_free(js->sm);
g_free(js->server_name);
g_free(js->certificate_CN);
diff --git a/libpurple/protocols/jabber/sm.c b/libpurple/protocols/jabber/sm.c
--- a/libpurple/protocols/jabber/sm.c
+++ b/libpurple/protocols/jabber/sm.c
@@ -37,6 +37,7 @@ JabberSM *jabber_stream_management_init(
sm->stanzas_sent = 0;
sm->stanzas_recvd = 0;
sm->last_acked_stanza = 0;
+ sm->location = NULL;
sm->packets_buffer = g_hash_table_new_full(g_int_hash,
g_int_equal, g_free, (GDestroyNotify)purple_xmlnode_free);
@@ -58,12 +59,9 @@ void jabber_stream_management_enable(Jab
sent_enable_packet = TRUE;
}
-/*
- * TODO: parse the 'location' attribute as well
- */
void jabber_stream_management_parse(JabberStream *js, PurpleXmlNode *packet)
{
- const char *resume, *id, *max;
+ const char *resume, *id, *max, *location;
PurpleAccount *account;
gboolean resume_enabled;
@@ -86,6 +84,10 @@ void jabber_stream_management_parse(Jabb
max = purple_xmlnode_get_attrib(packet, "max");
if (max)
purple_account_set_string(account, "sm_max", max);
+
+ location = purple_xmlnode_get_attrib(packet, "location");
+ if (location)
+ js->sm->location = g_strdup(location);
}
}
diff --git a/libpurple/protocols/jabber/sm.h b/libpurple/protocols/jabber/sm.h
--- a/libpurple/protocols/jabber/sm.h
+++ b/libpurple/protocols/jabber/sm.h
@@ -29,6 +29,9 @@ struct _JabberSM {
guint32 stanzas_sent;
guint32 stanzas_recvd;
+ /* Possible location of an alternative server for reconnecting */
+ char *location;
+
/* Holds the number of the stanzas that have been
acked by server */
guint32 last_acked_stanza;
More information about the Commits
mailing list