diff -r 6969a68a6008 -r dee4a4fe8cbc libpurple/protocols/jabber/auth_cyrus.c --- a/libpurple/protocols/jabber/auth_cyrus.c Sat Jun 12 20:18:31 2010 +0000 +++ b/libpurple/protocols/jabber/auth_cyrus.c Sat Jun 12 23:01:44 2010 +0000 @@ -408,6 +408,12 @@ { char *mech_name = xmlnode_get_data(mechnode); + /* Ignore blank mechanisms and EXTERNAL. External isn't + * supported, and Cyrus SASL's mechanism returns + * SASL_NOMECH when the caller (us) doesn't configure it. + * Except SASL_NOMECH is supposed to mean "no concordant + * mechanisms"... Easiest just to blacklist it (for now). + */ if (!mech_name || !*mech_name || g_str_equal(mech_name, "EXTERNAL")) { g_free(mech_name);