pidgin: 8b405520: jabber: Blacklist EXTERNAL when using Cy...

darkrain42 at pidgin.im darkrain42 at pidgin.im
Fri May 21 01:42:41 EDT 2010


-----------------------------------------------------------------
Revision: 8b4055200f818c195ef2771f93ac02d9dc87665e
Ancestor: d62c8715a65cb3d82a34f3a518e2fa03263c033b
Author: darkrain42 at pidgin.im
Date: 2010-05-21T05:35:33
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/8b4055200f818c195ef2771f93ac02d9dc87665e

Modified files:
        ChangeLog libpurple/protocols/jabber/auth_cyrus.c

ChangeLog: 

jabber: Blacklist EXTERNAL when using Cyrus.  Allows connecting when it's advertised.

This fixes what I think is a bug/quirk in Cyrus SASL.  The EXTERNAL mech
returns SASL_NOMECH to indicate the client hasn't set the necessary data,
except SASL_NOMECH is supposed to mean (AFAICT) "None of the mechs given
are supported/meet the current security requirements".  No other mech
does that!

-------------- next part --------------
============================================================
--- ChangeLog	0fdaf22ae17653e9537a18a175a375002f6294b9
+++ ChangeLog	e8faec668b0b23d3aa711af4afeb19a751427e6d
@@ -18,6 +18,10 @@ version 2.7.1 (??/??/????):
 	* Fix unnecessary bandwidth consumption for buddy icon requests when
 	  buddies have capital letters in their passport addresses.
 
+	XMPP:
+	* Allow connecting to servers that advertise EXTERNAL (broken in
+	  2.7.0)
+
 version 2.7.0 (05/12/2010):
 	General:
 	* Changed GTK+ minimum version requirement to 2.10.0.
============================================================
--- libpurple/protocols/jabber/auth_cyrus.c	2c32ba3585f840186b7b339a02b122e5d54fa6af
+++ libpurple/protocols/jabber/auth_cyrus.c	4f2b22d5544a49be18e0f71ac97b67fcc5fec23d
@@ -408,7 +408,8 @@ jabber_cyrus_start(JabberStream *js, xml
 	{
 		char *mech_name = xmlnode_get_data(mechnode);
 
-		if (!mech_name || !*mech_name) {
+		if (!mech_name || !*mech_name ||
+				g_str_equal(mech_name, "EXTERNAL")) {
 			g_free(mech_name);
 			continue;
 		}
@@ -550,7 +551,7 @@ jabber_cyrus_handle_failure(JabberStream
 
 			return jabber_auth_start_cyrus(js, reply, error);
 
-		} else if ((js->auth_fail_count == 1) && 
+		} else if ((js->auth_fail_count == 1) &&
 				   (js->current_mech && g_str_equal(js->current_mech, "GSSAPI"))) {
 			/* If we tried GSSAPI first, it failed, and it was the only method we had to try, try jabber:iq:auth
 			 * for compatibility with iChat 10.5 Server and other jabberd based servers.


More information about the Commits mailing list