Mercurial > pidgin
comparison libgaim/protocols/msn/notification.c @ 20391:0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
"new version, fixes some crashes because group_id is char * but in some
places it's set to an int (!). skadotnet, I don't understand why you need
`if (!strcmp(type, "MFN")) {` in so many places, so I didn't include most
of them. I also have different versions of some of your fixes because I
already fixed them.
Group manipulations may still not work, at least it's not crashing :-)"
committer: Richard Laager <rlaager@wiktel.com>
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Sun, 15 Apr 2007 02:43:47 +0000 |
parents | e354528c4163 |
children | 9ba7dee775e1 |
comparison
equal
deleted
inserted
replaced
20390:d634f88e25d8 | 20391:0b0ecee55091 |
---|---|
35 static MsnTable *cbs_table; | 35 static MsnTable *cbs_table; |
36 | 36 |
37 /**************************************************************************** | 37 /**************************************************************************** |
38 * Local Function Prototype | 38 * Local Function Prototype |
39 ****************************************************************************/ | 39 ****************************************************************************/ |
40 void msn_notification_post_adl(MsnCmdProc *cmdproc,char *payload ,int payload_len); | 40 |
41 | 41 static void msn_notification_fqy_yahoo(MsnSession *session, const char *passport); |
42 void msn_add_contact_xml(xmlnode *mlNode,const char *passport,int list_op,int type); | 42 static void msn_notification_post_adl(MsnCmdProc *cmdproc, char *payload, int payload_len); |
43 static void msn_add_contact_xml(xmlnode *mlNode, const char *passport, int list_op, int type); | |
43 | 44 |
44 /************************************************************************** | 45 /************************************************************************** |
45 * Main | 46 * Main |
46 **************************************************************************/ | 47 **************************************************************************/ |
47 | 48 |
231 account = session->account; | 232 account = session->account; |
232 gc = gaim_account_get_connection(account); | 233 gc = gaim_account_get_connection(account); |
233 | 234 |
234 if (!g_ascii_strcasecmp(cmd->params[1], "OK")){ | 235 if (!g_ascii_strcasecmp(cmd->params[1], "OK")){ |
235 /* authenticate OK */ | 236 /* authenticate OK */ |
237 /* friendly name part no longer true in msnp11 */ | |
238 #if 0 | |
236 const char *friendly = gaim_url_decode(cmd->params[3]); | 239 const char *friendly = gaim_url_decode(cmd->params[3]); |
237 | 240 |
238 gaim_connection_set_display_name(gc, friendly); | 241 gaim_connection_set_display_name(gc, friendly); |
239 | 242 #endif |
240 msn_session_set_login_step(session, MSN_LOGIN_STEP_SYN); | 243 msn_session_set_login_step(session, MSN_LOGIN_STEP_SYN); |
241 | 244 |
242 // msn_cmdproc_send(cmdproc, "SYN", "%s", "0"); | 245 // msn_cmdproc_send(cmdproc, "SYN", "%s", "0"); |
243 //TODO we should use SOAP contact to fetch contact list | 246 //TODO we should use SOAP contact to fetch contact list |
244 }else if (!g_ascii_strcasecmp(cmd->params[1], "TWN")){ | 247 } else if (!g_ascii_strcasecmp(cmd->params[1], "TWN")){ |
245 /* Passport authentication */ | 248 /* Passport authentication */ |
246 char **elems, **cur, **tokens; | 249 char **elems, **cur, **tokens; |
247 | 250 |
248 session->nexus = msn_nexus_new(session); | 251 session->nexus = msn_nexus_new(session); |
249 | 252 |
559 | 562 |
560 /************************************************************************** | 563 /************************************************************************** |
561 * Buddy Lists | 564 * Buddy Lists |
562 **************************************************************************/ | 565 **************************************************************************/ |
563 /* add contact to xmlnode */ | 566 /* add contact to xmlnode */ |
564 void | 567 static void |
565 msn_add_contact_xml(xmlnode *mlNode,const char *passport,int list_op,int type) | 568 msn_add_contact_xml(xmlnode *mlNode,const char *passport,int list_op,int type) |
566 { | 569 { |
567 xmlnode *d_node,*c_node; | 570 xmlnode *d_node,*c_node; |
568 char **tokens; | 571 char **tokens; |
569 char *email,*domain; | 572 char *email,*domain; |
620 xmlnode_insert_child(d_node, c_node); | 623 xmlnode_insert_child(d_node, c_node); |
621 | 624 |
622 g_free(tokens); | 625 g_free(tokens); |
623 } | 626 } |
624 | 627 |
625 void | 628 static void |
626 msn_notification_post_adl(MsnCmdProc *cmdproc,char *payload, int payload_len) | 629 msn_notification_post_adl(MsnCmdProc *cmdproc,char *payload, int payload_len) |
627 { | 630 { |
628 MsnTransaction *trans; | 631 MsnTransaction *trans; |
632 const char *display_name; | |
633 const char *friendly; | |
634 | |
635 display_name = gaim_connection_get_display_name(cmdproc->session->account->gc); | |
636 if (display_name) { | |
637 friendly = gaim_url_encode(display_name); | |
638 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", friendly); | |
639 } | |
640 | |
629 | 641 |
630 gaim_debug_info("MaYuan","Send ADL{%s}\n",payload); | 642 gaim_debug_info("MaYuan","Send ADL{%s}\n",payload); |
631 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); | 643 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); |
632 msn_transaction_set_payload(trans, payload, strlen(payload)); | 644 msn_transaction_set_payload(trans, payload, strlen(payload)); |
633 msn_cmdproc_send_trans(cmdproc, trans); | 645 msn_cmdproc_send_trans(cmdproc, trans); |
660 | 672 |
661 msn_notification_post_adl(session->notification->cmdproc,payload,payload_len); | 673 msn_notification_post_adl(session->notification->cmdproc,payload,payload_len); |
662 } | 674 } |
663 | 675 |
664 /*Post FQY to NS,Inform add a Yahoo User*/ | 676 /*Post FQY to NS,Inform add a Yahoo User*/ |
665 void | 677 static void |
666 msn_notification_fqy_yahoo(MsnSession *session,char *passport) | 678 msn_notification_fqy_yahoo(MsnSession *session, const char *passport) |
667 { | 679 { |
668 MsnTransaction *trans; | 680 MsnTransaction *trans; |
669 MsnCmdProc *cmdproc; | 681 MsnCmdProc *cmdproc; |
670 char* email,*domain,*payload; | 682 char* email,*domain,*payload; |
671 char **tokens; | 683 char **tokens; |
713 } | 725 } |
714 | 726 |
715 static void | 727 static void |
716 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 728 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
717 { | 729 { |
730 #if 0 | |
718 MsnTransaction *trans; | 731 MsnTransaction *trans; |
719 char * payload; | 732 char * payload; |
733 #endif | |
720 | 734 |
721 gaim_debug_info("MaYuan","Process ADL\n"); | 735 gaim_debug_info("MaYuan","Process ADL\n"); |
722 #if 0 | 736 #if 0 |
723 trans = msn_transaction_new(cmdproc, "RML",""); | 737 trans = msn_transaction_new(cmdproc, "RML",""); |
724 | 738 |
818 | 832 |
819 group_id = atoi(cmd->params[3]); | 833 group_id = atoi(cmd->params[3]); |
820 | 834 |
821 group_name = gaim_url_decode(cmd->params[2]); | 835 group_name = gaim_url_decode(cmd->params[2]); |
822 | 836 |
823 msn_group_new(session->userlist, group_id, group_name); | 837 msn_group_new(session->userlist, cmd->params[3], group_name); |
824 | 838 |
825 /* There is a user that must me moved to this group */ | 839 /* There is a user that must me moved to this group */ |
826 if (cmd->trans->data) | 840 if (cmd->trans->data) |
827 { | 841 { |
828 /* msn_userlist_move_buddy(); */ | 842 /* msn_userlist_move_buddy(); */ |
1043 msn_user_set_home_phone(session->user, NULL); | 1057 msn_user_set_home_phone(session->user, NULL); |
1044 else if (!strcmp(type, "PHW")) | 1058 else if (!strcmp(type, "PHW")) |
1045 msn_user_set_work_phone(session->user, NULL); | 1059 msn_user_set_work_phone(session->user, NULL); |
1046 else if (!strcmp(type, "PHM")) | 1060 else if (!strcmp(type, "PHM")) |
1047 msn_user_set_mobile_phone(session->user, NULL); | 1061 msn_user_set_mobile_phone(session->user, NULL); |
1062 else if (!strcmp(type, "MFM")) { | |
1063 type = cmd->params[1]; | |
1064 gaim_connection_set_display_name( | |
1065 gaim_account_get_connection(session->account), | |
1066 gaim_url_decode(cmd->params[2])); | |
1067 } | |
1048 } | 1068 } |
1049 } | 1069 } |
1050 | 1070 |
1051 static void | 1071 static void |
1052 reg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1072 reg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1053 { | 1073 { |
1054 MsnSession *session; | 1074 MsnSession *session; |
1055 int group_id; | 1075 const char *group_id, *group_name; |
1056 const char *group_name; | |
1057 | 1076 |
1058 session = cmdproc->session; | 1077 session = cmdproc->session; |
1059 group_id = atoi(cmd->params[2]); | 1078 group_id = cmd->params[2]; |
1060 group_name = gaim_url_decode(cmd->params[3]); | 1079 group_name = gaim_url_decode(cmd->params[3]); |
1061 | 1080 |
1062 msn_userlist_rename_group_id(session->userlist, group_id, group_name); | 1081 msn_userlist_rename_group_id(session->userlist, group_id, group_name); |
1063 } | 1082 } |
1064 | 1083 |
1080 static void | 1099 static void |
1081 rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1100 rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1082 { | 1101 { |
1083 MsnSession *session; | 1102 MsnSession *session; |
1084 MsnUser *user; | 1103 MsnUser *user; |
1085 const char *list; | 1104 const char *group_id, *list, *passport; |
1086 const char *passport; | |
1087 MsnListId list_id; | 1105 MsnListId list_id; |
1088 int group_id; | |
1089 | 1106 |
1090 session = cmdproc->session; | 1107 session = cmdproc->session; |
1091 list = cmd->params[1]; | 1108 list = cmd->params[1]; |
1092 passport = cmd->params[3]; | 1109 passport = cmd->params[3]; |
1093 user = msn_userlist_find_user(session->userlist, passport); | 1110 user = msn_userlist_find_user(session->userlist, passport); |
1095 g_return_if_fail(user != NULL); | 1112 g_return_if_fail(user != NULL); |
1096 | 1113 |
1097 list_id = msn_get_list_id(list); | 1114 list_id = msn_get_list_id(list); |
1098 | 1115 |
1099 if (cmd->param_count == 5) | 1116 if (cmd->param_count == 5) |
1100 group_id = atoi(cmd->params[4]); | 1117 group_id = cmd->params[4]; |
1101 else | 1118 else |
1102 group_id = -1; | 1119 group_id = NULL; |
1103 | 1120 |
1104 msn_got_rem_user(session, user, list_id, group_id); | 1121 msn_got_rem_user(session, user, list_id, group_id); |
1105 msn_user_update(user); | 1122 msn_user_update(user); |
1106 } | 1123 } |
1107 | 1124 |
1108 static void | 1125 static void |
1109 rmg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1126 rmg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1110 { | 1127 { |
1111 MsnSession *session; | 1128 MsnSession *session; |
1112 int group_id; | 1129 const char *group_id; |
1113 | 1130 |
1114 session = cmdproc->session; | 1131 session = cmdproc->session; |
1115 group_id = atoi(cmd->params[2]); | 1132 group_id = cmd->params[2]; |
1116 | 1133 |
1117 msn_userlist_remove_group_id(session->userlist, group_id); | 1134 msn_userlist_remove_group_id(session->userlist, group_id); |
1118 } | 1135 } |
1119 | 1136 |
1120 static void | 1137 static void |
1121 rmg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | 1138 rmg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) |
1122 { | 1139 { |
1123 int group_id; | 1140 const char *group_id; |
1124 char **params; | 1141 char **params; |
1125 | 1142 |
1126 params = g_strsplit(trans->params, " ", 0); | 1143 params = g_strsplit(trans->params, " ", 0); |
1127 | 1144 |
1128 group_id = atoi(params[0]); | 1145 group_id = atoi(params[0]); |
1410 { | 1427 { |
1411 MsnSession *session; | 1428 MsnSession *session; |
1412 GaimAccount *account; | 1429 GaimAccount *account; |
1413 GaimConnection *gc; | 1430 GaimConnection *gc; |
1414 MsnUser *user; | 1431 MsnUser *user; |
1415 const char *passport, *psm_str; | 1432 const char *passport; |
1433 char *psm_str; | |
1416 | 1434 |
1417 /*get the payload content*/ | 1435 /*get the payload content*/ |
1418 // gaim_debug_info("MaYuan","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload); | 1436 // gaim_debug_info("MaYuan","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload); |
1419 | 1437 |
1420 session = cmdproc->session; | 1438 session = cmdproc->session; |
1505 msn_userlist_load(session); | 1523 msn_userlist_load(session); |
1506 | 1524 |
1507 msn_session_set_bnode(session); | 1525 msn_session_set_bnode(session); |
1508 session->contact = msn_contact_new(session); | 1526 session->contact = msn_contact_new(session); |
1509 clLastChange = gaim_blist_node_get_string(msn_session_get_bnode(session),"CLLastChange"); | 1527 clLastChange = gaim_blist_node_get_string(msn_session_get_bnode(session),"CLLastChange"); |
1510 msn_get_contact_list(session->contact,clLastChange); | 1528 msn_get_contact_list(session->contact, clLastChange); |
1511 // msn_contact_connect(session->contact); | 1529 // msn_contact_connect(session->contact); |
1512 } | 1530 } |
1513 | 1531 |
1514 static void | 1532 static void |
1515 initial_email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | 1533 initial_email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
1736 msn_notification_add_buddy(MsnNotification *notification, const char *list, | 1754 msn_notification_add_buddy(MsnNotification *notification, const char *list, |
1737 const char *who, const char *store_name, | 1755 const char *who, const char *store_name, |
1738 const char *group_id) | 1756 const char *group_id) |
1739 { | 1757 { |
1740 MsnCmdProc *cmdproc; | 1758 MsnCmdProc *cmdproc; |
1741 MsnTransaction *trans; | |
1742 xmlnode *adl_node; | 1759 xmlnode *adl_node; |
1743 char *payload; | 1760 char *payload; |
1744 int payload_len; | 1761 int payload_len; |
1745 | 1762 |
1746 cmdproc = notification->servconn->cmdproc; | 1763 cmdproc = notification->servconn->cmdproc; |