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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
91ba047e838c Remove msgs list from SlpMessage.
masca@cpw.pidgin.im
parents: 31256
diff changeset
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
91ba047e838c Remove msgs list from SlpMessage.
masca@cpw.pidgin.im
parents: 31256
diff changeset
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 }