comparison libpurple/protocols/msn/msg.c @ 32819:2c6510167895 default tip

propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24) to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 02 Jun 2012 02:30:49 +0000
parents fa666e7f747e
children
comparison
equal deleted inserted replaced
32818:01ff09d4a463 32819:2c6510167895
411 411
412 /* There is no need to waste memory on data we cannot send anyway */ 412 /* There is no need to waste memory on data we cannot send anyway */
413 if (len > 1664) 413 if (len > 1664)
414 len = 1664; 414 len = 1664;
415 415
416 if (msg->body != NULL) 416 g_free(msg->body);
417 g_free(msg->body);
418 417
419 if (data != NULL && len > 0) 418 if (data != NULL && len > 0)
420 { 419 {
421 msg->body = g_malloc(len + 1); 420 msg->body = g_malloc(len + 1);
422 memcpy(msg->body, data, len); 421 memcpy(msg->body, data, len);
659 char *body_final; 658 char *body_final;
660 size_t body_len; 659 size_t body_len;
661 const char *passport; 660 const char *passport;
662 const char *value; 661 const char *value;
663 662
664 gc = cmdproc->session->account->gc; 663 gc = purple_account_get_connection(cmdproc->session->account);
665 664
666 body = msn_message_get_bin_data(msg, &body_len); 665 body = msn_message_get_bin_data(msg, &body_len);
667 body_enc = g_markup_escape_text(body, body_len); 666 body_enc = g_markup_escape_text(body, body_len);
668 667
669 passport = msg->remote_user; 668 passport = msg->remote_user;
720 { 719 {
721 swboard->conv = purple_find_chat(gc, swboard->chat_id); 720 swboard->conv = purple_find_chat(gc, swboard->chat_id);
722 swboard->flag |= MSN_SB_FLAG_IM; 721 swboard->flag |= MSN_SB_FLAG_IM;
723 } 722 }
724 } 723 }
725 else if (!g_str_equal(passport, purple_account_get_username(gc->account))) 724 else if (!g_str_equal(passport, purple_account_get_username(purple_connection_get_account(gc))))
726 { 725 {
727 /* Don't im ourselves ... */ 726 /* Don't im ourselves ... */
728 serv_got_im(gc, passport, body_final, 0, time(NULL)); 727 serv_got_im(gc, passport, body_final, 0, time(NULL));
729 if (swboard->conv == NULL) 728 if (swboard->conv == NULL)
730 { 729 {
745 msn_control_msg(MsnCmdProc *cmdproc, MsnMessage *msg) 744 msn_control_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
746 { 745 {
747 PurpleConnection *gc; 746 PurpleConnection *gc;
748 char *passport; 747 char *passport;
749 748
750 gc = cmdproc->session->account->gc; 749 gc = purple_account_get_connection(cmdproc->session->account);
751 passport = msg->remote_user; 750 passport = msg->remote_user;
752 751
753 if (msn_message_get_header_value(msg, "TypingUser") == NULL) 752 if (msn_message_get_header_value(msg, "TypingUser") == NULL)
754 return; 753 return;
755 754
794 else 793 else
795 chat = FALSE; 794 chat = FALSE;
796 795
797 if (swboard->conv == NULL) { 796 if (swboard->conv == NULL) {
798 if (chat) 797 if (chat)
799 swboard->conv = purple_find_chat(account->gc, swboard->chat_id); 798 swboard->conv = purple_find_chat(purple_account_get_connection(account), swboard->chat_id);
800 else { 799 else {
801 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, 800 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
802 who, account); 801 who, account);
803 if (swboard->conv == NULL) 802 if (swboard->conv == NULL)
804 swboard->conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who); 803 swboard->conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who);
1002 1001
1003 if (purple_conv_custom_smiley_add(conv, smile, "sha1", sha1, TRUE)) { 1002 if (purple_conv_custom_smiley_add(conv, smile, "sha1", sha1, TRUE)) {
1004 msn_slplink_request_object(slplink, smile, got_emoticon, NULL, obj); 1003 msn_slplink_request_object(slplink, smile, got_emoticon, NULL, obj);
1005 } 1004 }
1006 1005
1007 msn_object_destroy(obj); 1006 msn_object_destroy(obj, FALSE);
1008 obj = NULL; 1007 obj = NULL;
1009 who = NULL; 1008 who = NULL;
1010 sha1 = NULL; 1009 sha1 = NULL;
1011 } 1010 }
1012 g_strfreev(tokens); 1011 g_strfreev(tokens);
1023 1022
1024 if (!strcmp(id, "1")) { 1023 if (!strcmp(id, "1")) {
1025 /* Nudge */ 1024 /* Nudge */
1026 PurpleAccount *account; 1025 PurpleAccount *account;
1027 const char *user; 1026 const char *user;
1027 PurpleConnection *gc;
1028 1028
1029 account = cmdproc->session->account; 1029 account = cmdproc->session->account;
1030 user = msg->remote_user; 1030 user = msg->remote_user;
1031 gc = purple_account_get_connection(account);
1031 1032
1032 if (cmdproc->servconn->type == MSN_SERVCONN_SB) { 1033 if (cmdproc->servconn->type == MSN_SERVCONN_SB) {
1033 MsnSwitchBoard *swboard = cmdproc->data; 1034 MsnSwitchBoard *swboard = cmdproc->data;
1034 if (swboard->current_users > 1 || 1035 if (swboard->current_users > 1 ||
1035 ((swboard->conv != NULL) && 1036 ((swboard->conv != NULL) &&
1036 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT)) 1037 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
1037 purple_prpl_got_attention_in_chat(account->gc, swboard->chat_id, user, MSN_NUDGE); 1038 purple_prpl_got_attention_in_chat(gc, swboard->chat_id, user, MSN_NUDGE);
1038 1039
1039 else 1040 else
1040 purple_prpl_got_attention(account->gc, user, MSN_NUDGE); 1041 purple_prpl_got_attention(gc, user, MSN_NUDGE);
1041 } else { 1042 } else {
1042 purple_prpl_got_attention(account->gc, user, MSN_NUDGE); 1043 purple_prpl_got_attention(gc, user, MSN_NUDGE);
1043 } 1044 }
1044 1045
1045 } else if (!strcmp(id, "2")) { 1046 } else if (!strcmp(id, "2")) {
1046 /* Wink */ 1047 /* Wink */
1047 MsnSession *session; 1048 MsnSession *session;
1057 who = msn_object_get_creator(obj); 1058 who = msn_object_get_creator(obj);
1058 1059
1059 slplink = msn_session_get_slplink(session, who); 1060 slplink = msn_session_get_slplink(session, who);
1060 msn_slplink_request_object(slplink, data, got_wink_cb, NULL, obj); 1061 msn_slplink_request_object(slplink, data, got_wink_cb, NULL, obj);
1061 1062
1062 msn_object_destroy(obj); 1063 msn_object_destroy(obj, FALSE);
1063 1064
1064 1065
1065 } else if (!strcmp(id, "3")) { 1066 } else if (!strcmp(id, "3")) {
1066 /* Voiceclip */ 1067 /* Voiceclip */
1067 MsnSession *session; 1068 MsnSession *session;
1077 who = msn_object_get_creator(obj); 1078 who = msn_object_get_creator(obj);
1078 1079
1079 slplink = msn_session_get_slplink(session, who); 1080 slplink = msn_session_get_slplink(session, who);
1080 msn_slplink_request_object(slplink, data, got_voiceclip_cb, NULL, obj); 1081 msn_slplink_request_object(slplink, data, got_voiceclip_cb, NULL, obj);
1081 1082
1082 msn_object_destroy(obj); 1083 msn_object_destroy(obj, FALSE);
1083 1084
1084 } else if (!strcmp(id, "4")) { 1085 } else if (!strcmp(id, "4")) {
1085 /* Action */ 1086 /* Action */
1086 1087
1087 } else { 1088 } else {