libpurple/protocols/msn/slplink.c

Wed, 15 Dec 2010 22:04:08 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 15 Dec 2010 22:04:08 +0000
changeset 31237
9c2341bd9199
parent 31185
5ffa2e7ba2e1
child 31239
09f29f405e80
permissions
-rw-r--r--

Fix typo

9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
1 /**
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
2 * @file slplink.c MSNSLP Link support
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
8 * source distribution.
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
9 *
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
10 * This program is free software; you can redistribute it and/or modify
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
11 * it under the terms of the GNU General Public License as published by
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
13 * (at your option) any later version.
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
14 *
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
15 * This program is distributed in the hope that it will be useful,
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
18 * GNU General Public License for more details.
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
19 *
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
20 * You should have received a copy of the GNU General Public License
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19832
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
23 */
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30931
diff changeset
24
30961
885064b16c54 Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30945
diff changeset
25 #include "internal.h"
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30931
diff changeset
26 #include "debug.h"
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30931
diff changeset
27
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
28 #include "msn.h"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
29 #include "slplink.h"
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
30 #include "slpmsg_part.h"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
31
30995
f9181483576b Move MsnMessage stuff out of slplink to SBConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30994
diff changeset
32 #include "sbconn.h"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
33 #include "switchboard.h"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
34 #include "slp.h"
30966
c9d0661c74ed Start moving p2p specific code to its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30963
diff changeset
35 #include "p2p.h"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
36
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
37 #ifdef MSN_DEBUG_SLP_FILES
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
38 static int m_sc = 0;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
39 static int m_rc = 0;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
40
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
41 static void
31028
c5b900f03fd4 Fix debug_*_to_file to process SlpMessages instead of MsnMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
42 debug_part_to_file(MsnSlpMessage *msg, gboolean send)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
43 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
44 char *tmp;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
45 char *dir;
31028
c5b900f03fd4 Fix debug_*_to_file to process SlpMessages instead of MsnMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
46 char *data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
47 int c;
31028
c5b900f03fd4 Fix debug_*_to_file to process SlpMessages instead of MsnMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
48 gsize data_size;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
49
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
50 dir = send ? "send" : "recv";
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
51 c = send ? m_sc++ : m_rc++;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
52 tmp = g_strdup_printf("%s/msntest/%s/%03d", g_get_home_dir(), dir, c);
31028
c5b900f03fd4 Fix debug_*_to_file to process SlpMessages instead of MsnMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
53 data = msn_slpmsg_serialize(msg, &data_size);
c5b900f03fd4 Fix debug_*_to_file to process SlpMessages instead of MsnMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
54 if (!purple_util_write_data_to_file_absolute(tmp, data, data_size))
13315
97ad5f28f254 [gaim-migrate @ 15680]
Glauber de Oliveira Costa <gcosta@redhat.com>
parents: 11607
diff changeset
55 {
26726
b81bcec8f359 Updates for GTK+ 3.0. Remove some deprecated functions (someone should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25436
diff changeset
56 purple_debug_error("msn", "could not save debug file\n");
13315
97ad5f28f254 [gaim-migrate @ 15680]
Glauber de Oliveira Costa <gcosta@redhat.com>
parents: 11607
diff changeset
57 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
58 g_free(tmp);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
59 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
60 #endif
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
61
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
62 /**************************************************************************
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
63 * Main
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
64 **************************************************************************/
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
65
23447
3217bd0cb9bb msn_slplink_new() is only used within slplink.c, so make it static and
Mark Doliner <markdoliner@pidgin.im>
parents: 22981
diff changeset
66 static MsnSlpLink *
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
67 msn_slplink_new(MsnSession *session, const char *username)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
68 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
69 MsnSlpLink *slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
70
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
71 g_return_val_if_fail(session != NULL, NULL);
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
72
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
73 slplink = g_new0(MsnSlpLink, 1);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
74
27770
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27361
diff changeset
75 if (purple_debug_is_verbose())
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27361
diff changeset
76 purple_debug_info("msn", "slplink_new: slplink(%p)\n", slplink);
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10621
diff changeset
77
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
78 slplink->session = session;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
79 slplink->slp_seq_id = rand() % 0xFFFFFF00 + 4;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
80
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
81 slplink->remote_user = g_strdup(username);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
82
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
83 slplink->slp_msg_queue = g_queue_new();
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
84
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
85 session->slplinks =
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
86 g_list_append(session->slplinks, slplink);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
87
30046
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
88 return msn_slplink_ref(slplink);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
89 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
90
31032
b25150599f00 Hide msn_slplink_destroy and use the unref version everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
91 static void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
92 msn_slplink_destroy(MsnSlpLink *slplink)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
93 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
94 MsnSession *session;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
95
27770
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27361
diff changeset
96 if (purple_debug_is_verbose())
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27361
diff changeset
97 purple_debug_info("msn", "slplink_destroy: slplink(%p)\n", slplink);
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10621
diff changeset
98
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
99 g_return_if_fail(slplink != NULL);
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
100
30362
4acd426805d4 NULL-ify one more link on destroy that might lead to a crash.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30337
diff changeset
101 if (slplink->swboard != NULL) {
14029
0e8ca0cb7054 [gaim-migrate @ 16523]
Mark Doliner <markdoliner@pidgin.im>
parents: 13315
diff changeset
102 slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink);
30362
4acd426805d4 NULL-ify one more link on destroy that might lead to a crash.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30337
diff changeset
103 slplink->swboard = NULL;
4acd426805d4 NULL-ify one more link on destroy that might lead to a crash.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30337
diff changeset
104 }
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
105
30046
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
106 if (slplink->refs > 1) {
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
107 slplink->refs--;
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
108 return;
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
109 }
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
110
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
111 session = slplink->session;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
112
30336
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
113 if (slplink->dc != NULL) {
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
114 slplink->dc->slplink = NULL;
30099
39b378ac4fc8 It's probably a good idea to free the direct connection when the slplink
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30089
diff changeset
115 msn_dc_destroy(slplink->dc);
30336
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
116 slplink->dc = NULL;
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
117 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
118
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
119 while (slplink->slp_calls != NULL)
24618
190103ba3381 For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <markdoliner@pidgin.im>
parents: 24616
diff changeset
120 msn_slpcall_destroy(slplink->slp_calls->data);
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
121
21018
aed40ed25d54 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20597
diff changeset
122 g_queue_free(slplink->slp_msg_queue);
aed40ed25d54 Leak fix.
Daniel Atallah <datallah@pidgin.im>
parents: 20597
diff changeset
123
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
124 session->slplinks =
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
125 g_list_remove(session->slplinks, slplink);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
126
24005
c3ac92d3222f Re-arrange msn_slplink_destroy and msn_slp_call_destroy. Might help
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23938
diff changeset
127 g_free(slplink->remote_user);
c3ac92d3222f Re-arrange msn_slplink_destroy and msn_slp_call_destroy. Might help
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23938
diff changeset
128
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
129 g_free(slplink);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
130 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
131
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
132 MsnSlpLink *
30046
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
133 msn_slplink_ref(MsnSlpLink *slplink)
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
134 {
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
135 g_return_val_if_fail(slplink != NULL, NULL);
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
136
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
137 slplink->refs++;
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
138 if (purple_debug_is_verbose())
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
139 purple_debug_info("msn", "slplink ref (%p)[%d]\n", slplink, slplink->refs);
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
140
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
141 return slplink;
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
142 }
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
143
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
144 void
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
145 msn_slplink_unref(MsnSlpLink *slplink)
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
146 {
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
147 g_return_if_fail(slplink != NULL);
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
148
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
149 slplink->refs--;
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
150 if (purple_debug_is_verbose())
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
151 purple_debug_info("msn", "slplink unref (%p)[%d]\n", slplink, slplink->refs);
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
152
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
153 if (slplink->refs == 0)
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
154 msn_slplink_destroy(slplink);
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
155 }
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
156
b1109ea8d963 Fix a possible use-after-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29780
diff changeset
157 MsnSlpLink *
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
158 msn_session_find_slplink(MsnSession *session, const char *who)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
159 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
160 GList *l;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
161
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
162 for (l = session->slplinks; l != NULL; l = l->next)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
163 {
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
164 MsnSlpLink *slplink;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
165
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
166 slplink = l->data;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
167
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
168 if (!strcmp(slplink->remote_user, who))
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
169 return slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
170 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
171
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
172 return NULL;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
173 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
174
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
175 MsnSlpLink *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
176 msn_session_get_slplink(MsnSession *session, const char *username)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
177 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
178 MsnSlpLink *slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
179
15049
d8749c39e1e4 [gaim-migrate @ 17766]
Daniel Atallah <datallah@pidgin.im>
parents: 14254
diff changeset
180 g_return_val_if_fail(session != NULL, NULL);
d8749c39e1e4 [gaim-migrate @ 17766]
Daniel Atallah <datallah@pidgin.im>
parents: 14254
diff changeset
181 g_return_val_if_fail(username != NULL, NULL);
d8749c39e1e4 [gaim-migrate @ 17766]
Daniel Atallah <datallah@pidgin.im>
parents: 14254
diff changeset
182
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
183 slplink = msn_session_find_slplink(session, username);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
184
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
185 if (slplink == NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
186 slplink = msn_slplink_new(session, username);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
187
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
188 return slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
189 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
190
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
191 void
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
192 msn_slplink_add_slpcall(MsnSlpLink *slplink, MsnSlpCall *slpcall)
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
193 {
10621
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
194 if (slplink->swboard != NULL)
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
195 slplink->swboard->flag |= MSN_SB_FLAG_FT;
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
196
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
197 slplink->slp_calls = g_list_append(slplink->slp_calls, slpcall);
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
198
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
199 /*
30068
ade8dd1a1339 Re-indent directconn.h, and fix a typo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30067
diff changeset
200 if (slplink->dc != NULL && slplink->dc->state == DC_STATE_ESTABLISHED)
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
201 msn_dc_ref(slplink->dc);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
202 */
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
203 }
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
204
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
205 void
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
206 msn_slplink_remove_slpcall(MsnSlpLink *slplink, MsnSlpCall *slpcall)
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
207 {
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
208 /*
30068
ade8dd1a1339 Re-indent directconn.h, and fix a typo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30067
diff changeset
209 if (slplink->dc != NULL && slplink->dc->state == DC_STATE_ESTABLISHED)
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
210 msn_dc_unref(slplink->dc);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
211 */
30067
cfd3b7db3d0a De-spacify.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
212
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
213 slplink->slp_calls = g_list_remove(slplink->slp_calls, slpcall);
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
214
24615
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24613
diff changeset
215 /* The slplink has no slpcalls in it, release it from MSN_SB_FLAG_FT.
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24613
diff changeset
216 * If nothing else is using it then this might cause swboard to be
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24613
diff changeset
217 * destroyed. */
30336
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
218 if (slplink->slp_calls == NULL && slplink->swboard != NULL) {
30382
6eb81c3503c5 And another one just like 988846d28a03cf8bbce4170226129c2305919ebf. But
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30377
diff changeset
219 slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink);
24615
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24613
diff changeset
220 msn_switchboard_release(slplink->swboard, MSN_SB_FLAG_FT);
30336
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
221 slplink->swboard = NULL;
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
222 }
30110
ad136348db2d Close the DC when the slplink is empty.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30099
diff changeset
223
30492
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
224 if (slplink->dc != NULL) {
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
225 if ((slplink->dc->state != DC_STATE_ESTABLISHED && slplink->dc->slpcall == slpcall)
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
226 || (slplink->slp_calls == NULL)) {
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
227 /* The DC is not established and its corresponding slpcall is dead,
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
228 * or the slplink has no slpcalls in it and no longer needs the DC.
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
229 */
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
230 slplink->dc->slplink = NULL;
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
231 msn_dc_destroy(slplink->dc);
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
232 slplink->dc = NULL;
7d49d1421450 Destroy a DC if its corresponding slpcall is going away and it hasn't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30382
diff changeset
233 }
30336
cec8b3660981 NULL-ify some reverse links so that there's no double-free on exit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30325
diff changeset
234 }
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
235 }
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
236
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
237 MsnSlpCall *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
238 msn_slplink_find_slp_call(MsnSlpLink *slplink, const char *id)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
239 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
240 GList *l;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
241 MsnSlpCall *slpcall;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
242
10107
a722b8760bed [gaim-migrate @ 11139]
Evan Schoenberg <evands@pidgin.im>
parents: 10092
diff changeset
243 if (!id)
a722b8760bed [gaim-migrate @ 11139]
Evan Schoenberg <evands@pidgin.im>
parents: 10092
diff changeset
244 return NULL;
a722b8760bed [gaim-migrate @ 11139]
Evan Schoenberg <evands@pidgin.im>
parents: 10092
diff changeset
245
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
246 for (l = slplink->slp_calls; l != NULL; l = l->next)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
247 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
248 slpcall = l->data;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
249
10107
a722b8760bed [gaim-migrate @ 11139]
Evan Schoenberg <evands@pidgin.im>
parents: 10092
diff changeset
250 if (slpcall->id && !strcmp(slpcall->id, id))
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
251 return slpcall;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
252 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
253
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
254 return NULL;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
255 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
256
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
257 MsnSlpCall *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
258 msn_slplink_find_slp_call_with_session_id(MsnSlpLink *slplink, long id)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
259 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
260 GList *l;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
261 MsnSlpCall *slpcall;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
262
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
263 for (l = slplink->slp_calls; l != NULL; l = l->next)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
264 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
265 slpcall = l->data;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
266
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
267 if (slpcall->session_id == id)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
268 return slpcall;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
269 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
270
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
271 return NULL;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
272 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
273
31058
ef562d7a566b Fix a warning about a static function.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31057
diff changeset
274 static void
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
275 msn_slplink_send_part(MsnSlpLink *slplink, MsnSlpMessagePart *part)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
276 {
30068
ade8dd1a1339 Re-indent directconn.h, and fix a typo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30067
diff changeset
277 if (slplink->dc != NULL && slplink->dc->state == DC_STATE_ESTABLISHED)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
278 {
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
279 msn_dc_enqueue_part(slplink->dc, part);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
280 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
281 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
282 {
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
283 msn_sbconn_send_part(slplink, part);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
284 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
285 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
286
28694
76761af122e8 A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <darkrain42@pidgin.im>
parents: 28238
diff changeset
287 void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
288 msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
289 {
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
290 MsnSlpMessagePart *part;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
291 long long real_size;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
292 size_t len = 0;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
293
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
294 /* Maybe we will want to create a new msg for this slpmsg instead of
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
295 * reusing the same one all the time. */
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
296 part = msn_slpmsgpart_new(slpmsg->header, slpmsg->footer);
31007
336b38bb5876 Reomove MsnMessage reference from DirectConn.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31004
diff changeset
297 part->ack_data = slpmsg;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
298
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
299 real_size = (slpmsg->header->flags == P2P_ACK) ? 0 : slpmsg->size;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
300
31064
6d422455a312 Use the SlpMessage header offset only instead of it and the one on the SlpMessage when sending it. This fixes sending big data which needs to be split in multiple messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31061
diff changeset
301 if (slpmsg->header->offset < real_size)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
302 {
28694
76761af122e8 A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <darkrain42@pidgin.im>
parents: 28238
diff changeset
303 if (slpmsg->slpcall && slpmsg->slpcall->xfer && purple_xfer_get_type(slpmsg->slpcall->xfer) == PURPLE_XFER_SEND &&
76761af122e8 A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <darkrain42@pidgin.im>
parents: 28238
diff changeset
304 purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED)
76761af122e8 A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <darkrain42@pidgin.im>
parents: 28238
diff changeset
305 {
30996
2afd1b24e823 Document SlpMessage size limits.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30995
diff changeset
306 len = MIN(MSN_SBCONN_MAX_SIZE, slpmsg->slpcall->u.outgoing.len);
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
307 msn_slpmsgpart_set_bin_data(part, slpmsg->slpcall->u.outgoing.data, len);
28694
76761af122e8 A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <darkrain42@pidgin.im>
parents: 28238
diff changeset
308 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
309 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
310 {
31064
6d422455a312 Use the SlpMessage header offset only instead of it and the one on the SlpMessage when sending it. This fixes sending big data which needs to be split in multiple messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31061
diff changeset
311 len = slpmsg->size - slpmsg->header->offset;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
312
30996
2afd1b24e823 Document SlpMessage size limits.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30995
diff changeset
313 if (len > MSN_SBCONN_MAX_SIZE)
2afd1b24e823 Document SlpMessage size limits.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30995
diff changeset
314 len = MSN_SBCONN_MAX_SIZE;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
315
31064
6d422455a312 Use the SlpMessage header offset only instead of it and the one on the SlpMessage when sending it. This fixes sending big data which needs to be split in multiple messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31061
diff changeset
316 msn_slpmsgpart_set_bin_data(part, slpmsg->buffer + slpmsg->header->offset, len);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
317 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
318
30986
5e30592f85e5 Drop slp header and footer from MsnMessage in favor of MsnSlpMessage->header and footer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30981
diff changeset
319 slpmsg->header->length = len;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
320 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
321
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
322 #if 0
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
323 /* TODO: port this function to SlpMessageParts */
27770
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27361
diff changeset
324 if (purple_debug_is_verbose())
9d4cc577fe26 Apparently, I missed a few changes for purple_debug_is_verbose().
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27361
diff changeset
325 msn_message_show_readable(msg, slpmsg->info, slpmsg->text_body);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
326 #endif
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
327
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
328 #ifdef MSN_DEBUG_SLP_FILES
31028
c5b900f03fd4 Fix debug_*_to_file to process SlpMessages instead of MsnMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31010
diff changeset
329 debug_part_to_file(slpmsg, TRUE);
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
330 #endif
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
331
31004
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
332 slpmsg->parts = g_list_append(slpmsg->parts, part);
8ee3ecc37685 SlpLink must not use MsnMessages but SlpMessageParts, so migrate code to use SlpMessagePart API.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30997
diff changeset
333 msn_slplink_send_part(slplink, part);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
334
31070
2a60d87864b9 Avoid duplicated code using a util function to check the flags.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31069
diff changeset
335
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
336 if (msn_p2p_msg_is_data(slpmsg->header->flags) &&
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
337 (slpmsg->slpcall != NULL))
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
338 {
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
339 slpmsg->slpcall->progress = TRUE;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
340
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
341 if (slpmsg->slpcall->progress_cb != NULL)
9226
8eb466827540 [gaim-migrate @ 10022]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9219
diff changeset
342 {
9231
aa417f2a801e [gaim-migrate @ 10027]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9226
diff changeset
343 slpmsg->slpcall->progress_cb(slpmsg->slpcall, slpmsg->size,
31064
6d422455a312 Use the SlpMessage header offset only instead of it and the one on the SlpMessage when sending it. This fixes sending big data which needs to be split in multiple messages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31061
diff changeset
344 len, slpmsg->header->offset);
9226
8eb466827540 [gaim-migrate @ 10022]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9219
diff changeset
345 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
346 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
347
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
348 /* slpmsg->offset += len; */
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
349 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
350
24622
5e09935657d4 Make another function static
Mark Doliner <markdoliner@pidgin.im>
parents: 24621
diff changeset
351 static void
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
352 msn_slplink_release_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
353 {
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
354 slpmsg = slpmsg;
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
355 slpmsg->footer = g_new0(MsnP2PFooter, 1);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
356
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
357 if (slpmsg->header->flags == P2P_NO_FLAG)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
358 {
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
359 slpmsg->header->ack_id = rand() % 0xFFFFFF00;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
360 }
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
361 else if (msn_p2p_msg_is_data(slpmsg->header->flags))
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
362 {
23938
4570d6e22b9e Get rid of MsnSlpSession entirely. It only seems to link to MsnSlpCall
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23822
diff changeset
363 MsnSlpCall *slpcall;
4570d6e22b9e Get rid of MsnSlpSession entirely. It only seems to link to MsnSlpCall
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23822
diff changeset
364 slpcall = slpmsg->slpcall;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
365
23938
4570d6e22b9e Get rid of MsnSlpSession entirely. It only seems to link to MsnSlpCall
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23822
diff changeset
366 g_return_if_fail(slpcall != NULL);
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
367 slpmsg->header->session_id = slpcall->session_id;
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
368 slpmsg->footer->value = slpcall->app_id;
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
369 slpmsg->header->ack_id = rand() % 0xFFFFFF00;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
370 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
371
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
372 slpmsg->header->id = slpmsg->id;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
373
31010
83a229f1e114 Remove the MsnMessage from SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31007
diff changeset
374 slpmsg->header->total_size = slpmsg->size;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
375
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
376 msn_slplink_send_msgpart(slplink, slpmsg);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
377 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
378
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
379 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
380 msn_slplink_queue_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
381 {
25434
095988451602 This should prevent the crash in #8109 by stopping an invalid message from
Daniel Atallah <datallah@pidgin.im>
parents: 24622
diff changeset
382 g_return_if_fail(slpmsg != NULL);
095988451602 This should prevent the crash in #8109 by stopping an invalid message from
Daniel Atallah <datallah@pidgin.im>
parents: 24622
diff changeset
383
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
384 slpmsg->id = slplink->slp_seq_id++;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
385
24621
abf83be6a71f This doesn't matter, but I think the metaphor tends to be that you push
Mark Doliner <markdoliner@pidgin.im>
parents: 24620
diff changeset
386 g_queue_push_tail(slplink->slp_msg_queue, slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
387 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
388
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
389 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
390 msn_slplink_send_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
391 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
392 slpmsg->id = slplink->slp_seq_id++;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
393
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
394 msn_slplink_release_slpmsg(slplink, slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
395 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
396
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
397 void
24620
96c993e8f462 Reame msn_slplink_unleash to msn_slplink_send_queued_slpmsgs, which I
Mark Doliner <markdoliner@pidgin.im>
parents: 24618
diff changeset
398 msn_slplink_send_queued_slpmsgs(MsnSlpLink *slplink)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
399 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
400 MsnSlpMessage *slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
401
24620
96c993e8f462 Reame msn_slplink_unleash to msn_slplink_send_queued_slpmsgs, which I
Mark Doliner <markdoliner@pidgin.im>
parents: 24618
diff changeset
402 /* Send the queued msgs in the order they were created */
24621
abf83be6a71f This doesn't matter, but I think the metaphor tends to be that you push
Mark Doliner <markdoliner@pidgin.im>
parents: 24620
diff changeset
403 while ((slpmsg = g_queue_pop_head(slplink->slp_msg_queue)) != NULL)
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
404 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
405 msn_slplink_release_slpmsg(slplink, slpmsg);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
406 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
407 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
408
30081
a0f194e8dbb9 Remove old code that was commented out, but is really just not necessary.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30068
diff changeset
409 static MsnSlpMessage *
30971
39a254a27343 Drop Binary from the struct name.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30969
diff changeset
410 msn_slplink_create_ack(MsnSlpLink *slplink, MsnP2PHeader *header)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
411 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
412 MsnSlpMessage *slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
413
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
414 slpmsg = msn_slpmsg_ack_new(header);
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30986
diff changeset
415 msn_slpmsg_set_slplink(slpmsg, slplink);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
416
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
417 return slpmsg;
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
418 }
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
419
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
420 static void
30971
39a254a27343 Drop Binary from the struct name.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30969
diff changeset
421 msn_slplink_send_ack(MsnSlpLink *slplink, MsnP2PHeader *header)
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
422 {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
423 MsnSlpMessage *slpmsg = msn_slplink_create_ack(slplink, header);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
424
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
425 msn_slplink_send_slpmsg(slplink, slpmsg);
28204
28e981286c52 Patch written by Mark Doliner and Paul Aurich to fix a remote crash on MSN
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28164
diff changeset
426 msn_slpmsg_destroy(slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
427 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
428
24616
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
429 static MsnSlpMessage *
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
430 msn_slplink_message_find(MsnSlpLink *slplink, long session_id, long id)
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
431 {
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
432 GList *e;
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
433
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
434 for (e = slplink->slp_msgs; e != NULL; e = e->next)
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
435 {
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
436 MsnSlpMessage *slpmsg = e->data;
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
437
31057
fa267600d725 Remove session_id from SlpMsg and use the one from the header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31056
diff changeset
438 if ((slpmsg->header->session_id == session_id) && (slpmsg->id == id))
24616
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
439 return slpmsg;
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
440 }
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
441
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
442 return NULL;
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
443 }
5c788a8a8160 Make a few more functions static and remove a few declarations for
Mark Doliner <markdoliner@pidgin.im>
parents: 24615
diff changeset
444
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
445 static MsnSlpMessage *
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
446 init_first_msg(MsnSlpLink *slplink, MsnP2PHeader *header)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
447 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
448 MsnSlpMessage *slpmsg;
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
449
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
450 slpmsg = msn_slpmsg_new(slplink);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
451 slpmsg->id = header->id;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
452 slpmsg->header->session_id = header->session_id;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
453 slpmsg->size = header->total_size;
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
454 slpmsg->header->flags = header->flags;
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
455
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
456 if (slpmsg->header->session_id)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
457 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
458 slpmsg->slpcall = msn_slplink_find_slp_call_with_session_id(slplink, slpmsg->header->session_id);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
459 if (slpmsg->slpcall != NULL)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
460 {
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
461 if (msn_p2p_msg_is_data(header->flags))
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
462 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
463 PurpleXfer *xfer = slpmsg->slpcall->xfer;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
464 if (xfer != NULL)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
465 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
466 slpmsg->ft = TRUE;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
467 slpmsg->slpcall->xfer_msg = slpmsg;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
468
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
469 purple_xfer_ref(xfer);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
470 purple_xfer_start(xfer, -1, NULL, 0);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
471
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
472 if (xfer->data == NULL) {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
473 purple_xfer_unref(xfer);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
474 msn_slpmsg_destroy(slpmsg);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
475 g_return_val_if_reached(NULL);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
476 } else {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
477 purple_xfer_unref(xfer);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
478 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
479 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
480 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
481 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
482 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
483 if (!slpmsg->ft && slpmsg->size)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
484 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
485 slpmsg->buffer = g_try_malloc(slpmsg->size);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
486 if (slpmsg->buffer == NULL)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
487 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
488 purple_debug_error("msn", "Failed to allocate buffer for slpmsg\n");
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
489 msn_slpmsg_destroy(slpmsg);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
490 return NULL;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
491 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
492 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
493
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
494 return slpmsg;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
495 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
496
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
497 static void
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
498 process_complete_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg, MsnP2PHeader *header)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
499 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
500 MsnSlpCall *slpcall;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
501
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
502 slpcall = msn_slp_process_msg(slplink, slpmsg);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
503
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
504 if (slpcall == NULL) {
31147
99a593a0819b Sigh, so apparently, I broke receiving smileys with some over-zealous
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31136
diff changeset
505 msn_slpmsg_destroy(slpmsg);
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
506 return;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
507 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
508
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
509 purple_debug_info("msn", "msn_slplink_process_msg: slpmsg complete\n");
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
510
31073
575bf3c49db6 Use the documented enum flag instead of a magic number.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31072
diff changeset
511 if (/* !slpcall->wasted && */ slpmsg->header->flags == P2P_DC_HANDSHAKE)
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
512 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
513 #if 0
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
514 MsnDirectConn *directconn;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
515
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
516 directconn = slplink->directconn;
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
517 if (!directconn->acked)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
518 msn_directconn_send_handshake(directconn);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
519 #endif
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
520 }
31185
5ffa2e7ba2e1 Fix the name of this flag.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31147
diff changeset
521 else if (slpmsg->header->flags == P2P_NO_FLAG || slpmsg->header->flags == P2P_WLM2009_COMP ||
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
522 msn_p2p_msg_is_data(slpmsg->header->flags))
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
523 {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
524 /* Release all the messages and send the ACK */
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
525
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
526 if (slpcall->wait_for_socket) {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
527 /*
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
528 * Save ack for later because we have to send
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
529 * a 200 OK message to the previous direct connect
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
530 * invitation before ACK but the listening socket isn't
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
531 * created yet.
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
532 */
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
533 purple_debug_info("msn", "msn_slplink_process_msg: save ACK\n");
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
534
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
535 slpcall->slplink->dc->prev_ack = msn_slplink_create_ack(slplink, header);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
536 } else if (!slpcall->wasted) {
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
537 purple_debug_info("msn", "msn_slplink_process_msg: send ACK\n");
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
538
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
539 msn_slplink_send_ack(slplink, header);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
540 msn_slplink_send_queued_slpmsgs(slplink);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
541 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
542 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
543
31147
99a593a0819b Sigh, so apparently, I broke receiving smileys with some over-zealous
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31136
diff changeset
544 msn_slpmsg_destroy(slpmsg);
99a593a0819b Sigh, so apparently, I broke receiving smileys with some over-zealous
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31136
diff changeset
545
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
546 if (!slpcall->wait_for_socket && slpcall->wasted)
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
547 msn_slpcall_destroy(slpcall);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
548 }
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
549
31061
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
550 static void
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
551 slpmsg_add_part(MsnSlpMessage *slpmsg, MsnSlpMessagePart *part)
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
552 {
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
553 if (slpmsg->ft) {
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
554 slpmsg->slpcall->u.incoming_data =
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
555 g_byte_array_append(slpmsg->slpcall->u.incoming_data, (const guchar *)part->buffer, part->size);
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
556 purple_xfer_prpl_ready(slpmsg->slpcall->xfer);
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
557 }
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
558 else if (slpmsg->size && slpmsg->buffer) {
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
559 if (G_MAXSIZE - part->size < part->header->offset
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
560 || (part->header->offset + part->size) > slpmsg->size
31065
6094ffb96a11 Get rid of the offset field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31064
diff changeset
561 || slpmsg->header->offset != part->header->offset) {
31061
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
562 purple_debug_error("msn",
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
563 "Oversized slpmsg - msgsize=%lld offset=%" G_GUINT64_FORMAT " len=%" G_GSIZE_FORMAT "\n",
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
564 slpmsg->size, part->header->offset, part->size);
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
565 g_return_if_reached();
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
566 } else {
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
567 memcpy(slpmsg->buffer + part->header->offset, part->buffer, part->size);
31065
6094ffb96a11 Get rid of the offset field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31064
diff changeset
568 slpmsg->header->offset += part->size;
31061
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
569 }
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
570 }
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
571 }
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
572
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
573 void
31060
67d11dfa6338 Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31059
diff changeset
574 msn_slplink_process_msg(MsnSlpLink *slplink, MsnSlpMessagePart *part)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
575 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
576 MsnSlpMessage *slpmsg;
31060
67d11dfa6338 Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31059
diff changeset
577 MsnP2PHeader *header;
25738
1dbaaa263c96 *** Plucked rev 9dd1c4c3 (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25436
diff changeset
578 guint64 offset;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
579
31060
67d11dfa6338 Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31059
diff changeset
580 header = part->header;
67d11dfa6338 Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31059
diff changeset
581
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
582 if (header->total_size < header->length)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
583 {
29460
fab6bce78263 Attempt to simplify and clean
Mark Doliner <markdoliner@pidgin.im>
parents: 29457
diff changeset
584 /* We seem to have received a bad header */
fab6bce78263 Attempt to simplify and clean
Mark Doliner <markdoliner@pidgin.im>
parents: 29457
diff changeset
585 purple_debug_warning("msn", "Total size listed in SLP binary header "
fab6bce78263 Attempt to simplify and clean
Mark Doliner <markdoliner@pidgin.im>
parents: 29457
diff changeset
586 "was less than length of this particular message. This "
fab6bce78263 Attempt to simplify and clean
Mark Doliner <markdoliner@pidgin.im>
parents: 29457
diff changeset
587 "should not happen. Dropping message.\n");
fab6bce78263 Attempt to simplify and clean
Mark Doliner <markdoliner@pidgin.im>
parents: 29457
diff changeset
588 return;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
589 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
590
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
591 offset = header->offset;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
592
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
593 if (offset == 0)
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
594 slpmsg = init_first_msg(slplink, header);
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
595 else {
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
596 slpmsg = msn_slplink_message_find(slplink, header->session_id, header->id);
28164
6a9089f8abf1 Move this check inside the else condition. The other half of the if
Mark Doliner <markdoliner@pidgin.im>
parents: 28152
diff changeset
597 if (slpmsg == NULL)
6a9089f8abf1 Move this check inside the else condition. The other half of the if
Mark Doliner <markdoliner@pidgin.im>
parents: 28152
diff changeset
598 {
30708
535bec1e66fb Standardize on "cancelled".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30492
diff changeset
599 /* Probably the transfer was cancelled */
28164
6a9089f8abf1 Move this check inside the else condition. The other half of the if
Mark Doliner <markdoliner@pidgin.im>
parents: 28152
diff changeset
600 purple_debug_error("msn", "Couldn't find slpmsg\n");
6a9089f8abf1 Move this check inside the else condition. The other half of the if
Mark Doliner <markdoliner@pidgin.im>
parents: 28152
diff changeset
601 return;
6a9089f8abf1 Move this check inside the else condition. The other half of the if
Mark Doliner <markdoliner@pidgin.im>
parents: 28152
diff changeset
602 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
603 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
604
31061
e42739e2a1f0 Split a little more msn_slplink_process_msg. I think this way is easier to read.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31060
diff changeset
605 slpmsg_add_part(slpmsg, part);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
606
31070
2a60d87864b9 Avoid duplicated code using a util function to check the flags.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31069
diff changeset
607
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31070
diff changeset
608 if (msn_p2p_msg_is_data(slpmsg->header->flags) &&
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10296
diff changeset
609 (slpmsg->slpcall != NULL))
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
610 {
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
611 slpmsg->slpcall->progress = TRUE;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
612
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
613 if (slpmsg->slpcall->progress_cb != NULL)
9231
aa417f2a801e [gaim-migrate @ 10027]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9226
diff changeset
614 {
aa417f2a801e [gaim-migrate @ 10027]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9226
diff changeset
615 slpmsg->slpcall->progress_cb(slpmsg->slpcall, slpmsg->size,
31060
67d11dfa6338 Process SlpMessageParts, a sequence of parts will generate a SlpMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31059
diff changeset
616 part->size, offset);
9231
aa417f2a801e [gaim-migrate @ 10027]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9226
diff changeset
617 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
618 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
619
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
620 #if 0
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
621 if (slpmsg->buffer == NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
622 return;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
623 #endif
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
624
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
625 /* All the pieces of the slpmsg have been received */
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29780
diff changeset
626 if (header->offset + header->length >= header->total_size)
31059
dfbff5bf9921 Split msn_slplink_process_msg in three smaller functions.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31058
diff changeset
627 process_complete_msg(slplink, slpmsg, header);
31136
643ef83b4c67 Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31076
diff changeset
628
31147
99a593a0819b Sigh, so apparently, I broke receiving smileys with some over-zealous
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31136
diff changeset
629 /* NOTE: The slpmsg will be destroyed in process_complete_msg or left in
99a593a0819b Sigh, so apparently, I broke receiving smileys with some over-zealous
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31136
diff changeset
630 the slplink until fully received. Don't free it here!
99a593a0819b Sigh, so apparently, I broke receiving smileys with some over-zealous
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31136
diff changeset
631 */
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
632 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
633
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
634 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
635 msn_slplink_request_object(MsnSlpLink *slplink,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
636 const char *info,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
637 MsnSlpCb cb,
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
638 MsnSlpEndCb end_cb,
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
639 const MsnObject *obj)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
640 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
641 MsnSlpCall *slpcall;
11164
4396374c0cd9 [gaim-migrate @ 13265]
Mark Doliner <markdoliner@pidgin.im>
parents: 10773
diff changeset
642 char *msnobj_data;
4396374c0cd9 [gaim-migrate @ 13265]
Mark Doliner <markdoliner@pidgin.im>
parents: 10773
diff changeset
643 char *msnobj_base64;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
644
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
645 g_return_if_fail(slplink != NULL);
9861
2aae2032f2bf [gaim-migrate @ 10740]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9788
diff changeset
646 g_return_if_fail(obj != NULL);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
647
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
648 msnobj_data = msn_object_to_string(obj);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
649 msnobj_base64 = purple_base64_encode((const guchar *)msnobj_data, strlen(msnobj_data));
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
650 g_free(msnobj_data);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
651
24618
190103ba3381 For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <markdoliner@pidgin.im>
parents: 24616
diff changeset
652 slpcall = msn_slpcall_new(slplink);
190103ba3381 For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <markdoliner@pidgin.im>
parents: 24616
diff changeset
653 msn_slpcall_init(slpcall, MSN_SLPCALL_ANY);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
654
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
655 slpcall->data_info = g_strdup(info);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
656 slpcall->cb = cb;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10107
diff changeset
657 slpcall->end_cb = end_cb;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
658
31046
33671e05cf24 Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31044
diff changeset
659 msn_slpcall_invite(slpcall, MSN_OBJ_GUID, P2P_APPID_OBJ, msnobj_base64);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
660
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
661 g_free(msnobj_base64);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
662 }

mercurial