annotate libpurple/protocols/msn/slpmsg.c @ 31567:968103d932d6

Add P2Pv2 ack'ing.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 07 May 2011 07:29:47 +0000
parents 9562a7baa9e4
children 2201ecdf0c45
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /**
30969
72e6fa6caecc These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30946
diff changeset
2 * @file slpmsg.c SLP Message functions
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
4 * purple
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 *
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
15373
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
19681
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 16528
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 */
30742
a99b6dcdb60d Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents: 30089
diff changeset
24
30758
230caecf5435 Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
masca@cpw.pidgin.im
parents: 30742
diff changeset
25 #include "internal.h"
30742
a99b6dcdb60d Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents: 30089
diff changeset
26 #include "debug.h"
a99b6dcdb60d Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents: 30089
diff changeset
27
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include "slpmsg.h"
30823
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
29 #include "slpmsg_part.h"
15373
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
27432
35b6fd563056 Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24390
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: 24390
diff changeset
44 purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31044
diff changeset
46 if (slplink)
30789
2c3d7104ef1e Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents: 30788
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: 30788
diff changeset
48 else
30781
74e372b31486 Allow temporary SlpMessages so we can get slp specific code from MsnMessage.
masca@cpw.pidgin.im
parents: 30780
diff changeset
49 slpmsg->slplink = NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50
31268
9562a7baa9e4 Add P2Pv2 header information to the P2P info struct. Of course, all
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31151
diff changeset
51 slpmsg->p2p_info = msn_p2p_info_new(MSN_P2P_VERSION_ONE);
30780
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: 30758
diff changeset
52
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 return slpmsg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 }
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 void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 msn_slpmsg_destroy(MsnSlpMessage *slpmsg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 MsnSlpLink *slplink;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 GList *cur;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 g_return_if_fail(slpmsg != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63
27432
35b6fd563056 Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24390
diff changeset
64 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: 24390
diff changeset
65 purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 slplink = slpmsg->slplink;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68
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: 15822
diff changeset
69 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: 15822
diff changeset
70
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: 15822
diff changeset
71 /* 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: 15822
diff changeset
72 * 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: 15822
diff changeset
73 if (slpmsg->img == NULL)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 g_free(slpmsg->buffer);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75
30823
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
76 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: 30813
diff changeset
77 {
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
78 /* Something is pointing to this slpmsg, so we should remove that
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
79 * pointer to prevent a crash. */
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
80 /* 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: 30813
diff changeset
81
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
82 MsnSlpMessagePart *part = cur->data;
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
83
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
84 part->ack_cb = NULL;
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
85 part->nak_cb = NULL;
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
86 part->ack_data = NULL;
31036
05e05d96ba75 Use the unref functions everywhere, instead of destroy. I also removed
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30969
diff changeset
87 msn_slpmsgpart_unref(part);
30823
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
88 }
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
89
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
90 slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg);
ede71a46ef16 Destroy Parts when the SlpMessage is destroyed.
masca@cpw.pidgin.im
parents: 30813
diff changeset
91
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
92 msn_p2p_info_free(slpmsg->p2p_info);
30780
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: 30758
diff changeset
93
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 g_free(slpmsg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 void
30789
2c3d7104ef1e Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents: 30788
diff changeset
98 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: 30788
diff changeset
99 {
2c3d7104ef1e Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents: 30788
diff changeset
100 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: 30788
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: 30788
diff changeset
102 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: 30788
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: 30788
diff changeset
104 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: 30788
diff changeset
105 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: 30788
diff changeset
106
2c3d7104ef1e Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents: 30788
diff changeset
107 }
2c3d7104ef1e Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
masca@cpw.pidgin.im
parents: 30788
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: 30788
diff changeset
109 void
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 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
111 long long size)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 {
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: 15822
diff changeset
113 /* We can only have one data source at a time. */
16528
1c07ce257fd7 Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@wiktel.com>
parents: 16390
diff changeset
114 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
115 g_return_if_fail(slpmsg->img == NULL);
28693
6aea98f6a5cd Get rid of slpmsg->fp since the core is handling all the partial reads and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27432
diff changeset
116 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: 15822
diff changeset
117
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 if (body != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 slpmsg->buffer = g_memdup(body, size);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 slpmsg->buffer = g_new0(guchar, size);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 slpmsg->size = 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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 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: 15822
diff changeset
127 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: 15822
diff changeset
128 {
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: 15822
diff changeset
129 /* We can only have one data source at a time. */
16528
1c07ce257fd7 Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@wiktel.com>
parents: 16390
diff changeset
130 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
131 g_return_if_fail(slpmsg->img == NULL);
28693
6aea98f6a5cd Get rid of slpmsg->fp since the core is handling all the partial reads and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27432
diff changeset
132 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: 15822
diff changeset
133
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: 15822
diff changeset
134 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: 15822
diff changeset
135 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: 15822
diff changeset
136 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: 15822
diff changeset
137 }
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: 15822
diff changeset
138
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 MsnSlpMessage *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 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
142 const char *header, const char *branch,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 const char *content_type, const char *content)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 MsnSlpLink *slplink;
24390
c6c714b7841d Get rid of slplink->local_user because it's a copy of
Mark Doliner <mark@kingant.net>
parents: 23661
diff changeset
146 PurpleAccount *account;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 MsnSlpMessage *slpmsg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148 char *body;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 gsize body_len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150 gsize content_len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 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
153 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
154
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 slplink = slpcall->slplink;
24390
c6c714b7841d Get rid of slplink->local_user because it's a copy of
Mark Doliner <mark@kingant.net>
parents: 23661
diff changeset
156 account = slplink->session->account;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 /* 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
159
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 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
161
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 body = g_strdup_printf(
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 "%s\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 "To: <msnmsgr:%s>\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 "From: <msnmsgr:%s>\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 "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
167 "CSeq: %d\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 "Call-ID: {%s}\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 "Max-Forwards: 0\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 "Content-Type: %s\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171 "Content-Length: %" G_GSIZE_FORMAT "\r\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 "\r\n",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 header,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 slplink->remote_user,
24390
c6c714b7841d Get rid of slplink->local_user because it's a copy of
Mark Doliner <mark@kingant.net>
parents: 23661
diff changeset
175 purple_account_get_username(account),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 branch,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 cseq,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 slpcall->id,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 content_type,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 content_len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 body_len = strlen(body);
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 if (content_len > 0)
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 body_len += content_len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 body = g_realloc(body, body_len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 g_strlcat(body, content, body_len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191 slpmsg = msn_slpmsg_new(slplink);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192 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
193
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194 slpmsg->slpcall = slpcall;
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 g_free(body);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 return slpmsg;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 }
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
200
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
201 MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PInfo *ack_info)
30790
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
202 {
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
203 MsnSlpMessage *slpmsg;
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
204 MsnP2PInfo *new_info;
30790
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
205
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
206 slpmsg = msn_slpmsg_new(NULL);
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
207
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
208 new_info = slpmsg->p2p_info;
31567
968103d932d6 Add P2Pv2 ack'ing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31268
diff changeset
209 msn_p2p_info_create_ack(ack_info, new_info);
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
210 slpmsg->size = msn_p2p_info_get_total_size(ack_info);
30790
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
211 slpmsg->info = "SLP ACK";
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
212
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
213 return slpmsg;
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
214 }
545fa069c531 The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents: 30789
diff changeset
215
30792
9192c59f2f84 Use better function names.
masca@cpw.pidgin.im
parents: 30791
diff changeset
216 MsnSlpMessage *msn_slpmsg_obj_new(MsnSlpCall *slpcall, PurpleStoredImage *img)
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
217 {
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
218 MsnSlpMessage *slpmsg;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
219
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
220 slpmsg = msn_slpmsg_new(NULL);
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
221 slpmsg->slpcall = slpcall;
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
222 msn_p2p_info_set_flags(slpmsg->p2p_info, P2P_MSN_OBJ_DATA);
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
223 slpmsg->info = "SLP DATA";
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
224
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
225 msn_slpmsg_set_image(slpmsg, img);
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
226
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
227 return slpmsg;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
228 }
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
229
30792
9192c59f2f84 Use better function names.
masca@cpw.pidgin.im
parents: 30791
diff changeset
230 MsnSlpMessage *msn_slpmsg_dataprep_new(MsnSlpCall *slpcall)
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
231 {
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
232 MsnSlpMessage *slpmsg;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
233
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
234 slpmsg = msn_slpmsg_new(NULL);
30855
6814678f3c63 Remove session_id from SlpMsg and use the one from the header.
masca@cpw.pidgin.im
parents: 30836
diff changeset
235
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
236 slpmsg->slpcall = slpcall;
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
237 msn_p2p_info_set_session_id(slpmsg->p2p_info, slpcall->session_id);
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
238 msn_slpmsg_set_body(slpmsg, NULL, 4);
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
239 slpmsg->info = "SLP DATA PREP";
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
240
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
241 return slpmsg;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
242
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
243 }
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
244
30792
9192c59f2f84 Use better function names.
masca@cpw.pidgin.im
parents: 30791
diff changeset
245 MsnSlpMessage *msn_slpmsg_file_new(MsnSlpCall *slpcall, size_t size)
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
246 {
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
247 MsnSlpMessage *slpmsg;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
248
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
249 slpmsg = msn_slpmsg_new(NULL);
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
250
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
251 slpmsg->slpcall = slpcall;
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
252 msn_p2p_info_set_flags(slpmsg->p2p_info, P2P_FILE_DATA);
30791
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
253 slpmsg->info = "SLP FILE";
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
254 slpmsg->size = size;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
255
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
256 return slpmsg;
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
257 }
64a6ce55aa63 Move more SlpMessage creation to its module.
masca@cpw.pidgin.im
parents: 30790
diff changeset
258
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
259 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: 30781
diff changeset
260 {
31044
7b771e6f1142 Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31036
diff changeset
261 char *header;
7b771e6f1142 Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31036
diff changeset
262 char *footer;
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
263 char *base;
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
264 char *tmp;
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
265 size_t header_size, footer_size;
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
266
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
267 header = msn_p2p_header_to_wire(slpmsg->p2p_info, &header_size);
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
268 footer = msn_p2p_footer_to_wire(slpmsg->p2p_info, &footer_size);
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
269
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
270 base = g_malloc(header_size + slpmsg->size + footer_size);
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
271 tmp = base;
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
272
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
273 /* Copy header */
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
274 memcpy(tmp, header, header_size);
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
275 tmp += header_size;
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
276
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
277 /* Copy body */
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
278 memcpy(tmp, slpmsg->buffer, slpmsg->size);
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
279 tmp += slpmsg->size;
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
280
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
281 /* Copy footer */
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
282 memcpy(tmp, footer, footer_size);
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
283 tmp += footer_size;
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
284
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
285 *ret_size = tmp - base;
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
286
30934
4e097dfb7784 Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30870
diff changeset
287 g_free(header);
4e097dfb7784 Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30870
diff changeset
288 g_free(footer);
4e097dfb7784 Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30870
diff changeset
289
30783
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
290 return base;
09f2a7d2ac99 Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents: 30781
diff changeset
291 }
30836
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
292
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
293 void msn_slpmsg_show_readable(MsnSlpMessage *slpmsg)
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
294 {
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
295 GString *str;
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
296
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
297 str = g_string_new(NULL);
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
298
31151
34da321b60f1 Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31142
diff changeset
299 msn_p2p_info_to_string(slpmsg->p2p_info, str);
30836
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
300
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
301 if (purple_debug_is_verbose() && slpmsg->buffer != NULL) {
30865
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: 30864
diff changeset
302 g_string_append_len(str, (gchar*)slpmsg->buffer, slpmsg->size);
30836
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
303
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
304 if (slpmsg->buffer[slpmsg->size - 1] == '\0') {
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
305 str->len--;
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
306 g_string_append(str, " 0x00");
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
307 }
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
308 g_string_append(str, "\r\n");
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
309
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
310 }
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
311
237e2c2874e6 Add a function that will help debug of SlpMessages.
masca@cpw.pidgin.im
parents: 30828
diff changeset
312 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: 30828
diff changeset
313 }