comparison libpurple/protocols/msn/msn.c @ 20449:4403cecc7cd6

propagate from branch 'im.pidgin.pidgin' (head 850e223e9597fdc482eebe75c00efda941b3bdb6) to branch 'im.pidgin.cpw.khc.msnp14' (head 92f5b4953a29318b630e01b296e54d1037fe96d3)
author Stu Tomlinson <stu@nosnilmot.com>
date Sun, 03 Jun 2007 00:40:27 +0000
parents 02abb6713cf2 8e722e947e00
children 69febfa6d307
comparison
equal deleted inserted replaced
17667:98f27c7f0ef5 20449:4403cecc7cd6
35 #include "state.h" 35 #include "state.h"
36 #include "util.h" 36 #include "util.h"
37 #include "cmds.h" 37 #include "cmds.h"
38 #include "core.h" 38 #include "core.h"
39 #include "prpl.h" 39 #include "prpl.h"
40 #include "msn-utils.h" 40 #include "msnutils.h"
41 #include "version.h" 41 #include "version.h"
42 42
43 #include "switchboard.h" 43 #include "switchboard.h"
44 #include "notification.h" 44 #include "notification.h"
45 #include "sync.h" 45 #include "sync.h"
121 purple_conversation_write(conv, NULL, _("You have just sent a Nudge!"), PURPLE_MESSAGE_SYSTEM, time(NULL)); 121 purple_conversation_write(conv, NULL, _("You have just sent a Nudge!"), PURPLE_MESSAGE_SYSTEM, time(NULL));
122 122
123 return PURPLE_CMD_RET_OK; 123 return PURPLE_CMD_RET_OK;
124 } 124 }
125 125
126 static void 126 void
127 msn_act_id(PurpleConnection *gc, const char *entry) 127 msn_act_id(PurpleConnection *gc, const char *entry)
128 { 128 {
129 MsnCmdProc *cmdproc; 129 MsnCmdProc *cmdproc;
130 MsnSession *session; 130 MsnSession *session;
131 PurpleAccount *account; 131 PurpleAccount *account;
132 const char *alias; 132 const char *alias;
133
134 char *soapbody;
135 MsnSoapReq *soap_request;
133 136
134 session = gc->proto_data; 137 session = gc->proto_data;
135 cmdproc = session->notification->cmdproc; 138 cmdproc = session->notification->cmdproc;
136 account = purple_connection_get_account(gc); 139 account = purple_connection_get_account(gc);
137 140
145 purple_notify_error(gc, NULL, 148 purple_notify_error(gc, NULL,
146 _("Your new MSN friendly name is too long."), NULL); 149 _("Your new MSN friendly name is too long."), NULL);
147 return; 150 return;
148 } 151 }
149 152
150 msn_cmdproc_send(cmdproc, "REA", "%s %s", 153 if (*alias == '\0') {
151 purple_account_get_username(account), 154 alias = purple_url_encode(purple_account_get_username(account));
152 alias); 155 }
156
157 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias);
158
159 soapbody = g_strdup_printf(MSN_CONTACT_UPDATE_TEMPLATE, alias);
160 /*build SOAP and POST it*/
161 soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
162 MSN_ADDRESS_BOOK_POST_URL,
163 MSN_CONTACT_UPDATE_SOAP_ACTION,
164 soapbody,
165 NULL,
166 NULL);
167
168 session->contact->soapconn->read_cb = NULL;
169 msn_soap_post(session->contact->soapconn,
170 soap_request,
171 msn_contact_connect_init);
172
173 g_free(soapbody);
153 } 174 }
154 175
155 static void 176 static void
156 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry) 177 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry)
157 { 178 {
430 PurpleXfer *xfer; 451 PurpleXfer *xfer;
431 452
432 session = gc->proto_data; 453 session = gc->proto_data;
433 454
434 xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who); 455 xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who);
456
435 if (xfer) 457 if (xfer)
436 { 458 {
437 slplink = msn_session_get_slplink(session, who); 459 slplink = msn_session_get_slplink(session, who);
438 460
439 xfer->data = slplink; 461 xfer->data = slplink;
481 msn_list_icon(PurpleAccount *a, PurpleBuddy *b) 503 msn_list_icon(PurpleAccount *a, PurpleBuddy *b)
482 { 504 {
483 return "msn"; 505 return "msn";
484 } 506 }
485 507
508 /*
509 * Set the User status text
510 * Add the PSM String Using "Name - PSM String" format
511 */
486 static char * 512 static char *
487 msn_status_text(PurpleBuddy *buddy) 513 msn_status_text(PurpleBuddy *buddy)
488 { 514 {
489 PurplePresence *presence; 515 PurplePresence *presence;
490 PurpleStatus *status; 516 PurpleStatus *status;
517 const char *msg, *name, *cmedia;
518 char *psm_str, *tmp2, *text;
491 519
492 presence = purple_buddy_get_presence(buddy); 520 presence = purple_buddy_get_presence(buddy);
493 status = purple_presence_get_active_status(presence); 521 status = purple_presence_get_active_status(presence);
494 522
495 if (!purple_presence_is_available(presence) && !purple_presence_is_idle(presence)) 523 msg = purple_status_get_attr_string(status, "message");
496 { 524 cmedia=purple_status_get_attr_string(status, "currentmedia");
497 return g_strdup(purple_status_get_name(status)); 525
526 if (!purple_presence_is_available(presence) && !purple_presence_is_idle(presence)){
527 name = purple_status_get_name(status);
528 }else{
529 name = NULL;
530 }
531
532 if (cmedia != NULL) {
533 if(name) {
534 tmp2 = g_strdup_printf("%s - %s", name, cmedia);
535 text = g_markup_escape_text(tmp2, -1);
536 } else {
537 text = g_markup_escape_text(cmedia, -1);
538 }
539 return text;
540 } else if (msg != NULL) {
541 tmp2 = purple_markup_strip_html(msg);
542 if (name){
543 psm_str = g_strdup_printf("%s - %s", name, tmp2);
544 g_free(tmp2);
545 }else{
546 psm_str = tmp2;
547 }
548 text = g_markup_escape_text(psm_str, -1);
549 g_free(psm_str);
550 return text;
551 } else {
552 if (!purple_presence_is_available(presence) && !purple_presence_is_idle(presence)){
553 psm_str = g_strdup(purple_status_get_name(status));
554 text = g_markup_escape_text(psm_str, -1);
555 g_free(psm_str);
556 return text;
557 }
498 } 558 }
499 559
500 return NULL; 560 return NULL;
501 } 561 }
502 562
510 user = buddy->proto_data; 570 user = buddy->proto_data;
511 571
512 572
513 if (purple_presence_is_online(presence)) 573 if (purple_presence_is_online(presence))
514 { 574 {
575 const char *psm, *currentmedia;
576 char *tmp;
577
578 psm = purple_status_get_attr_string(status, "message");
579 currentmedia = purple_status_get_attr_string(status, "currentmedia");
580
515 purple_notify_user_info_add_pair(user_info, _("Status"), 581 purple_notify_user_info_add_pair(user_info, _("Status"),
516 (purple_presence_is_idle(presence) ? _("Idle") : purple_status_get_name(status))); 582 (purple_presence_is_idle(presence) ? _("Idle") : purple_status_get_name(status)));
583 if (psm) {
584 tmp = g_markup_escape_text(psm, -1);
585 purple_notify_user_info_add_pair(user_info, _("PSM"), tmp);
586 g_free(tmp);
587 }
588 if (currentmedia) {
589 tmp = g_markup_escape_text(currentmedia, -1);
590 purple_notify_user_info_add_pair(user_info, _("Current media"), tmp);
591 g_free(tmp);
592 }
517 } 593 }
518 594
519 if (full && user) 595 if (full && user)
520 { 596 {
521 purple_notify_user_info_add_pair(user_info, _("Has you"), 597 purple_notify_user_info_add_pair(user_info, _("Has you"),
536 static GList * 612 static GList *
537 msn_status_types(PurpleAccount *account) 613 msn_status_types(PurpleAccount *account)
538 { 614 {
539 PurpleStatusType *status; 615 PurpleStatusType *status;
540 GList *types = NULL; 616 GList *types = NULL;
541 617 #if 0
542 status = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE, 618 status = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE,
543 NULL, NULL, FALSE, TRUE, FALSE); 619 NULL, NULL, FALSE, TRUE, FALSE);
620 #endif
621 status = purple_status_type_new_with_attrs(
622 PURPLE_STATUS_AVAILABLE, NULL, NULL, TRUE, TRUE, FALSE,
623 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
624 "currentmedia", _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
625 NULL);
544 types = g_list_append(types, status); 626 types = g_list_append(types, status);
545 627
546 status = purple_status_type_new_full(PURPLE_STATUS_AWAY, 628 status = purple_status_type_new_with_attrs(
547 NULL, NULL, FALSE, TRUE, FALSE); 629 PURPLE_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE,
630 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
631 "currentmedia", _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
632 NULL);
548 types = g_list_append(types, status); 633 types = g_list_append(types, status);
549 634
550 status = purple_status_type_new_full(PURPLE_STATUS_AWAY, 635 status = purple_status_type_new_with_attrs(
551 "brb", _("Be Right Back"), FALSE, TRUE, FALSE); 636 PURPLE_STATUS_AWAY, "brb", _("Be Right Back"), TRUE, TRUE, FALSE,
637 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
638 "currentmedia", _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
639 NULL);
552 types = g_list_append(types, status); 640 types = g_list_append(types, status);
553 641
554 status = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE, 642 status = purple_status_type_new_with_attrs(
555 "busy", _("Busy"), FALSE, TRUE, FALSE); 643 PURPLE_STATUS_UNAVAILABLE, "busy", _("Busy"), TRUE, TRUE, FALSE,
644 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
645 "currentmedia", _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
646 NULL);
556 types = g_list_append(types, status); 647 types = g_list_append(types, status);
557 648 status = purple_status_type_new_with_attrs(
558 status = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE, 649 PURPLE_STATUS_UNAVAILABLE, "phone", _("On the Phone"), TRUE, TRUE, FALSE,
559 "phone", _("On the Phone"), FALSE, TRUE, FALSE); 650 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
651 "currentmedia", _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
652 NULL);
560 types = g_list_append(types, status); 653 types = g_list_append(types, status);
561 654 status = purple_status_type_new_with_attrs(
562 status = purple_status_type_new_full(PURPLE_STATUS_AWAY, 655 PURPLE_STATUS_AWAY, "lunch", _("Out to Lunch"), TRUE, TRUE, FALSE,
563 "lunch", _("Out to Lunch"), FALSE, TRUE, FALSE); 656 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
657 "currentmedia", _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
658 NULL);
564 types = g_list_append(types, status); 659 types = g_list_append(types, status);
565 660
566 status = purple_status_type_new_full(PURPLE_STATUS_INVISIBLE, 661 status = purple_status_type_new_full(PURPLE_STATUS_INVISIBLE,
567 NULL, NULL, FALSE, TRUE, FALSE); 662 NULL, NULL, FALSE, TRUE, FALSE);
568 types = g_list_append(types, status); 663 types = g_list_append(types, status);
569 664
570 status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, 665 status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE,
571 NULL, NULL, FALSE, TRUE, FALSE); 666 NULL, NULL, FALSE, TRUE, FALSE);
572 types = g_list_append(types, status); 667 types = g_list_append(types, status);
573 668
574 status = purple_status_type_new_full(PURPLE_STATUS_MOBILE, 669 status = purple_status_type_new_full(PURPLE_STATUS_MOBILE,
575 "mobile", NULL, FALSE, FALSE, TRUE); 670 "mobile", NULL, FALSE, FALSE, TRUE);
576 types = g_list_append(types, status); 671 types = g_list_append(types, status);
577 672
578 return types; 673 return types;
579 } 674 }
580 675
581 static GList * 676 static GList *
582 msn_actions(PurplePlugin *plugin, gpointer context) 677 msn_actions(PurplePlugin *plugin, gpointer context)
755 PurpleBuddy *buddy = purple_find_buddy(gc->account, who); 850 PurpleBuddy *buddy = purple_find_buddy(gc->account, who);
756 MsnMessage *msg; 851 MsnMessage *msg;
757 char *msgformat; 852 char *msgformat;
758 char *msgtext; 853 char *msgtext;
759 854
855 purple_debug_info("MaYuan","send IM {%s} to %s\n",message,who);
760 account = purple_connection_get_account(gc); 856 account = purple_connection_get_account(gc);
761 857
762 if (buddy) { 858 if (buddy) {
763 PurplePresence *p = purple_buddy_get_presence(buddy); 859 PurplePresence *p = purple_buddy_get_presence(buddy);
764 if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_MOBILE)) { 860 if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_MOBILE)) {
768 return 1; 864 return 1;
769 } 865 }
770 } 866 }
771 867
772 msn_import_html(message, &msgformat, &msgtext); 868 msn_import_html(message, &msgformat, &msgtext);
773 869 if(msn_user_is_online(account, who)||
774 if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) 870 msn_user_is_yahoo(account, who)){
775 { 871 /*User online,then send Online Instant Message*/
872
873 if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564)
874 {
875 g_free(msgformat);
876 g_free(msgtext);
877
878 return -E2BIG;
879 }
880
881 msg = msn_message_new_plain(msgtext);
882 msg->remote_user = g_strdup(who);
883 msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat);
884
776 g_free(msgformat); 885 g_free(msgformat);
777 g_free(msgtext); 886 g_free(msgtext);
778 887
779 return -E2BIG; 888 purple_debug_info("MaYuan","prepare to send online Message\n");
780 } 889 if (g_ascii_strcasecmp(who, purple_account_get_username(account)))
781 890 {
782 msg = msn_message_new_plain(msgtext); 891 MsnSession *session;
783 msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); 892 MsnSwitchBoard *swboard;
784 893
785 g_free(msgformat); 894 session = gc->proto_data;
786 g_free(msgtext); 895 if(msn_user_is_yahoo(account,who)){
787 896 /*we send the online and offline Message to Yahoo User via UBM*/
788 if (g_ascii_strcasecmp(who, purple_account_get_username(account))) 897 purple_debug_info("MaYuan","send to Yahoo User\n");
789 { 898 uum_send_msg(session,msg);
899 }else{
900 purple_debug_info("MaYuan","send via switchboard\n");
901 swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM);
902 msn_switchboard_send_msg(swboard, msg, TRUE);
903 }
904 }
905 else
906 {
907 char *body_str, *body_enc, *pre, *post;
908 const char *format;
909 MsnIMData *imdata = g_new0(MsnIMData, 1);
910 /*
911 * In MSN, you can't send messages to yourself, so
912 * we'll fake like we received it ;)
913 */
914 body_str = msn_message_to_string(msg);
915 body_enc = g_markup_escape_text(body_str, -1);
916 g_free(body_str);
917
918 format = msn_message_get_attr(msg, "X-MMS-IM-Format");
919 msn_parse_format(format, &pre, &post);
920 body_str = g_strdup_printf("%s%s%s", pre ? pre : "",
921 body_enc ? body_enc : "", post ? post : "");
922 g_free(body_enc);
923 g_free(pre);
924 g_free(post);
925
926 serv_got_typing_stopped(gc, who);
927 imdata->gc = gc;
928 imdata->who = who;
929 imdata->msg = body_str;
930 imdata->flags = flags;
931 imdata->when = time(NULL);
932 g_idle_add(msn_send_me_im, imdata);
933 }
934
935 msn_message_destroy(msg);
936 }else {
937 /*send Offline Instant Message,only to MSN Passport User*/
790 MsnSession *session; 938 MsnSession *session;
791 MsnSwitchBoard *swboard; 939 MsnOim *oim;
792 940 char *friendname;
941
942 purple_debug_info("MaYuan","prepare to send offline Message\n");
793 session = gc->proto_data; 943 session = gc->proto_data;
794 swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM); 944 /* XXX/khc: hack */
795 945 if (!session->oim)
796 msn_switchboard_send_msg(swboard, msg, TRUE); 946 session->oim = msn_oim_new(session);
797 } 947
798 else 948 oim = session->oim;
799 { 949 friendname = msn_encode_mime(account->username);
800 char *body_str, *body_enc, *pre, *post; 950 msn_oim_prep_send_msg_info(oim, purple_account_get_username(account),
801 const char *format; 951 friendname, who, message);
802 MsnIMData *imdata = g_new0(MsnIMData, 1); 952 msn_oim_send_msg(oim);
803 /* 953 }
804 * In MSN, you can't send messages to yourself, so
805 * we'll fake like we received it ;)
806 */
807 body_str = msn_message_to_string(msg);
808 body_enc = g_markup_escape_text(body_str, -1);
809 g_free(body_str);
810
811 format = msn_message_get_attr(msg, "X-MMS-IM-Format");
812 msn_parse_format(format, &pre, &post);
813 body_str = g_strdup_printf("%s%s%s", pre ? pre : "",
814 body_enc ? body_enc : "", post ? post : "");
815 g_free(body_enc);
816 g_free(pre);
817 g_free(post);
818
819 serv_got_typing_stopped(gc, who);
820 imdata->gc = gc;
821 imdata->who = who;
822 imdata->msg = body_str;
823 imdata->flags = flags;
824 imdata->when = time(NULL);
825 g_idle_add(msn_send_me_im, imdata);
826 }
827
828 msn_message_destroy(msg);
829 954
830 return 1; 955 return 1;
831 } 956 }
832 957
833 static unsigned int 958 static unsigned int
962 1087
963 session = gc->proto_data; 1088 session = gc->proto_data;
964 userlist = session->userlist; 1089 userlist = session->userlist;
965 who = msn_normalize(gc->account, buddy->name); 1090 who = msn_normalize(gc->account, buddy->name);
966 1091
1092 purple_debug_info("MaYuan","add user:{%s} to group:{%s}\n",who,group->name);
967 if (!session->logged_in) 1093 if (!session->logged_in)
968 { 1094 {
969 #if 0 1095 #if 0
970 fake_userlist_add_buddy(session->sync_userlist, who, MSN_LIST_FL, 1096 fake_userlist_add_buddy(session->sync_userlist, who, MSN_LIST_FL,
971 group ? group->name : NULL); 1097 group ? group->name : NULL);
1254 msn_rename_group(PurpleConnection *gc, const char *old_name, 1380 msn_rename_group(PurpleConnection *gc, const char *old_name,
1255 PurpleGroup *group, GList *moved_buddies) 1381 PurpleGroup *group, GList *moved_buddies)
1256 { 1382 {
1257 MsnSession *session; 1383 MsnSession *session;
1258 MsnCmdProc *cmdproc; 1384 MsnCmdProc *cmdproc;
1259 int old_gid; 1385 const char *old_gid;
1260 const char *enc_new_group_name; 1386 const char *enc_new_group_name;
1261 1387
1262 session = gc->proto_data; 1388 session = gc->proto_data;
1263 cmdproc = session->notification->cmdproc; 1389 cmdproc = session->notification->cmdproc;
1264 enc_new_group_name = purple_url_encode(group->name); 1390 enc_new_group_name = purple_url_encode(group->name);
1265 1391
1392 purple_debug_info("MaYuan","rename group:old{%s},new{%s}",old_name,enc_new_group_name);
1266 old_gid = msn_userlist_find_group_id(session->userlist, old_name); 1393 old_gid = msn_userlist_find_group_id(session->userlist, old_name);
1267 1394
1268 if (old_gid >= 0) 1395 if (old_gid != NULL)
1269 { 1396 {
1397 /*find a Group*/
1270 msn_cmdproc_send(cmdproc, "REG", "%d %s 0", old_gid, 1398 msn_cmdproc_send(cmdproc, "REG", "%d %s 0", old_gid,
1271 enc_new_group_name); 1399 enc_new_group_name);
1272 } 1400 }
1273 else 1401 else
1274 { 1402 {
1403 /*not found*/
1275 msn_cmdproc_send(cmdproc, "ADG", "%s 0", enc_new_group_name); 1404 msn_cmdproc_send(cmdproc, "ADG", "%s 0", enc_new_group_name);
1276 } 1405 }
1277 } 1406 }
1278 1407
1279 static void 1408 static void
1330 static void 1459 static void
1331 msn_remove_group(PurpleConnection *gc, PurpleGroup *group) 1460 msn_remove_group(PurpleConnection *gc, PurpleGroup *group)
1332 { 1461 {
1333 MsnSession *session; 1462 MsnSession *session;
1334 MsnCmdProc *cmdproc; 1463 MsnCmdProc *cmdproc;
1335 int group_id; 1464 const char *group_id;
1336 1465
1337 session = gc->proto_data; 1466 session = gc->proto_data;
1338 cmdproc = session->notification->cmdproc; 1467 cmdproc = session->notification->cmdproc;
1339 1468
1340 if ((group_id = msn_userlist_find_group_id(session->userlist, group->name)) >= 0) 1469 /*we can't delete the default group*/
1341 { 1470 if(!strcmp(group->name,MSN_INDIVIDUALS_GROUP_NAME)||
1342 msn_cmdproc_send(cmdproc, "RMG", "%d", group_id); 1471 !strcmp(group->name,MSN_NON_IM_GROUP_NAME))
1472 {
1473 return ;
1474 }
1475 group_id = msn_userlist_find_group_id(session->userlist, group->name);
1476 if (group_id != NULL)
1477 {
1478 msn_del_group(session,group_id);
1343 } 1479 }
1344 } 1480 }
1345 1481
1346 /** 1482 /**
1347 * Extract info text from info_data and add it to user_info 1483 * Extract info text from info_data and add it to user_info
1388 static char * 1524 static char *
1389 msn_get_photo_url(const char *url_text) 1525 msn_get_photo_url(const char *url_text)
1390 { 1526 {
1391 char *p, *q; 1527 char *p, *q;
1392 1528
1393 if ((p = strstr(url_text, " contactparams:photopreauthurl=\"")) != NULL) 1529 if ((p = strstr(url_text, PHOTO_URL)) != NULL)
1394 { 1530 {
1395 p += strlen(" contactparams:photopreauthurl=\""); 1531 p += strlen(PHOTO_URL);
1396 } 1532 }
1397 1533 if (p && (strncmp(p, "http://",strlen("http://")) == 0) && ((q = strchr(p, '"')) != NULL))
1398 if (p && (strncmp(p, "http://", 8) == 0) && ((q = strchr(p, '"')) != NULL))
1399 return g_strndup(p, q - p); 1534 return g_strndup(p, q - p);
1400 1535
1401 return NULL; 1536 return NULL;
1402 } 1537 }
1403 1538
1458 #if PHOTO_SUPPORT 1593 #if PHOTO_SUPPORT
1459 char *photo_url_text = NULL; 1594 char *photo_url_text = NULL;
1460 MsnGetInfoStepTwoData *info2_data = NULL; 1595 MsnGetInfoStepTwoData *info2_data = NULL;
1461 #endif 1596 #endif
1462 1597
1463 purple_debug_info("msn", "In msn_got_info\n"); 1598 purple_debug_info("msn", "In msn_got_info,url_text:{%s}\n",url_text);
1464 1599
1465 /* Make sure the connection is still valid */ 1600 /* Make sure the connection is still valid */
1466 if (g_list_find(purple_connections_get_all(), info_data->gc) == NULL) 1601 if (g_list_find(purple_connections_get_all(), info_data->gc) == NULL)
1467 { 1602 {
1468 purple_debug_warning("msn", "invalid connection. ignoring buddy info.\n"); 1603 purple_debug_warning("msn", "invalid connection. ignoring buddy info.\n");
1842 g_free(tmp); 1977 g_free(tmp);
1843 1978
1844 #if PHOTO_SUPPORT 1979 #if PHOTO_SUPPORT
1845 /* Find the URL to the photo; must be before the marshalling [Bug 994207] */ 1980 /* Find the URL to the photo; must be before the marshalling [Bug 994207] */
1846 photo_url_text = msn_get_photo_url(url_text); 1981 photo_url_text = msn_get_photo_url(url_text);
1982 purple_debug_info("Ma Yuan","photo url:{%s}\n",photo_url_text);
1847 1983
1848 /* Marshall the existing state */ 1984 /* Marshall the existing state */
1849 info2_data = g_malloc0(sizeof(MsnGetInfoStepTwoData)); 1985 info2_data = g_malloc0(sizeof(MsnGetInfoStepTwoData));
1850 info2_data->info_data = info_data; 1986 info2_data->info_data = info_data;
1851 info2_data->stripped = stripped; 1987 info2_data->stripped = stripped;
2066 NULL, /* remove_buddies */ 2202 NULL, /* remove_buddies */
2067 msn_add_permit, /* add_permit */ 2203 msn_add_permit, /* add_permit */
2068 msn_add_deny, /* add_deny */ 2204 msn_add_deny, /* add_deny */
2069 msn_rem_permit, /* rem_permit */ 2205 msn_rem_permit, /* rem_permit */
2070 msn_rem_deny, /* rem_deny */ 2206 msn_rem_deny, /* rem_deny */
2071 msn_set_permit_deny, /* set_permit_deny */ 2207 msn_set_permit_deny, /* set_permit_deny */
2072 NULL, /* join_chat */ 2208 NULL, /* join_chat */
2073 NULL, /* reject chat invite */ 2209 NULL, /* reject chat invite */
2074 NULL, /* get_chat_name */ 2210 NULL, /* get_chat_name */
2075 msn_chat_invite, /* chat_invite */ 2211 msn_chat_invite, /* chat_invite */
2076 msn_chat_leave, /* chat_leave */ 2212 msn_chat_leave, /* chat_leave */
2122 2258
2123 "prpl-msn", /**< id */ 2259 "prpl-msn", /**< id */
2124 "MSN", /**< name */ 2260 "MSN", /**< name */
2125 VERSION, /**< version */ 2261 VERSION, /**< version */
2126 /** summary */ 2262 /** summary */
2127 N_("MSN Protocol Plugin"), 2263 N_("Windows Live Messenger Protocol Plugin"),
2128 /** description */ 2264 /** description */
2129 N_("MSN Protocol Plugin"), 2265 N_("Windows Live Messenger Protocol Plugin"),
2130 "Christian Hammond <chipx86@gnupdate.org>", /**< author */ 2266 "Christian Hammond <chipx86@gnupdate.org>, "
2267 "MaYuan <mayuan2006@gmail.com>", /**< author */
2131 PURPLE_WEBSITE, /**< homepage */ 2268 PURPLE_WEBSITE, /**< homepage */
2132 2269
2133 msn_load, /**< load */ 2270 msn_load, /**< load */
2134 msn_unload, /**< unload */ 2271 msn_unload, /**< unload */
2135 NULL, /**< destroy */ 2272 NULL, /**< destroy */
2150 init_plugin(PurplePlugin *plugin) 2287 init_plugin(PurplePlugin *plugin)
2151 { 2288 {
2152 PurpleAccountOption *option; 2289 PurpleAccountOption *option;
2153 2290
2154 option = purple_account_option_string_new(_("Server"), "server", 2291 option = purple_account_option_string_new(_("Server"), "server",
2155 MSN_SERVER); 2292 WLM_SERVER);
2156 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, 2293 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
2157 option); 2294 option);
2158 2295
2159 option = purple_account_option_int_new(_("Port"), "port", 1863); 2296 option = purple_account_option_int_new(_("Port"), "port", WLM_PORT);
2160 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, 2297 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
2161 option); 2298 option);
2162 2299
2163 option = purple_account_option_bool_new(_("Use HTTP Method"), 2300 option = purple_account_option_bool_new(_("Use HTTP Method"),
2164 "http_method", FALSE); 2301 "http_method", FALSE);