Mercurial > pidgin
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 { |