pidgin: 99d00e33: For federated buddies, we should set <Me...
qulogic at pidgin.im
qulogic at pidgin.im
Thu Mar 26 01:35:50 EDT 2009
-----------------------------------------------------------------
Revision: 99d00e3331645ef61bc0f08255d51234daaf67f5
Ancestor: 8f5d54ef7dd2f11dbc1381f22f35e328890eda4f
Author: qulogic at pidgin.im
Date: 2009-03-26T05:29:18
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/99d00e3331645ef61bc0f08255d51234daaf67f5
Modified files:
libpurple/protocols/msn/contact.c
libpurple/protocols/msn/contact.h
ChangeLog:
For federated buddies, we should set <Member>/<Type> to Email, and use an
<Email> node instead of <PassportName>. Along with that, we shouldn't set
any <Annotations> to specify it's a federated buddy either, since the MSN
server will complain about it.
Fixes #7939.
-------------- next part --------------
============================================================
--- libpurple/protocols/msn/contact.c 7ef3db2fa6f5dc428b73648a17aa5060f4c9ecad
+++ libpurple/protocols/msn/contact.c 5e45827fb84755ed6501af8166b5ca9271bf3102
@@ -1482,8 +1482,6 @@ msn_del_contact_from_list(MsnSession *se
const gchar *passport, const MsnListId list)
{
gchar *body = NULL, *member = NULL;
- const char *type = "PassportMember";
- gchar *federate = NULL;
MsnSoapPartnerScenario partner_scenario;
MsnUser *user;
@@ -1501,23 +1499,28 @@ msn_del_contact_from_list(MsnSession *se
msn_callback_state_set_who(state, passport);
user = msn_userlist_find_user(session->userlist, passport);
- if (user && user->networkid != MSN_NETWORK_PASSPORT) {
- type = "EmailMember";
- federate = g_strdup_printf(MSN_MEMBER_FEDERATED_ANNOTATION_XML,
- user->networkid);
- }
if (list == MSN_LIST_PL) {
partner_scenario = MSN_PS_CONTACT_API;
- member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML,
- type, user->membership_id[MSN_LIST_PL],
- federate ? federate : "");
+ if (user && user->networkid != MSN_NETWORK_PASSPORT)
+ member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML,
+ "EmailMember", "Email",
+ user->membership_id[MSN_LIST_PL]);
+ else
+ member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML,
+ "PassportMember", "Passport",
+ user->membership_id[MSN_LIST_PL]);
} else {
/* list == MSN_LIST_AL || list == MSN_LIST_BL */
partner_scenario = MSN_PS_BLOCK_UNBLOCK;
- member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML,
- type, passport,
- federate ? federate : "");
+ if (user && user->networkid != MSN_NETWORK_PASSPORT)
+ member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML,
+ "EmailMember", "Email",
+ "Email", passport, "Email");
+ else
+ member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML,
+ "PassportMember", "Passport",
+ "PassportName", passport, "PassportName");
}
body = g_strdup_printf(MSN_CONTACT_DELETE_FROM_LIST_TEMPLATE,
@@ -1530,7 +1533,6 @@ msn_del_contact_from_list(MsnSession *se
state->cb = msn_del_contact_from_list_read_cb;
msn_contact_request(state);
- g_free(federate);
g_free(member);
g_free(body);
}
@@ -1578,8 +1580,6 @@ msn_add_contact_to_list(MsnSession *sess
const gchar *passport, const MsnListId list)
{
gchar *body = NULL, *member = NULL;
- const char *type = "PassportMember";
- gchar *federate = NULL;
MsnSoapPartnerScenario partner_scenario;
MsnUser *user;
@@ -1596,15 +1596,16 @@ msn_add_contact_to_list(MsnSession *sess
msn_callback_state_set_who(state, passport);
user = msn_userlist_find_user(session->userlist, passport);
- if (user && user->networkid != MSN_NETWORK_PASSPORT) {
- type = "EmailMember";
- federate = g_strdup_printf(MSN_MEMBER_FEDERATED_ANNOTATION_XML,
- user->networkid);
- }
partner_scenario = (list == MSN_LIST_RL) ? MSN_PS_CONTACT_API : MSN_PS_BLOCK_UNBLOCK;
- member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML,
- type, state->who, federate ? federate : "");
+ if (user && user->networkid != MSN_NETWORK_PASSPORT)
+ member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML,
+ "EmailMember", "Email",
+ "Email", state->who, "Email");
+ else
+ member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML,
+ "PassportMember", "Passport",
+ "PassportName", state->who, "PassportName");
body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE,
MsnSoapPartnerScenarioText[partner_scenario],
@@ -1616,7 +1617,6 @@ msn_add_contact_to_list(MsnSession *sess
state->cb = msn_add_contact_to_list_read_cb;
msn_contact_request(state);
- g_free(federate);
g_free(member);
g_free(body);
}
============================================================
--- libpurple/protocols/msn/contact.h 7ab018e76d1d4a0d4638ebedbf4e890ad984bf72
+++ libpurple/protocols/msn/contact.h 7ca6d016c5474b5285f0e09719cd19665bee9bc7
@@ -397,28 +397,18 @@
#define MSN_MEMBER_PASSPORT_XML \
"<Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"%s\">"\
- "<Type>Passport</Type>"\
+ "<Type>%s</Type>"\
"<State>Accepted</State>"\
- "<PassportName>%s</PassportName>"\
- "%s"\
+ "<%s>%s</%s>"\
"</Member>"
#define MSN_MEMBER_MEMBERSHIPID_XML \
"<Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"%s\">"\
- "<Type>Passport</Type>"\
+ "<Type>%s</Type>"\
"<MembershipId>%u</MembershipId>"\
"<State>Accepted</State>"\
- "%s"\
"</Member>"
-#define MSN_MEMBER_FEDERATED_ANNOTATION_XML \
- "<Annotations>"\
- "<Annotation>"\
- "<Name>MSN.IM.BuddyType</Name>"\
- "<Value>%02d:</Value>"\
- "</Annotation>"\
- "</Annotations>"
-
/* first delete contact from allow list */
#define MSN_CONTACT_DELETE_FROM_LIST_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
More information about the Commits
mailing list