Wed, 15 Dec 2010 22:04:08 +0000
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 | 4 | * purple |
|
9198
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9193
diff
changeset
|
5 | * |
| 15884 | 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 | 122 | g_queue_free(slplink->slp_msg_queue); |
| 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 | 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 | 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 | } |