Mercurial > pidgin.yaz
annotate libpurple/protocols/msn/slpmsg.c @ 31430:94b3092c904d
Apparently, UBM was updated with more parameters in MSNp16. One is
your own email address, but I'm not sure what the 4th parameter is.
Anyway, update payload length to use the correct parameter now.
Fixes #13022.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Thu, 02 Dec 2010 03:59:58 +0000 |
parents | 72e6fa6caecc |
children | 05e05d96ba75 |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /** |
31412
72e6fa6caecc
These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31387
diff
changeset
|
2 * @file slpmsg.c SLP Message functions |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
15823 | 4 * purple |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * |
15823 | 6 * Purple is the legal property of its developers, whose names are too numerous |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * source distribution. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
16536
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 */ |
31180
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
30509
diff
changeset
|
24 |
31196
230caecf5435
Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
masca@cpw.pidgin.im
parents:
31180
diff
changeset
|
25 #include "internal.h" |
31180
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
30509
diff
changeset
|
26 #include "debug.h" |
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
30509
diff
changeset
|
27 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 #include "slpmsg.h" |
31261
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
29 #include "slpmsg_part.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "slplink.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 /************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 * SLP Message |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 **************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 MsnSlpMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 msn_slpmsg_new(MsnSlpLink *slplink) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 MsnSlpMessage *slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 slpmsg = g_new0(MsnSlpMessage, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 |
27509
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24333
diff
changeset
|
43 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24333
diff
changeset
|
44 purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 |
31227
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
46 if (slplink) |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
47 msn_slpmsg_set_slplink(slpmsg, slplink); |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
48 else |
31219
74e372b31486
Allow temporary SlpMessages so we can get slp specific code from MsnMessage.
masca@cpw.pidgin.im
parents:
31218
diff
changeset
|
49 slpmsg->slplink = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 |
31293
6814678f3c63
Remove session_id from SlpMsg and use the one from the header.
masca@cpw.pidgin.im
parents:
31274
diff
changeset
|
51 slpmsg->header = g_new0(MsnP2PHeader, 1); |
31218
b98d1ca8422d
This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
masca@cpw.pidgin.im
parents:
31196
diff
changeset
|
52 slpmsg->footer = NULL; |
b98d1ca8422d
This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
masca@cpw.pidgin.im
parents:
31196
diff
changeset
|
53 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
54 return slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
56 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
57 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 msn_slpmsg_destroy(MsnSlpMessage *slpmsg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
60 MsnSlpLink *slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 GList *cur; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
63 g_return_if_fail(slpmsg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 |
27509
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24333
diff
changeset
|
65 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24333
diff
changeset
|
66 purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 slplink = slpmsg->slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 |
16390
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
70 purple_imgstore_unref(slpmsg->img); |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
71 |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
72 /* We don't want to free the data of the PurpleStoredImage, |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
73 * but to avoid code duplication, it's sharing buffer. */ |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
74 if (slpmsg->img == NULL) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 g_free(slpmsg->buffer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 |
31261
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
77 for (cur = slpmsg->parts; cur != NULL; cur = g_list_delete_link(cur, cur)) |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
78 { |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
79 /* Something is pointing to this slpmsg, so we should remove that |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
80 * pointer to prevent a crash. */ |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
81 /* Ex: a user goes offline and after that we receive an ACK */ |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
82 |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
83 MsnSlpMessagePart *part = cur->data; |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
84 |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
85 part->ack_cb = NULL; |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
86 part->nak_cb = NULL; |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
87 part->ack_data = NULL; |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
88 msn_slpmsgpart_destroy(part); |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
89 } |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
90 |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
91 slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg); |
ede71a46ef16
Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents:
31251
diff
changeset
|
92 |
31218
b98d1ca8422d
This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
masca@cpw.pidgin.im
parents:
31196
diff
changeset
|
93 g_free(slpmsg->header); |
b98d1ca8422d
This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
masca@cpw.pidgin.im
parents:
31196
diff
changeset
|
94 g_free(slpmsg->footer); |
b98d1ca8422d
This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
masca@cpw.pidgin.im
parents:
31196
diff
changeset
|
95 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 g_free(slpmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
99 void |
31227
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
100 msn_slpmsg_set_slplink(MsnSlpMessage *slpmsg, MsnSlpLink *slplink) |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
101 { |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
102 g_return_if_fail(slplink != NULL); |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
103 |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
104 slpmsg->slplink = slplink; |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
105 |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
106 slplink->slp_msgs = |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
107 g_list_append(slplink->slp_msgs, slpmsg); |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
108 |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
109 } |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
110 |
2c3d7104ef1e
Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents:
31226
diff
changeset
|
111 void |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 long long size) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 { |
16390
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
115 /* We can only have one data source at a time. */ |
16536
1c07ce257fd7
Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@wiktel.com>
parents:
16390
diff
changeset
|
116 g_return_if_fail(slpmsg->buffer == NULL); |
1c07ce257fd7
Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@wiktel.com>
parents:
16390
diff
changeset
|
117 g_return_if_fail(slpmsg->img == NULL); |
29075
6aea98f6a5cd
Get rid of slpmsg->fp since the core is handling all the partial reads and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
118 g_return_if_fail(slpmsg->ft == FALSE); |
16390
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
119 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 if (body != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 slpmsg->buffer = g_memdup(body, size); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 slpmsg->buffer = g_new0(guchar, size); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 slpmsg->size = size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 void |
16390
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
129 msn_slpmsg_set_image(MsnSlpMessage *slpmsg, PurpleStoredImage *img) |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
130 { |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
131 /* We can only have one data source at a time. */ |
16536
1c07ce257fd7
Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@wiktel.com>
parents:
16390
diff
changeset
|
132 g_return_if_fail(slpmsg->buffer == NULL); |
1c07ce257fd7
Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@wiktel.com>
parents:
16390
diff
changeset
|
133 g_return_if_fail(slpmsg->img == NULL); |
29075
6aea98f6a5cd
Get rid of slpmsg->fp since the core is handling all the partial reads and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
134 g_return_if_fail(slpmsg->ft == FALSE); |
16390
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
135 |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
136 slpmsg->img = purple_imgstore_ref(img); |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
137 slpmsg->buffer = (guchar *)purple_imgstore_get_data(img); |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
138 slpmsg->size = purple_imgstore_get_size(img); |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
139 } |
4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
140 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 MsnSlpMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 msn_slpmsg_sip_new(MsnSlpCall *slpcall, int cseq, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 const char *header, const char *branch, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 const char *content_type, const char *content) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 MsnSlpLink *slplink; |
24333
c6c714b7841d
Get rid of slplink->local_user because it's a copy of
Mark Doliner <mark@kingant.net>
parents:
23718
diff
changeset
|
148 PurpleAccount *account; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 MsnSlpMessage *slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 gsize body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 gsize content_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 g_return_val_if_fail(slpcall != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 g_return_val_if_fail(header != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 slplink = slpcall->slplink; |
24333
c6c714b7841d
Get rid of slplink->local_user because it's a copy of
Mark Doliner <mark@kingant.net>
parents:
23718
diff
changeset
|
158 account = slplink->session->account; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 /* Let's remember that "content" should end with a 0x00 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 content_len = (content != NULL) ? strlen(content) + 1 : 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 body = g_strdup_printf( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 "%s\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 "To: <msnmsgr:%s>\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 "From: <msnmsgr:%s>\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 "Via: MSNSLP/1.0/TLP ;branch={%s}\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 "CSeq: %d\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 "Call-ID: {%s}\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 "Max-Forwards: 0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
172 "Content-Type: %s\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
173 "Content-Length: %" G_GSIZE_FORMAT "\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 "\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 header, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 slplink->remote_user, |
24333
c6c714b7841d
Get rid of slplink->local_user because it's a copy of
Mark Doliner <mark@kingant.net>
parents:
23718
diff
changeset
|
177 purple_account_get_username(account), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 branch, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 cseq, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 slpcall->id, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 content_type, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 content_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
183 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
184 body_len = strlen(body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
185 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 if (content_len > 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 body_len += content_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
189 body = g_realloc(body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 g_strlcat(body, content, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
191 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
192 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 slpmsg = msn_slpmsg_new(slplink); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 msn_slpmsg_set_body(slpmsg, body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
195 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 slpmsg->sip = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 slpmsg->slpcall = slpcall; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 g_free(body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
200 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
201 return slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 } |
31221
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
203 |
31230 | 204 MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PHeader *header) |
31228
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
205 { |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
206 MsnSlpMessage *slpmsg; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
207 |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
208 slpmsg = msn_slpmsg_new(NULL); |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
209 |
31293
6814678f3c63
Remove session_id from SlpMsg and use the one from the header.
masca@cpw.pidgin.im
parents:
31274
diff
changeset
|
210 slpmsg->header->session_id = header->session_id; |
31228
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
211 slpmsg->size = header->total_size; |
31308
d9ca3798faa5
Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31305
diff
changeset
|
212 slpmsg->header->flags = P2P_ACK; |
31302
e32332ac385c
Get rid of the ack_id field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31293
diff
changeset
|
213 slpmsg->header->ack_id = header->id; |
31304
b682664bae30
Get rid of the ack_sub_id field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31303
diff
changeset
|
214 slpmsg->header->ack_sub_id = header->ack_id; |
31305
6b73ff4fcc69
Get rid of the ack_size field in the SlpMessage in favor of the one in the Header. And do nothing if the released SlpMessage is an ACK or a 100 (DC Handshake).
masca@cpw.pidgin.im
parents:
31304
diff
changeset
|
215 slpmsg->header->ack_size = header->total_size; |
31228
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
216 slpmsg->info = "SLP ACK"; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
217 |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
218 return slpmsg; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
219 } |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
31227
diff
changeset
|
220 |
31230 | 221 MsnSlpMessage *msn_slpmsg_obj_new(MsnSlpCall *slpcall, PurpleStoredImage *img) |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
222 { |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
223 MsnSlpMessage *slpmsg; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
224 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
225 slpmsg = msn_slpmsg_new(NULL); |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
226 slpmsg->slpcall = slpcall; |
31308
d9ca3798faa5
Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31305
diff
changeset
|
227 slpmsg->header->flags = P2P_MSN_OBJ_DATA; |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
228 slpmsg->info = "SLP DATA"; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
229 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
230 msn_slpmsg_set_image(slpmsg, img); |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
231 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
232 return slpmsg; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
233 } |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
234 |
31230 | 235 MsnSlpMessage *msn_slpmsg_dataprep_new(MsnSlpCall *slpcall) |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
236 { |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
237 MsnSlpMessage *slpmsg; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
238 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
239 slpmsg = msn_slpmsg_new(NULL); |
31293
6814678f3c63
Remove session_id from SlpMsg and use the one from the header.
masca@cpw.pidgin.im
parents:
31274
diff
changeset
|
240 |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
241 slpmsg->slpcall = slpcall; |
31293
6814678f3c63
Remove session_id from SlpMsg and use the one from the header.
masca@cpw.pidgin.im
parents:
31274
diff
changeset
|
242 slpmsg->header->session_id = slpcall->session_id; |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
243 msn_slpmsg_set_body(slpmsg, NULL, 4); |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
244 slpmsg->info = "SLP DATA PREP"; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
245 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
246 return slpmsg; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
247 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
248 } |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
249 |
31230 | 250 MsnSlpMessage *msn_slpmsg_file_new(MsnSlpCall *slpcall, size_t size) |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
251 { |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
252 MsnSlpMessage *slpmsg; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
253 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
254 slpmsg = msn_slpmsg_new(NULL); |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
255 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
256 slpmsg->slpcall = slpcall; |
31308
d9ca3798faa5
Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
masca@cpw.pidgin.im
parents:
31305
diff
changeset
|
257 slpmsg->header->flags = P2P_FILE_DATA; |
31229
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
258 slpmsg->info = "SLP FILE"; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
259 slpmsg->size = size; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
260 |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
261 return slpmsg; |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
262 } |
64a6ce55aa63
Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents:
31228
diff
changeset
|
263 |
31221
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
264 char *msn_slpmsg_serialize(MsnSlpMessage *slpmsg, size_t *ret_size) |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
265 { |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
266 MsnP2PHeader *header; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
267 MsnP2PFooter *footer; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
268 char *base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
269 char *tmp; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
270 size_t siz; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
271 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
272 base = g_malloc(P2P_PACKET_HEADER_SIZE + slpmsg->size + sizeof(MsnP2PFooter)); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
273 tmp = base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
274 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
275 header = msn_p2p_header_to_wire(slpmsg->header); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
276 footer = msn_p2p_footer_to_wire(slpmsg->footer); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
277 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
278 siz = sizeof(MsnP2PHeader); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
279 /* Copy header */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
280 memcpy(tmp, (char*)header, siz); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
281 tmp += siz; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
282 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
283 /* Copy body */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
284 memcpy(tmp, slpmsg->buffer, slpmsg->size); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
285 tmp += slpmsg->size; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
286 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
287 /* Copy footer */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
288 siz = sizeof(MsnP2PFooter); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
289 memcpy(tmp, (char*)footer, siz); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
290 tmp += siz; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
291 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
292 *ret_size = tmp - base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
293 |
31375
4e097dfb7784
Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31308
diff
changeset
|
294 g_free(header); |
4e097dfb7784
Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31308
diff
changeset
|
295 g_free(footer); |
4e097dfb7784
Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31308
diff
changeset
|
296 |
31221
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
297 return base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
31219
diff
changeset
|
298 } |
31274
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
299 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
300 void msn_slpmsg_show_readable(MsnSlpMessage *slpmsg) |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
301 { |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
302 GString *str; |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
303 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
304 str = g_string_new(NULL); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
305 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
306 g_string_append_printf(str, "Session ID: %u\r\n", slpmsg->header->session_id); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
307 g_string_append_printf(str, "ID: %u\r\n", slpmsg->header->id); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
308 g_string_append_printf(str, "Offset: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->offset); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
309 g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->total_size); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
310 g_string_append_printf(str, "Length: %u\r\n", slpmsg->header->length); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
311 g_string_append_printf(str, "Flags: 0x%x\r\n", slpmsg->header->flags); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
312 g_string_append_printf(str, "ACK ID: %u\r\n", slpmsg->header->ack_id); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
313 g_string_append_printf(str, "SUB ID: %u\r\n", slpmsg->header->ack_sub_id); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
314 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->ack_size); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
315 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
316 if (purple_debug_is_verbose() && slpmsg->buffer != NULL) { |
31303
b785e4256a66
Fix a warning caused because slpmsg->buffer is unsigned and the function spect a gchar pointer. I don't think this can harm in any way.
masca@cpw.pidgin.im
parents:
31302
diff
changeset
|
317 g_string_append_len(str, (gchar*)slpmsg->buffer, slpmsg->size); |
31274
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
318 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
319 if (slpmsg->buffer[slpmsg->size - 1] == '\0') { |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
320 str->len--; |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
321 g_string_append(str, " 0x00"); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
322 } |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
323 g_string_append(str, "\r\n"); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
324 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
325 } |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
326 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
327 g_string_append_printf(str, "Footer: %u\r\n", slpmsg->footer->value); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
328 |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
329 purple_debug_info("msn", "SlpMessage %s:\n{%s}\n", slpmsg->info, str->str); |
237e2c2874e6
Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents:
31266
diff
changeset
|
330 } |