# HG changeset patch # User Paul Aurich # Date 1240077052 0 # Node ID 91b70522776edc7afdeeb016d4ee940a1f8d709c # Parent a8dbbcd069ab97c778e6a09467f09f3850a8e38d# Parent e9a8e363d9572d8a45dcc2321a3fe3cf5a7e39b1 merge of '510f4315d6f580dfe97834a04ae726edf736a9d6' and '70280062175f62b2632fae62b02997c8dca832b7' diff -r a8dbbcd069ab -r 91b70522776e libpurple/protocols/jabber/jabber.c --- a/libpurple/protocols/jabber/jabber.c Sat Apr 18 17:43:55 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Sat Apr 18 17:50:52 2009 +0000 @@ -1295,30 +1295,51 @@ jabber_stream_set_state(js, JABBER_STREAM_CONNECTING); + /* TODO: Just use purple_url_parse? */ + if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) { + js->use_bosh = TRUE; + js->bosh = jabber_bosh_connection_init(js, connect_server); + if (!js->bosh) { + purple_connection_error_reason (js->gc, + PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, + _("Malformed BOSH Connect Server")); + return; + } + jabber_bosh_connection_connect(js->bosh); + return; + } else { + js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); + } + if(purple_account_get_bool(account, "old_ssl", FALSE)) { if(purple_ssl_is_supported()) { js->gsc = purple_ssl_connect(account, server, purple_account_get_int(account, "port", 5222), jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); + if (!js->gsc) { + purple_connection_error_reason (js->gc, + PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, + _("Unable to establish SSL connection")); + } } else { purple_connection_error_reason (gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, _("SSL support unavailable")); } + + return; } - if(!js->gsc) { - if (connect_server[0]) { - jabber_login_connect(js, js->user->domain, server, - purple_account_get_int(account, - "port", 5222), TRUE); - } else { - js->srv_query_data = purple_srv_resolve("xmpp-client", - "tcp", - js->user->domain, - srv_resolved_cb, - js); - } + if (connect_server[0]) { + jabber_login_connect(js, js->user->domain, server, + purple_account_get_int(account, + "port", 5222), TRUE); + } else { + js->srv_query_data = purple_srv_resolve("xmpp-client", + "tcp", + js->user->domain, + srv_resolved_cb, + js); } }