Mercurial > pidgin.yaz
changeset 25789:b78c8ab5de2b
Jabber BOSH: Try to continue with no BOSH version attribute
Punjab doesn't return a version attribute, so try to continue w/o one...
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 18 Jan 2009 04:11:15 +0000 |
parents | e7f20c859519 |
children | 4e624cc0c4a5 |
files | libpurple/protocols/jabber/bosh.c |
diffstat | 1 files changed, 9 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/bosh.c Sun Jan 18 04:02:31 2009 +0000 +++ b/libpurple/protocols/jabber/bosh.c Sun Jan 18 04:11:15 2009 +0000 @@ -320,6 +320,7 @@ static void boot_response_cb(PurpleBOSHConnection *conn, xmlnode *node) { const char *sid, *version; + xmlnode *packet; g_return_if_fail(node != NULL); if (jabber_bosh_connection_error_check(conn, node)) @@ -344,20 +345,21 @@ purple_debug_info("jabber", "BOSH connection manager version %s\n", version); - /* TODO: Are major increments incompatible? */ - if (major > 1 || (major == 1 && minor >= 6)) { - xmlnode *packet = xmlnode_get_child(node, "features"); - conn->js->use_bosh = TRUE; - conn->receive_cb = auth_response_cb; - jabber_stream_features_parse(conn->js, packet); - } else { + if (major != 1 || minor < 6) { purple_connection_error_reason(conn->js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Unsupported version of BOSH protocol")); + return; } } else { purple_debug_info("jabber", "Missing version in BOSH initiation\n"); } + + /* FIXME: Depending on receiving features might break with some hosts */ + packet = xmlnode_get_child(node, "features"); + conn->js->use_bosh = TRUE; + conn->receive_cb = auth_response_cb; + jabber_stream_features_parse(conn->js, packet); } static void jabber_bosh_connection_boot(PurpleBOSHConnection *conn) {