Mercurial > pidgin
changeset 28318:534ff54568eb
Don't attempt to change the alias on the server if the contact is not (yet)
on it.
Fixes #9242 and #10393.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 03 Oct 2009 21:01:57 +0000 |
parents | 97856e3452d0 |
children | 542b75da206e |
files | libpurple/protocols/msn/contact.c |
diffstat | 1 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/contact.c Sat Oct 03 20:01:35 2009 +0000 +++ b/libpurple/protocols/msn/contact.c Sat Oct 03 21:01:57 2009 +0000 @@ -1417,6 +1417,7 @@ xmlnode *contact; xmlnode *contact_info; xmlnode *changes; + MsnUser *user = NULL; purple_debug_info("msn", "Update contact information for %s with new %s: %s\n", passport ? passport : "(null)", @@ -1424,6 +1425,12 @@ value ? value : "(null)"); g_return_if_fail(passport != NULL); + if (strcmp(passport, "Me") != 0) { + user = msn_userlist_find_user(session->userlist, passport); + if (!user) + return; + } + contact_info = xmlnode_new("contactInfo"); changes = xmlnode_new("propertiesChanged"); @@ -1464,14 +1471,13 @@ xmlnode_insert_child(contact, contact_info); xmlnode_insert_child(contact, changes); - if (!strcmp(passport, "Me")) { - xmlnode *contactType = xmlnode_new_child(contact_info, "contactType"); - xmlnode_insert_data(contactType, "Me", -1); - } else { - MsnUser *user = msn_userlist_find_user(session->userlist, passport); + if (user) { xmlnode *contactId = xmlnode_new_child(contact, "contactId"); msn_callback_state_set_uid(state, user->uid); xmlnode_insert_data(contactId, state->uid, -1); + } else { + xmlnode *contactType = xmlnode_new_child(contact_info, "contactType"); + xmlnode_insert_data(contactType, "Me", -1); } msn_contact_request(state);