Mercurial > pidgin
diff libpurple/protocols/msn/msn.c @ 20486:ff4ae9dde291
Make block/unblock work right, as well as being add by a buddy. Finally fixes #723
author | Carlos Silva <typ0@pidgin.im> |
---|---|
date | Mon, 03 Sep 2007 05:47:52 +0000 |
parents | 98613886411a |
children | 64c322c3b1b0 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/msn.c Fri Aug 31 18:15:23 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Mon Sep 03 05:47:52 2007 +0000 @@ -1162,12 +1162,22 @@ userlist = session->userlist; user = msn_userlist_find_user(userlist, who); + purple_debug_info("MSN", "msn_add_permit()\n"); + if (!session->logged_in) return; - if (user != NULL && user->list_op & MSN_LIST_BL_OP) + if (user != NULL && user->list_op & MSN_LIST_BL_OP) { msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); + /* delete contact from Block list and add it to Allow in the callback */ + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL); + } else { + /* just add the contact to Allow list */ + msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_AL); + } + + msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL); } @@ -1182,12 +1192,21 @@ userlist = session->userlist; user = msn_userlist_find_user(userlist, who); + purple_debug_info("MSN", "msn_add_deny()\n"); + if (!session->logged_in) return; - if (user != NULL && user->list_op & MSN_LIST_AL_OP) + if (user != NULL && user->list_op & MSN_LIST_AL_OP) { msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL); + /* delete contact from Allow list and add it to Block in the callback */ + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL); + } else { + /* just add the contact to Block list */ + msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_BL); + } + msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL); } @@ -1201,6 +1220,8 @@ session = gc->proto_data; userlist = session->userlist; + purple_debug_info("MSN", "msn_rem_permit()\n"); + if (!session->logged_in) return; @@ -1208,6 +1229,8 @@ msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL); + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL); + if (user != NULL && user->list_op & MSN_LIST_RL_OP) msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL); } @@ -1222,6 +1245,8 @@ session = gc->proto_data; userlist = session->userlist; + purple_debug_info("MSN", "msn_rem_deny()\n"); + if (!session->logged_in) return; @@ -1229,6 +1254,8 @@ msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL); + if (user != NULL && user->list_op & MSN_LIST_RL_OP) msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL); }