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