Mercurial > pidgin.yaz
diff 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 |
line wrap: on
line diff
--- a/src/protocols/msn/msn.c Wed Feb 16 03:57:23 2005 +0000 +++ b/src/protocols/msn/msn.c Wed Feb 16 20:14:12 2005 +0000 @@ -338,6 +338,7 @@ /* TODO: This might move somewhere else, after USR might be */ swboard->chat_id = session->conv_seq++; swboard->conv = serv_got_joined_chat(gc, swboard->chat_id, "MSN Chat"); + swboard->flag = MSN_SB_FLAG_IM; gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv), gaim_account_get_username(buddy->account), NULL, GAIM_CBFLAGS_NONE, TRUE); @@ -738,7 +739,7 @@ MsnSwitchBoard *swboard; session = gc->proto_data; - swboard = msn_session_get_swboard(session, who); + swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM); msn_switchboard_send_msg(swboard, msg, TRUE); } @@ -794,7 +795,7 @@ return MSN_TYPING_SEND_TIMEOUT; } - swboard = msn_session_find_swboard(session, who); + swboard = msn_session_find_swboard(session, who, MSN_SB_FLAG_IM); if (swboard == NULL || !msn_switchboard_can_send(swboard)) return 0; @@ -1081,7 +1082,7 @@ session = gc->proto_data; - swboard = msn_session_find_switch_with_id(session, id); + swboard = msn_session_find_swboard_with_id(session, id, MSN_SB_FLAG_IM); if (swboard == NULL) { @@ -1090,6 +1091,7 @@ msn_switchboard_request(swboard); swboard->chat_id = id; swboard->conv = gaim_find_chat(gc, id); + swboard->flag = MSN_SB_FLAG_IM; } msn_switchboard_request_add_user(swboard, who); @@ -1103,7 +1105,7 @@ session = gc->proto_data; - swboard = msn_session_find_switch_with_id(session, id); + swboard = msn_session_find_swboard_with_id(session, id, MSN_SB_FLAG_IM); /* if swboard is NULL we were the only person left anyway */ if (swboard == NULL) @@ -1124,7 +1126,7 @@ account = gaim_connection_get_account(gc); session = gc->proto_data; - swboard = msn_session_find_switch_with_id(session, id); + swboard = msn_session_find_swboard_with_id(session, id, MSN_SB_FLAG_IM); if (swboard == NULL) return -EINVAL; @@ -1160,14 +1162,17 @@ msn_keepalive(GaimConnection *gc) { MsnSession *session; - MsnCmdProc *cmdproc; session = gc->proto_data; - cmdproc = session->notification->cmdproc; + if (!session->http_method) + { + MsnCmdProc *cmdproc; - if (!session->http_method) + cmdproc = session->notification->cmdproc; + msn_cmdproc_send_quick(cmdproc, "PNG", NULL, NULL); + } } static void @@ -1217,17 +1222,20 @@ session = gc->proto_data; - swboard = msn_session_find_swboard(session, who); + swboard = msn_session_find_swboard(session, who, MSN_SB_FLAG_IM); /* - * Don't perform an assertion here. It swboard is NULL, then the + * Don't perform an assertion here. If swboard is NULL, then the * switchboard was either closed by the other party, or the person * is talking to himself. */ if (swboard == NULL) return; - msn_switchboard_close(swboard); + if (!(swboard->flag & MSN_SB_FLAG_FT)) + msn_switchboard_close(swboard); + else + swboard->conv = NULL; } static void