--- a/libpurple/protocols/irc/msgs.c Wed Sep 21 12:34:03 2016 -0500
+++ b/libpurple/protocols/irc/msgs.c Thu Sep 22 01:24:53 2016 +0200
@@ -1564,6 +1564,8 @@
PurpleConnection *gc = purple_account_get_connection(irc->account);
const char *mech_list = NULL;
if (strncmp(args[2], "sasl ", 6))
@@ -1628,6 +1630,15 @@
irc->sasl_mechs = g_string_new(mech_list);
+ /* Drop EXTERNAL mechanism since we don't support it */ + if ((pos = strstr(irc->sasl_mechs->str, "EXTERNAL"))) { + index = pos - irc->sasl_mechs->str; + g_string_erase(irc->sasl_mechs, index, strlen("EXTERNAL")); + /* Remove space which separated this mech from the next */ + if ((irc->sasl_mechs->str)[index] == ' ') { + g_string_erase(irc->sasl_mechs, index, 1); irc_auth_start_cyrus(irc);