comparison libpurple/protocols/msn/sbconn.c @ 30793:f84fb808e8ed

Move MsnMessage stuff out of slplink to SBConn.
author masca@cpw.pidgin.im
date Tue, 15 Jun 2010 00:42:05 +0000
parents
children 22f26c372797
comparison
equal deleted inserted replaced
30792:9192c59f2f84 30793:f84fb808e8ed
1 #include "sbconn.h"
2
3 /* We have received the message ack */
4 void
5 msn_sbconn_msg_ack(MsnMessage *msg, void *data)
6 {
7 MsnSlpMessage *slpmsg;
8 long long real_size;
9
10 slpmsg = data;
11
12 real_size = (slpmsg->flags == P2P_ACK) ? 0 : slpmsg->size;
13
14 slpmsg->offset += msg->slpmsg->header->length;
15
16 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg);
17
18 if (slpmsg->offset < real_size)
19 {
20 if (slpmsg->slpcall->xfer && purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED)
21 {
22 slpmsg->slpcall->xfer_msg = slpmsg;
23 msn_message_ref(msg);
24 purple_xfer_prpl_ready(slpmsg->slpcall->xfer);
25 }
26 else
27 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg);
28 }
29 else
30 {
31 /* The whole message has been sent */
32 if (slpmsg->flags == P2P_MSN_OBJ_DATA ||
33 slpmsg->flags == (P2P_WML2009_COMP | P2P_MSN_OBJ_DATA) ||
34 slpmsg->flags == P2P_FILE_DATA)
35 {
36 if (slpmsg->slpcall != NULL)
37 {
38 if (slpmsg->slpcall->cb)
39 slpmsg->slpcall->cb(slpmsg->slpcall,
40 NULL, 0);
41 }
42 }
43 }
44
45 msn_message_unref(msg);
46 }
47
48 /* We have received the message nak. */
49 void
50 msn_sbconn_msg_nak(MsnMessage *msg, void *data)
51 {
52 MsnSlpMessage *slpmsg;
53
54 slpmsg = data;
55
56 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg);
57
58 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg);
59 msn_message_unref(msg);
60 }
61