libpurple/protocols/msn/sbconn.c

Mon, 10 Feb 2014 16:22:00 +0530

author
Ankit Vani <a@nevitus.org>
date
Mon, 10 Feb 2014 16:22:00 +0530
branch
soc.2013.gobjectification.plugins
changeset 37108
73c5fb6d78b3
parent 32217
522b4fe95362
permissions
-rw-r--r--

Merged default branch

31180
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
1 /**
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
2 * @file sbconn.c MSN Switchboard Connection
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
3 *
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
4 * purple
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
5 *
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
8 * source distribution.
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
9 *
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
10 * This program is free software; you can redistribute it and/or modify
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
11 * it under the terms of the GNU General Public License as published by
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
13 * (at your option) any later version.
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
14 *
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
15 * This program is distributed in the hope that it will be useful,
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
18 * GNU General Public License for more details.
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
19 *
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
20 * You should have received a copy of the GNU General Public License
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
21 * along with this program; if not, write to the Free Software
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
23 */
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31162
diff changeset
24
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
25 #include "internal.h"
31020
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
26 #include "debug.h"
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
27
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
28 #include "msg.h"
30995
f9181483576b Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff changeset
29 #include "sbconn.h"
f9181483576b Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
diff changeset
30
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
31 void msn_sbconn_send_part(MsnSlpLink *slplink, MsnSlpMessagePart *part)
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
32 {
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
33 MsnMessage *msg;
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31000
diff changeset
34 const char *passport;
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
35 char *data;
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
36 size_t size;
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
37
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
38 msg = msn_message_new_msnslp();
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
39
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31000
diff changeset
40 passport = purple_normalize(slplink->session->account, slplink->remote_user);
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31000
diff changeset
41 msn_message_set_header(msg, "P2P-Dest", passport);
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31000
diff changeset
42
31136
643ef83b4c67 Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31051
diff changeset
43 msg->part = msn_slpmsgpart_ref(part);
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
44 data = msn_slpmsgpart_serialize(part, &size);
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
45 msn_message_set_bin_data(msg, data, size);
31136
643ef83b4c67 Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31051
diff changeset
46 g_free(data);
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
47
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
48 if (slplink->swboard == NULL)
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
49 {
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
50 slplink->swboard = msn_session_get_swboard(slplink->session,
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
51 slplink->remote_user, MSN_SB_FLAG_FT);
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
52
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
53 g_return_if_fail(slplink->swboard != NULL);
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
54
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
55 /* If swboard is destroyed we will be too */
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
56 slplink->swboard->slplinks = g_list_prepend(slplink->swboard->slplinks, slplink);
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
57 }
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
58
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
59 msn_switchboard_send_msg(slplink->swboard, msg, TRUE);
31162
2c596217766b msn_message_destroy() calls msn_message_unref() if refcount>0. This is
Mark Doliner <markdoliner@pidgin.im>
parents: 31136
diff changeset
60 msn_message_unref(msg);
31000
0bb75b492d64 Add support in SBConn to send parts instead of messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
61 }
31017
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
62
31020
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
63 /** Called when a message times out. */
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
64 static void
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
65 msg_timeout(MsnCmdProc *cmdproc, MsnTransaction *trans)
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
66 {
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
67 MsnMessage *msg;
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
68
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
69 msg = trans->data;
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
70
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
71 msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_TIMEOUT);
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
72 }
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
73
31017
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
74 static void
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
75 release_msg(MsnSwitchBoard *swboard, MsnMessage *msg)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
76 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
77 MsnCmdProc *cmdproc;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
78 MsnTransaction *trans;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
79 char *payload;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
80 gsize payload_len;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
81 char flag;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
82
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
83 g_return_if_fail(swboard != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
84 g_return_if_fail(msg != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
85
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
86 cmdproc = swboard->cmdproc;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
87
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
88 payload = msn_message_gen_payload(msg, &payload_len);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
89
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
90 if (purple_debug_is_verbose()) {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
91 purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}\n", payload_len);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
92 msn_message_show_readable(msg, "SB SEND", FALSE);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
93 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
94
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
95 flag = msn_message_get_flag(msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
96 trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT,
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
97 flag, payload_len);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
98
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
99 /* Data for callbacks */
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
100 msn_transaction_set_data(trans, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
101
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
102 if (flag != 'U') {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
103 if (msg->type == MSN_MSG_TEXT)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
104 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
105 msg->ack_ref = TRUE;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
106 msn_message_ref(msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
107 swboard->ack_list = g_list_append(swboard->ack_list, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
108 msn_transaction_set_timeout_cb(trans, msg_timeout);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
109 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
110 else if (msg->type == MSN_MSG_SLP)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
111 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
112 msg->ack_ref = TRUE;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
113 msn_message_ref(msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
114 swboard->ack_list = g_list_append(swboard->ack_list, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
115 msn_transaction_set_timeout_cb(trans, msg_timeout);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
116 #if 0
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
117 if (msg->ack_cb != NULL)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
118 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
119 msn_transaction_add_cb(trans, "ACK", msg_ack);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
120 msn_transaction_add_cb(trans, "NAK", msg_nak);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
121 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
122 #endif
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
123 }
32217
522b4fe95362 'U' messages don't get ack'd, so they shouldn't be saved.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
124 } else {
522b4fe95362 'U' messages don't get ack'd, so they shouldn't be saved.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
125 msn_transaction_set_saveable(trans, FALSE);
31017
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
126 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
127
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
128 trans->payload = payload;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
129 trans->payload_len = payload_len;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
130
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
131 msn_cmdproc_send_trans(cmdproc, trans);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
132 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
133
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
134 static void
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
135 queue_msg(MsnSwitchBoard *swboard, MsnMessage *msg)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
136 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
137 g_return_if_fail(swboard != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
138 g_return_if_fail(msg != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
139
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
140 purple_debug_info("msn", "Appending message to queue.\n");
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
141
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
142 g_queue_push_tail(swboard->msg_queue, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
143
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
144 msn_message_ref(msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
145 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
146
31020
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
147 void
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
148 msn_sbconn_process_queue(MsnSwitchBoard *swboard)
31017
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
149 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
150 MsnMessage *msg;
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
151
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
152 g_return_if_fail(swboard != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
153
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
154 purple_debug_info("msn", "Processing queue\n");
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
155
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
156 while ((msg = g_queue_pop_head(swboard->msg_queue)) != NULL)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
157 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
158 purple_debug_info("msn", "Sending message\n");
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
159 release_msg(swboard, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
160 msn_message_unref(msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
161 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
162 }
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
163
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
164 void
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
165 msn_switchboard_send_msg(MsnSwitchBoard *swboard, MsnMessage *msg,
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
166 gboolean queue)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
167 {
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
168 g_return_if_fail(swboard != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
169 g_return_if_fail(msg != NULL);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
170
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
171 purple_debug_info("msn", "switchboard send msg..\n");
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
172 if (msn_switchboard_can_send(swboard))
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
173 release_msg(swboard, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
174 else if (queue)
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
175 queue_msg(swboard, msg);
55654c6cd882 Move sending messages via SB to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
176 }

mercurial