# HG changeset patch # User Carlos Silva # Date 1183617337 0 # Node ID 46437bdf316ba059a997f62d0676b83af72f90ca # Parent faad7d69de10eb8101fc49cbd7aca29708176de5 In the initial ADL listing, send the commands in the correct sequence as required by the server: BLP, ADL and PRP. When the server acknowledges this initial ADL, send CHG with status information diff -r faad7d69de10 -r 46437bdf316b libpurple/protocols/msn/contact.c --- a/libpurple/protocols/msn/contact.c Sat Jun 23 03:07:35 2007 +0000 +++ b/libpurple/protocols/msn/contact.c Thu Jul 05 06:35:37 2007 +0000 @@ -544,9 +544,10 @@ // purple_debug_misc("msn", "soap contact server Reply: {%s}\n", soapconn->read_buf); if (msn_parse_addressbook(contact)) { + msn_send_privacy(session->account->gc); msn_notification_dump_contact(session); - msn_set_psm(session); - msn_session_finish_login(session); +// msn_set_psm(session); +// msn_session_finish_login(session); } else { msn_get_address_book(contact, NULL, NULL); } diff -r faad7d69de10 -r 46437bdf316b libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Sat Jun 23 03:07:35 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Thu Jul 05 06:35:37 2007 +0000 @@ -407,6 +407,28 @@ return user && user->mobile; } +void +msn_send_privacy(PurpleConnection *gc) +{ + PurpleAccount *account; + MsnSession *session; + MsnCmdProc *cmdproc; + + account = purple_connection_get_account(gc); + session = gc->proto_data; + cmdproc = session->notification->cmdproc; + + if (account->perm_deny == PURPLE_PRIVACY_ALLOW_ALL || + account->perm_deny == PURPLE_PRIVACY_DENY_USERS) + { + msn_cmdproc_send(cmdproc, "BLP", "%s", "AL"); + } + else + { + msn_cmdproc_send(cmdproc, "BLP", "%s", "BL"); + } +} + static void initiate_chat_cb(PurpleBlistNode *node, gpointer data) { @@ -1228,23 +1250,7 @@ static void msn_set_permit_deny(PurpleConnection *gc) { - PurpleAccount *account; - MsnSession *session; - MsnCmdProc *cmdproc; - - account = purple_connection_get_account(gc); - session = gc->proto_data; - cmdproc = session->notification->cmdproc; - - if (account->perm_deny == PURPLE_PRIVACY_ALLOW_ALL || - account->perm_deny == PURPLE_PRIVACY_DENY_USERS) - { - msn_cmdproc_send(cmdproc, "BLP", "%s", "AL"); - } - else - { - msn_cmdproc_send(cmdproc, "BLP", "%s", "BL"); - } + msn_send_privacy(gc); } static void diff -r faad7d69de10 -r 46437bdf316b libpurple/protocols/msn/msn.h --- a/libpurple/protocols/msn/msn.h Sat Jun 23 03:07:35 2007 +0000 +++ b/libpurple/protocols/msn/msn.h Thu Jul 05 06:35:37 2007 +0000 @@ -142,6 +142,6 @@ (MSN_CLIENT_ID_CAPABILITIES)) void msn_act_id(PurpleConnection *gc, const char *entry); - +void msn_send_privacy(PurpleConnection *gc); #endif /* _MSN_H_ */ diff -r faad7d69de10 -r 46437bdf316b libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Sat Jun 23 03:07:35 2007 +0000 +++ b/libpurple/protocols/msn/notification.c Thu Jul 05 06:35:37 2007 +0000 @@ -744,7 +744,16 @@ static void adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { + static initial; + purple_debug_info("MaYuan","Process ADL\n"); + + if (!initial) + { + purple_debug_info("--[","Initial ADL received\n"); + msn_set_psm(cmdproc->session); + msn_session_finish_login(cmdproc->session); + } } static void