# HG changeset patch # User Elliott Sales de Andrade # Date 1328478781 0 # Node ID ea3bd56a60920975992ba55a3771e58e05f2844c # Parent 70b74f751fad0397eaa51ea9daa23ddf403195b9 Correctly fallback to a federated contact if a contact also has a passport address but that address is not messenger enabled. Fixes #14641. diff -r 70b74f751fad -r ea3bd56a6092 libpurple/protocols/msn/contact.c --- a/libpurple/protocols/msn/contact.c Fri Feb 03 06:49:22 2012 +0000 +++ b/libpurple/protocols/msn/contact.c Sun Feb 05 21:53:01 2012 +0000 @@ -740,6 +740,20 @@ } passportName = xmlnode_get_child(contactInfo, "passportName"); + if (passportName != NULL) { + xmlnode *messenger_user; + /* ignore non-messenger contacts */ + if ((messenger_user = xmlnode_get_child(contactInfo, "isMessengerUser"))) { + char *is_messenger_user = xmlnode_get_data(messenger_user); + + if (is_messenger_user && !strcmp(is_messenger_user, "false")) { + passportName = NULL; + } + + g_free(is_messenger_user); + } + } + if (passportName == NULL) { xmlnode *emailsNode, *contactEmailNode, *emailNode; xmlnode *messengerEnabledNode; @@ -773,19 +787,6 @@ } } } else { - xmlnode *messenger_user; - /* ignore non-messenger contacts */ - if ((messenger_user = xmlnode_get_child(contactInfo, "isMessengerUser"))) { - char *is_messenger_user = xmlnode_get_data(messenger_user); - - if (is_messenger_user && !strcmp(is_messenger_user, "false")) { - g_free(is_messenger_user); - continue; - } - - g_free(is_messenger_user); - } - passport = xmlnode_get_data(passportName); }