diff options
author | Ma Yuan <mayuan2006@gmail.com> | 2006-08-15 16:48:32 +0000 |
---|---|---|
committer | Ma Yuan <mayuan2006@gmail.com> | 2006-08-15 16:48:32 +0000 |
commit | eec5e1782c52e9c224e957870a14cff87541ebac (patch) | |
tree | 02ed15b1a486549d5fcfd7885cef4567ca19dfec | |
parent | 4518cc97d70296e242f17e7572d10220eb119989 (diff) | |
download | pidgin-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.c | 1 | ||||
-rw-r--r-- | src/protocols/msn/notification.c | 79 |
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); |