comparison libpurple/protocols/msn/notification.c @ 24518:4fd22591e3f0

Send FQY as the first thing when adding a buddy so that we know what network they use. Should be helpful for adding federated buddies. References #6755.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sun, 07 Dec 2008 07:09:57 +0000
parents e344426d7c28
children d6de4f9de12d
comparison
equal deleted inserted replaced
24517:2b4c909b40c4 24518:4fd22591e3f0
847 847
848 static void 848 static void
849 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, 849 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
850 size_t len) 850 size_t len)
851 { 851 {
852 purple_debug_info("msn", "FQY payload:\n%s\n", payload); 852 MsnUserList *userlist;
853 g_return_if_fail(cmdproc->session != NULL); 853 xmlnode *ml, *d, *c;
854 /* msn_notification_post_adl(cmdproc, payload, len); */ 854 const char *domain;
855 /* msn_get_address_book(cmdproc->session, MSN_AB_SAVE_CONTACT, NULL, NULL); */ 855 const char *local;
856 const char *type;
857 char *passport;
858 MsnNetwork network = MSN_NETWORK_PASSPORT;
859
860 userlist = cmdproc->session->userlist;
861
862 /* FQY response:
863 <ml><d n="domain.com"><c n="local-node" t="network" /></d></ml> */
864 ml = xmlnode_from_str(payload, len);
865 d = xmlnode_get_child(ml, "d");
866 c = xmlnode_get_child(d, "c");
867 domain = xmlnode_get_attrib(d, "n");
868 local = xmlnode_get_attrib(c, "n");
869 type = xmlnode_get_attrib(c, "t");
870
871 passport = g_strdup_printf("%s@%s", local, domain);
872
873 if (type != NULL)
874 network = (MsnNetwork)strtoul(type, NULL, 10);
875 purple_debug_info("msn", "FQY response says %s is from network %d\n",
876 passport, network);
877 msn_userlist_add_pending_buddy(userlist, passport, network);
878
879 g_free(passport);
880 xmlnode_free(ml);
856 } 881 }
857 882
858 static void 883 static void
859 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 884 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
860 { 885 {