summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMa Yuan <mayuan2006@gmail.com>2006-08-15 16:48:32 +0000
committerMa Yuan <mayuan2006@gmail.com>2006-08-15 16:48:32 +0000
commiteec5e1782c52e9c224e957870a14cff87541ebac (patch)
tree02ed15b1a486549d5fcfd7885cef4567ca19dfec
parent4518cc97d70296e242f17e7572d10220eb119989 (diff)
downloadpidgin-eec5e1782c52e9c224e957870a14cff87541ebac.tar.gz
[gaim-migrate @ 16772]
change the UUX and FQY command procedure comitted by MaYuan<mayuan2006@gmail.com> committer: Ethan Blanton <elb@pidgin.im>
-rw-r--r--src/protocols/msn/command.c1
-rw-r--r--src/protocols/msn/notification.c79
2 files changed, 70 insertions, 10 deletions
diff --git a/src/protocols/msn/command.c b/src/protocols/msn/command.c
index ebd1234fea..f31e6c31a2 100644
--- a/src/protocols/msn/command.c
+++ b/src/protocols/msn/command.c
@@ -53,6 +53,7 @@ msn_check_payload_cmd(char *str)
(!strcmp(str,"UBN")) ||
(!strcmp(str,"UUM")) ||
(!strcmp(str,"UBM")) ||
+ (!strcmp(str,"FQY")) ||
(!strcmp(str,"UUN")) ||
(!strcmp(str,"UUX"))){
return TRUE;
diff --git a/src/protocols/msn/notification.c b/src/protocols/msn/notification.c
index 30a6305ebd..b6d4476991 100644
--- a/src/protocols/msn/notification.c
+++ b/src/protocols/msn/notification.c
@@ -37,6 +37,8 @@ static MsnTable *cbs_table;
/****************************************************************************
* Local Function Prototype
****************************************************************************/
+void msn_notification_post_adl(MsnCmdProc *cmdproc,char *payload ,int payload_len);
+
void msn_add_contact_xml(xmlnode *mlNode,const char *passport,int list_op,int type);
/**************************************************************************
@@ -447,7 +449,7 @@ ubm_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
const char *body;
char *body_str;
char *body_enc;
- char *body_final;
+ char *body_final = NULL;
size_t body_len;
body = msn_message_get_bin_data(msg, &body_len);
@@ -614,14 +616,25 @@ msn_add_contact_xml(xmlnode *mlNode,const char *passport,int list_op,int type)
g_free(type_str);
#endif
xmlnode_insert_child(d_node, c_node);
+
+ g_free(tokens);
+}
+
+void
+msn_notification_post_adl(MsnCmdProc *cmdproc,char *payload, int payload_len)
+{
+ MsnTransaction *trans;
+
+ gaim_debug_info("MaYuan","Send ADL{%s}\n",payload);
+ trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload));
+ msn_transaction_set_payload(trans, payload, strlen(payload));
+ msn_cmdproc_send_trans(cmdproc, trans);
}
/*dump contact info to NS*/
void
msn_notification_dump_contact(MsnSession *session)
{
- MsnCmdProc *cmdproc;
- MsnTransaction *trans;
MsnUserList *userlist;
MsnUser *user;
GList *l;
@@ -629,7 +642,6 @@ msn_notification_dump_contact(MsnSession *session)
char *payload;
int payload_len;
- cmdproc = session->notification->cmdproc;
userlist = session->userlist;
adl_node = xmlnode_new("ml");
adl_node->child = NULL;
@@ -644,10 +656,31 @@ msn_notification_dump_contact(MsnSession *session)
payload = xmlnode_to_str(adl_node,&payload_len);
xmlnode_free(adl_node);
- gaim_debug_info("MaYuan","ADL{%s}\n",payload);
- trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload));
+ msn_notification_post_adl(session->notification->cmdproc,payload,payload_len);
+}
+
+/*Post FQY to NS,Inform add a Yahoo User*/
+void
+msn_notification_fqy_yahoo(MsnSession *session,char *passport)
+{
+ MsnTransaction *trans;
+ MsnCmdProc *cmdproc;
+ char* email,*domain,*payload;
+ char **tokens;
+
+ cmdproc = session->notification->cmdproc;
+
+ tokens = g_strsplit(passport, "@", 2);
+ email = tokens[0];
+ domain = tokens[1];
+
+ payload = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>",domain,email);
+ trans = msn_transaction_new(cmdproc, "FQY","%d",strlen(payload));
msn_transaction_set_payload(trans, payload, strlen(payload));
msn_cmdproc_send_trans(cmdproc, trans);
+
+ g_free(payload);
+ g_free(tokens);
}
static void
@@ -663,6 +696,21 @@ adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
}
static void
+fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+ size_t len)
+{
+ gaim_debug_info("MaYuan","FQY payload{%s}\n",payload);
+ msn_notification_post_adl(cmdproc,payload,len);
+}
+
+static void
+fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+ gaim_debug_info("MaYuan","Process FQY\n");
+ cmdproc->last_cmd->payload_cb = fqy_cmd_post;
+}
+
+static void
rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
MsnTransaction *trans;
@@ -1344,9 +1392,21 @@ sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
}
static void
+ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+ size_t len)
+{
+ /*get the payload content*/
+ gaim_debug_info("MaYuan","ubx{%s}\n",cmd->payload);
+}
+
+static void
ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
gaim_debug_info("MaYuan","UBX... \n");
+ if(cmd->payload_len == 0){
+ return;
+ }
+ cmdproc->last_cmd->payload_cb = ubx_cmd_post;
}
static void
@@ -1653,10 +1713,8 @@ msn_notification_add_buddy(MsnNotification *notification, const char *list,
payload = xmlnode_to_str(adl_node,&payload_len);
xmlnode_free(adl_node);
- gaim_debug_info("MaYuan","ADL{%s}\n",payload);
- trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload));
- msn_transaction_set_payload(trans, payload, strlen(payload));
- msn_cmdproc_send_trans(cmdproc, trans);
+ msn_notification_post_adl(notification->servconn->cmdproc,
+ payload,payload_len);
}
void
@@ -1727,6 +1785,7 @@ msn_notification_init(void)
msn_table_add_cmd(cbs_table, NULL, "CHL", chl_cmd);
msn_table_add_cmd(cbs_table, NULL, "RML", rml_cmd);
msn_table_add_cmd(cbs_table, NULL, "ADL", adl_cmd);
+ msn_table_add_cmd(cbs_table, NULL, "FQY", fqy_cmd);
msn_table_add_cmd(cbs_table, NULL, "QRY", NULL);
msn_table_add_cmd(cbs_table, NULL, "QNG", NULL);