Mercurial > pidgin
changeset 32494:ea3bd56a6092
Correctly fallback to a federated contact if a contact also has a
passport address but that address is not messenger enabled.
Fixes #14641.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sun, 05 Feb 2012 21:53:01 +0000 |
parents | 70b74f751fad |
children | af1c4fae7f74 |
files | libpurple/protocols/msn/contact.c |
diffstat | 1 files changed, 14 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- 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); }