summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Aurich <darkrain42@pidgin.im>2010-05-01 16:37:07 +0000
committerPaul Aurich <darkrain42@pidgin.im>2010-05-01 16:37:07 +0000
commitae9e09e2425464a50f5af25c080674c74236162c (patch)
treef903ac61e2e4236de3758ac67ae6b0b6753c1274
parent94c6e75d21cc01bd98ebada8af407399abec9ab2 (diff)
downloadpidgin-ae9e09e2425464a50f5af25c080674c74236162c.tar.gz
jabber: Only add the ga:client-uses-full-bind-result to gmail/googlemail domains
I think this should be okay, but admittedly it might cause issues. Anyway, the previous one definitely caused issues with Punjab, which fails to stringify the namespaced attributes.
-rw-r--r--ChangeLog5
-rw-r--r--libpurple/protocols/jabber/auth_cyrus.c7
-rw-r--r--libpurple/protocols/jabber/auth_plain.c7
3 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e31286ee5..c3bc947eb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -96,6 +96,11 @@ version 2.7.0 (??/??/????):
minutes). This fixes an issue with Openfire disconnecting a
libpurple-baesd client that has just been quiet for about 6
minutes.
+ * Only support Google Talk's JID Domain Discovery extension
+ (allowing a user to log in with "@gmail.com" or "@googlemail.com"
+ interchangeably) for those two domains. This change was made
+ due to interoperability issues with some BOSH Connection Managers
+ and namespaced attributes.
Yahoo/Yahoo JAPAN:
* Attempt to better handle transparent proxies interfering with
diff --git a/libpurple/protocols/jabber/auth_cyrus.c b/libpurple/protocols/jabber/auth_cyrus.c
index 0a8cbb33c7..ba8fb68940 100644
--- a/libpurple/protocols/jabber/auth_cyrus.c
+++ b/libpurple/protocols/jabber/auth_cyrus.c
@@ -314,8 +314,11 @@ jabber_auth_start_cyrus(JabberStream *js, xmlnode **reply, char **error)
xmlnode_set_namespace(auth, NS_XMPP_SASL);
xmlnode_set_attrib(auth, "mechanism", js->current_mech);
- xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
- xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+ if (g_str_equal(js->user->domain, "gmail.com") ||
+ g_str_equal(js->user->domain, "googlemail.com")) {
+ xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
+ xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+ }
if (clientout) {
if (coutlen == 0) {
diff --git a/libpurple/protocols/jabber/auth_plain.c b/libpurple/protocols/jabber/auth_plain.c
index 81d9118096..b8f38f20ce 100644
--- a/libpurple/protocols/jabber/auth_plain.c
+++ b/libpurple/protocols/jabber/auth_plain.c
@@ -40,8 +40,11 @@ static xmlnode *finish_plaintext_authentication(JabberStream *js)
auth = xmlnode_new("auth");
xmlnode_set_namespace(auth, NS_XMPP_SASL);
- xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
- xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+ if (g_str_equal(js->user->domain, "gmail.com") ||
+ g_str_equal(js->user->domain, "googlemail.com")) {
+ xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
+ xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+ }
response = g_string_new("");
response = g_string_append_len(response, "\0", 1);