comparison src/protocols/msn/msn.c @ 10602:f52ab405f1ab

[gaim-migrate @ 12032] This is patch 1112281 from Felipe Contreras, it prevents file transfers being cancelled when closing a conversation window with the sender/recipient. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Wed, 16 Feb 2005 20:14:12 +0000
parents 0f7452b1f777
children fe919915fceb
comparison
equal deleted inserted replaced
10601:e46b51de549a 10602:f52ab405f1ab
336 msn_switchboard_request_add_user(swboard, buddy->name); 336 msn_switchboard_request_add_user(swboard, buddy->name);
337 337
338 /* TODO: This might move somewhere else, after USR might be */ 338 /* TODO: This might move somewhere else, after USR might be */
339 swboard->chat_id = session->conv_seq++; 339 swboard->chat_id = session->conv_seq++;
340 swboard->conv = serv_got_joined_chat(gc, swboard->chat_id, "MSN Chat"); 340 swboard->conv = serv_got_joined_chat(gc, swboard->chat_id, "MSN Chat");
341 swboard->flag = MSN_SB_FLAG_IM;
341 342
342 gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv), 343 gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv),
343 gaim_account_get_username(buddy->account), NULL, GAIM_CBFLAGS_NONE, TRUE); 344 gaim_account_get_username(buddy->account), NULL, GAIM_CBFLAGS_NONE, TRUE);
344 } 345 }
345 346
736 { 737 {
737 MsnSession *session; 738 MsnSession *session;
738 MsnSwitchBoard *swboard; 739 MsnSwitchBoard *swboard;
739 740
740 session = gc->proto_data; 741 session = gc->proto_data;
741 swboard = msn_session_get_swboard(session, who); 742 swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM);
742 743
743 msn_switchboard_send_msg(swboard, msg, TRUE); 744 msn_switchboard_send_msg(swboard, msg, TRUE);
744 } 745 }
745 else 746 else
746 { 747 {
792 serv_got_typing(gc, who, MSN_TYPING_RECV_TIMEOUT, GAIM_TYPING); 793 serv_got_typing(gc, who, MSN_TYPING_RECV_TIMEOUT, GAIM_TYPING);
793 794
794 return MSN_TYPING_SEND_TIMEOUT; 795 return MSN_TYPING_SEND_TIMEOUT;
795 } 796 }
796 797
797 swboard = msn_session_find_swboard(session, who); 798 swboard = msn_session_find_swboard(session, who, MSN_SB_FLAG_IM);
798 799
799 if (swboard == NULL || !msn_switchboard_can_send(swboard)) 800 if (swboard == NULL || !msn_switchboard_can_send(swboard))
800 return 0; 801 return 0;
801 802
802 msg = msn_message_new(MSN_MSG_TYPING); 803 msg = msn_message_new(MSN_MSG_TYPING);
1079 MsnSession *session; 1080 MsnSession *session;
1080 MsnSwitchBoard *swboard; 1081 MsnSwitchBoard *swboard;
1081 1082
1082 session = gc->proto_data; 1083 session = gc->proto_data;
1083 1084
1084 swboard = msn_session_find_switch_with_id(session, id); 1085 swboard = msn_session_find_swboard_with_id(session, id, MSN_SB_FLAG_IM);
1085 1086
1086 if (swboard == NULL) 1087 if (swboard == NULL)
1087 { 1088 {
1088 /* if we have no switchboard, everyone else left the chat already */ 1089 /* if we have no switchboard, everyone else left the chat already */
1089 swboard = msn_switchboard_new(session); 1090 swboard = msn_switchboard_new(session);
1090 msn_switchboard_request(swboard); 1091 msn_switchboard_request(swboard);
1091 swboard->chat_id = id; 1092 swboard->chat_id = id;
1092 swboard->conv = gaim_find_chat(gc, id); 1093 swboard->conv = gaim_find_chat(gc, id);
1094 swboard->flag = MSN_SB_FLAG_IM;
1093 } 1095 }
1094 1096
1095 msn_switchboard_request_add_user(swboard, who); 1097 msn_switchboard_request_add_user(swboard, who);
1096 } 1098 }
1097 1099
1101 MsnSession *session; 1103 MsnSession *session;
1102 MsnSwitchBoard *swboard; 1104 MsnSwitchBoard *swboard;
1103 1105
1104 session = gc->proto_data; 1106 session = gc->proto_data;
1105 1107
1106 swboard = msn_session_find_switch_with_id(session, id); 1108 swboard = msn_session_find_swboard_with_id(session, id, MSN_SB_FLAG_IM);
1107 1109
1108 /* if swboard is NULL we were the only person left anyway */ 1110 /* if swboard is NULL we were the only person left anyway */
1109 if (swboard == NULL) 1111 if (swboard == NULL)
1110 return; 1112 return;
1111 1113
1122 char *msgformat; 1124 char *msgformat;
1123 char *msgtext; 1125 char *msgtext;
1124 1126
1125 account = gaim_connection_get_account(gc); 1127 account = gaim_connection_get_account(gc);
1126 session = gc->proto_data; 1128 session = gc->proto_data;
1127 swboard = msn_session_find_switch_with_id(session, id); 1129 swboard = msn_session_find_swboard_with_id(session, id, MSN_SB_FLAG_IM);
1128 1130
1129 if (swboard == NULL) 1131 if (swboard == NULL)
1130 return -EINVAL; 1132 return -EINVAL;
1131 1133
1132 if (!swboard->ready) 1134 if (!swboard->ready)
1158 1160
1159 static void 1161 static void
1160 msn_keepalive(GaimConnection *gc) 1162 msn_keepalive(GaimConnection *gc)
1161 { 1163 {
1162 MsnSession *session; 1164 MsnSession *session;
1163 MsnCmdProc *cmdproc; 1165
1164 1166 session = gc->proto_data;
1165 session = gc->proto_data;
1166
1167 cmdproc = session->notification->cmdproc;
1168 1167
1169 if (!session->http_method) 1168 if (!session->http_method)
1169 {
1170 MsnCmdProc *cmdproc;
1171
1172 cmdproc = session->notification->cmdproc;
1173
1170 msn_cmdproc_send_quick(cmdproc, "PNG", NULL, NULL); 1174 msn_cmdproc_send_quick(cmdproc, "PNG", NULL, NULL);
1175 }
1171 } 1176 }
1172 1177
1173 static void 1178 static void
1174 msn_group_buddy(GaimConnection *gc, const char *who, 1179 msn_group_buddy(GaimConnection *gc, const char *who,
1175 const char *old_group_name, const char *new_group_name) 1180 const char *old_group_name, const char *new_group_name)
1215 MsnSession *session; 1220 MsnSession *session;
1216 MsnSwitchBoard *swboard; 1221 MsnSwitchBoard *swboard;
1217 1222
1218 session = gc->proto_data; 1223 session = gc->proto_data;
1219 1224
1220 swboard = msn_session_find_swboard(session, who); 1225 swboard = msn_session_find_swboard(session, who, MSN_SB_FLAG_IM);
1221 1226
1222 /* 1227 /*
1223 * Don't perform an assertion here. It swboard is NULL, then the 1228 * Don't perform an assertion here. If swboard is NULL, then the
1224 * switchboard was either closed by the other party, or the person 1229 * switchboard was either closed by the other party, or the person
1225 * is talking to himself. 1230 * is talking to himself.
1226 */ 1231 */
1227 if (swboard == NULL) 1232 if (swboard == NULL)
1228 return; 1233 return;
1229 1234
1230 msn_switchboard_close(swboard); 1235 if (!(swboard->flag & MSN_SB_FLAG_FT))
1236 msn_switchboard_close(swboard);
1237 else
1238 swboard->conv = NULL;
1231 } 1239 }
1232 1240
1233 static void 1241 static void
1234 msn_set_buddy_icon(GaimConnection *gc, const char *filename) 1242 msn_set_buddy_icon(GaimConnection *gc, const char *filename)
1235 { 1243 {