Mercurial > pidgin.yaz
annotate libpurple/protocols/msn/sbconn.c @ 31263:91ba047e838c
Remove msgs list from SlpMessage.
author | masca@cpw.pidgin.im |
---|---|
date | Tue, 22 Jun 2010 23:00:10 +0000 |
parents | ead7b8c19725 |
children | 471e9b81da41 |
rev | line source |
---|---|
31236
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
1 #include "internal.h" |
31256
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
2 #include "debug.h" |
31236
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
3 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
4 #include "msg.h" |
31231
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
5 #include "sbconn.h" |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
6 |
31263 | 7 #if 0 |
31231
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
8 /* We have received the message ack */ |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
9 void |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
10 msn_sbconn_msg_ack(MsnMessage *msg, void *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 MsnSlpMessage *slpmsg; |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
13 long long real_size; |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
14 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
15 slpmsg = data; |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
16 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
17 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
|
18 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
19 slpmsg->offset += msg->slpmsg->header->length; |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
20 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
21 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
22 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
23 if (slpmsg->offset < real_size) |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
24 { |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
25 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
|
26 { |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
27 slpmsg->slpcall->xfer_msg = slpmsg; |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
28 msn_message_ref(msg); |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
29 purple_xfer_prpl_ready(slpmsg->slpcall->xfer); |
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 else |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
32 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
33 } |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
34 else |
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 /* The whole message has been sent */ |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
37 if (slpmsg->flags == P2P_MSN_OBJ_DATA || |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
38 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
|
39 slpmsg->flags == P2P_FILE_DATA) |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
40 { |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
41 if (slpmsg->slpcall != NULL) |
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 if (slpmsg->slpcall->cb) |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
44 slpmsg->slpcall->cb(slpmsg->slpcall, |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
45 NULL, 0); |
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 } |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
49 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
50 msn_message_unref(msg); |
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 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
53 /* We have received the message nak. */ |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
54 void |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
55 msn_sbconn_msg_nak(MsnMessage *msg, void *data) |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
56 { |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
57 MsnSlpMessage *slpmsg; |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
58 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
59 slpmsg = data; |
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 msn_slplink_send_msgpart(slpmsg->slplink, slpmsg); |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
62 |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
63 slpmsg->msgs = g_list_remove(slpmsg->msgs, msg); |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
64 msn_message_unref(msg); |
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
65 } |
31263 | 66 #endif |
31231
f84fb808e8ed
Move MsnMessage stuff out of slplink to SBConn.
masca@cpw.pidgin.im
parents:
diff
changeset
|
67 |
31233
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
68 void msn_sbconn_send_msg(MsnSlpLink *slplink, MsnMessage *msg) |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
69 { |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
70 if (slplink->swboard == NULL) |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
71 { |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
72 slplink->swboard = msn_session_get_swboard(slplink->session, |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
73 slplink->remote_user, MSN_SB_FLAG_FT); |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
74 |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
75 g_return_if_fail(slplink->swboard != NULL); |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
76 |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
77 /* If swboard is destroyed we will be too */ |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
78 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
79 } |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
80 |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
81 msn_switchboard_send_msg(slplink->swboard, msg, TRUE); |
22f26c372797
Manage sending messages trough switchboard in sbconn.
masca@cpw.pidgin.im
parents:
31231
diff
changeset
|
82 } |
31236
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
83 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
84 void msn_sbconn_send_part(MsnSlpLink *slplink, MsnSlpMessagePart *part) |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
85 { |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
86 MsnMessage *msg; |
31246
07a9356ad2e0
Remove the MsnMessage from SlpMessage.
masca@cpw.pidgin.im
parents:
31236
diff
changeset
|
87 const char *passport; |
31236
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
88 char *data; |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
89 size_t size; |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
90 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
91 msg = msn_message_new_msnslp(); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
92 |
31246
07a9356ad2e0
Remove the MsnMessage from SlpMessage.
masca@cpw.pidgin.im
parents:
31236
diff
changeset
|
93 passport = purple_normalize(slplink->session->account, slplink->remote_user); |
07a9356ad2e0
Remove the MsnMessage from SlpMessage.
masca@cpw.pidgin.im
parents:
31236
diff
changeset
|
94 msn_message_set_header(msg, "P2P-Dest", passport); |
07a9356ad2e0
Remove the MsnMessage from SlpMessage.
masca@cpw.pidgin.im
parents:
31236
diff
changeset
|
95 |
31236
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
96 data = msn_slpmsgpart_serialize(part, &size); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
97 msg->part = part; |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
98 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
99 msn_message_set_bin_data(msg, data, size); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
100 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
101 if (slplink->swboard == NULL) |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
102 { |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
103 slplink->swboard = msn_session_get_swboard(slplink->session, |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
104 slplink->remote_user, MSN_SB_FLAG_FT); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
105 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
106 g_return_if_fail(slplink->swboard != NULL); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
107 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
108 /* If swboard is destroyed we will be too */ |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
109 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
110 } |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
111 |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
112 msn_switchboard_send_msg(slplink->swboard, msg, TRUE); |
37474bb06bad
Add support in SBConn to send parts instead of messages.
masca@cpw.pidgin.im
parents:
31233
diff
changeset
|
113 } |
31253
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
114 |
31256
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
115 /** Called when a message times out. */ |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
116 static void |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
117 msg_timeout(MsnCmdProc *cmdproc, MsnTransaction *trans) |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
118 { |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
119 MsnMessage *msg; |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
120 |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
121 msg = trans->data; |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
122 |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
123 msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_TIMEOUT); |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
124 } |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
125 |
31253
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
126 static void |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
127 release_msg(MsnSwitchBoard *swboard, MsnMessage *msg) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
128 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
129 MsnCmdProc *cmdproc; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
130 MsnTransaction *trans; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
131 char *payload; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
132 gsize payload_len; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
133 char flag; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
134 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
135 g_return_if_fail(swboard != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
136 g_return_if_fail(msg != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
137 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
138 cmdproc = swboard->cmdproc; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
139 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
140 payload = msn_message_gen_payload(msg, &payload_len); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
141 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
142 if (purple_debug_is_verbose()) { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
143 purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}\n", payload_len); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
144 msn_message_show_readable(msg, "SB SEND", FALSE); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
145 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
146 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
147 flag = msn_message_get_flag(msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
148 trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT, |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
149 flag, payload_len); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
150 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
151 /* Data for callbacks */ |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
152 msn_transaction_set_data(trans, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
153 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
154 if (flag != 'U') { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
155 if (msg->type == MSN_MSG_TEXT) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
156 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
157 msg->ack_ref = TRUE; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
158 msn_message_ref(msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
159 swboard->ack_list = g_list_append(swboard->ack_list, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
160 msn_transaction_set_timeout_cb(trans, msg_timeout); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
161 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
162 else if (msg->type == MSN_MSG_SLP) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
163 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
164 msg->ack_ref = TRUE; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
165 msn_message_ref(msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
166 swboard->ack_list = g_list_append(swboard->ack_list, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
167 msn_transaction_set_timeout_cb(trans, msg_timeout); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
168 #if 0 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
169 if (msg->ack_cb != NULL) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
170 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
171 msn_transaction_add_cb(trans, "ACK", msg_ack); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
172 msn_transaction_add_cb(trans, "NAK", msg_nak); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
173 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
174 #endif |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
175 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
176 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
177 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
178 trans->payload = payload; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
179 trans->payload_len = payload_len; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
180 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
181 msg->trans = trans; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
182 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
183 msn_cmdproc_send_trans(cmdproc, trans); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
184 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
185 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
186 static void |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
187 queue_msg(MsnSwitchBoard *swboard, MsnMessage *msg) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
188 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
189 g_return_if_fail(swboard != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
190 g_return_if_fail(msg != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
191 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
192 purple_debug_info("msn", "Appending message to queue.\n"); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
193 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
194 g_queue_push_tail(swboard->msg_queue, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
195 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
196 msn_message_ref(msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
197 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
198 |
31256
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
199 void |
ead7b8c19725
Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
masca@cpw.pidgin.im
parents:
31253
diff
changeset
|
200 msn_sbconn_process_queue(MsnSwitchBoard *swboard) |
31253
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
201 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
202 MsnMessage *msg; |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
203 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
204 g_return_if_fail(swboard != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
205 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
206 purple_debug_info("msn", "Processing queue\n"); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
207 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
208 while ((msg = g_queue_pop_head(swboard->msg_queue)) != NULL) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
209 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
210 purple_debug_info("msn", "Sending message\n"); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
211 release_msg(swboard, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
212 msn_message_unref(msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
213 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
214 } |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
215 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
216 void |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
217 msn_switchboard_send_msg(MsnSwitchBoard *swboard, MsnMessage *msg, |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
218 gboolean queue) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
219 { |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
220 g_return_if_fail(swboard != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
221 g_return_if_fail(msg != NULL); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
222 |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
223 purple_debug_info("msn", "switchboard send msg..\n"); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
224 if (msn_switchboard_can_send(swboard)) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
225 release_msg(swboard, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
226 else if (queue) |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
227 queue_msg(swboard, msg); |
5904070c0019
Move sending messages via SB to SBConn.
masca@cpw.pidgin.im
parents:
31246
diff
changeset
|
228 } |