Mercurial > pidgin
annotate libpurple/protocols/msn/slpmsg.c @ 30790:545fa069c531
The creation of SlpMessage must be done in its own module.
author | masca@cpw.pidgin.im |
---|---|
date | Thu, 10 Jun 2010 22:40:44 +0000 |
parents | 2c3d7104ef1e |
children | 64a6ce55aa63 |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2 * @file slpmsg.h SLP Message functions |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
15822 | 4 * purple |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * |
15822 | 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" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "slplink.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 |
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 * SLP Message |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 **************************************************************************/ |
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 MsnSlpMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 msn_slpmsg_new(MsnSlpLink *slplink) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 MsnSlpMessage *slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 slpmsg = g_new0(MsnSlpMessage, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 |
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
|
42 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
|
43 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
|
44 |
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
|
45 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:
30788
diff
changeset
|
46 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
|
47 else |
30781
74e372b31486
Allow temporary SlpMessages so we can get slp specific code from MsnMessage.
masca@cpw.pidgin.im
parents:
30780
diff
changeset
|
48 slpmsg->slplink = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 |
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
|
50 slpmsg->header = 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:
30758
diff
changeset
|
51 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:
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 |
30783
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
56 MsnSlpMessage *msn_slpmsg_new_from_data(const char *data, size_t data_len) |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
57 { |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
58 MsnSlpMessage *slpmsg; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
59 MsnP2PHeader *header; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
60 const char *tmp; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
61 int body_len; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
62 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
63 tmp = data; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
64 slpmsg = msn_slpmsg_new(NULL); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
65 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
66 if (data_len < sizeof(*header)) { |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
67 return NULL; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
68 } |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
69 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
70 /* Extract the binary SLP header */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
71 slpmsg->header = msn_p2p_header_from_wire((MsnP2PHeader*)tmp); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
72 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
73 /* Extract the body */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
74 body_len = data_len - (tmp - data); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
75 /* msg->body_len = msg->msnslp_header.length; */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
76 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
77 if (body_len > 0) { |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
78 slpmsg->size = body_len; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
79 slpmsg->buffer = g_malloc(body_len); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
80 memcpy(slpmsg->buffer, tmp, body_len); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
81 tmp += body_len; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
82 } |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
83 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
84 /* Extract the footer */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
85 if (body_len >= 0) |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
86 slpmsg->footer = msn_p2p_footer_from_wire((MsnP2PFooter*)tmp); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
87 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
88 return slpmsg; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
89 } |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
90 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 msn_slpmsg_destroy(MsnSlpMessage *slpmsg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 MsnSlpLink *slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
95 GList *cur; |
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 g_return_if_fail(slpmsg != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 |
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
|
99 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
|
100 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
|
101 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
102 slplink = slpmsg->slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 |
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
|
104 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
|
105 |
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
|
106 /* 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
|
107 * 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
|
108 if (slpmsg->img == NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 g_free(slpmsg->buffer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 |
30089
287fc4ac2bd9
Add and remove an extra ref per MsnMessage when saving it in a slpmsg, to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28693
diff
changeset
|
111 for (cur = slpmsg->msgs; cur != NULL; cur = g_list_delete_link(cur, cur)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 /* Something is pointing to this slpmsg, so we should remove that |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 * pointer to prevent a crash. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
115 /* Ex: a user goes offline and after that we receive an ACK */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 MsnMessage *msg = cur->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 msg->ack_cb = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 msg->nak_cb = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 msg->ack_data = NULL; |
30089
287fc4ac2bd9
Add and remove an extra ref per MsnMessage when saving it in a slpmsg, to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28693
diff
changeset
|
122 msn_message_unref(msg); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 } |
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 slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 |
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
|
127 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:
30758
diff
changeset
|
128 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:
30758
diff
changeset
|
129 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 g_free(slpmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 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
|
134 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
|
135 { |
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
|
136 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
|
137 |
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
|
138 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
|
139 |
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
|
140 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
|
141 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
|
142 |
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
|
143 } |
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
|
144 |
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
|
145 void |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 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
|
147 long long size) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 { |
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
|
149 /* 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
|
150 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
|
151 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
|
152 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
|
153 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 if (body != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 slpmsg->buffer = g_memdup(body, size); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 slpmsg->buffer = g_new0(guchar, size); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 slpmsg->size = size; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 } |
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 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
|
163 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
|
164 { |
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
|
165 /* 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
|
166 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
|
167 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
|
168 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
|
169 |
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
|
170 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
|
171 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
|
172 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
|
173 } |
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
|
174 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 msn_slpmsg_show(MsnMessage *msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 const char *info; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 gboolean text; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 guint32 flags; |
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 text = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
183 |
30784
320c0852b5cc
Drop slp header and footer from MsnMessage in favor of MsnSlpMessage->header and footer.
masca@cpw.pidgin.im
parents:
30783
diff
changeset
|
184 flags = GUINT32_TO_LE(msg->slpmsg->header->flags); |
15373
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 switch (flags) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 { |
30788 | 188 case P2P_NO_FLAG : |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
189 info = "SLP CONTROL"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 text = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
191 break; |
30788 | 192 case P2P_ACK: |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 info = "SLP ACK"; break; |
30788 | 194 case P2P_MSN_OBJ_DATA: |
195 case P2P_FILE_DATA: | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 info = "SLP DATA"; break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 default: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 info = "SLP UNKNOWN"; break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 } |
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 msn_message_show_readable(msg, info, text); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
204 MsnSlpMessage * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 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
|
206 const char *header, const char *branch, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
207 const char *content_type, const char *content) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 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
|
210 PurpleAccount *account; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
211 MsnSlpMessage *slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 char *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
213 gsize body_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 gsize content_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
215 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 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
|
217 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
|
218 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
219 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
|
220 account = slplink->session->account; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 /* 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
|
223 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 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
|
225 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
226 body = g_strdup_printf( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 "%s\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 "To: <msnmsgr:%s>\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
229 "From: <msnmsgr:%s>\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
230 "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
|
231 "CSeq: %d\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
232 "Call-ID: {%s}\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 "Max-Forwards: 0\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 "Content-Type: %s\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 "Content-Length: %" G_GSIZE_FORMAT "\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 "\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
237 header, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 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
|
239 purple_account_get_username(account), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
240 branch, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
241 cseq, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
242 slpcall->id, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
243 content_type, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
244 content_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 body_len = strlen(body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 if (content_len > 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
249 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
250 body_len += content_len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 body = g_realloc(body, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
252 g_strlcat(body, content, body_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
253 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
254 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 slpmsg = msn_slpmsg_new(slplink); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 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
|
257 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 slpmsg->sip = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
259 slpmsg->slpcall = slpcall; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
260 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
261 g_free(body); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
262 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
263 return slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 } |
30783
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
265 |
30790
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
266 MsnSlpMessage *msn_slpmsg_new_ack(MsnP2PHeader *header) |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
267 { |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
268 MsnSlpMessage *slpmsg; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
269 |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
270 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
|
271 |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
272 slpmsg->session_id = header->session_id; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
273 slpmsg->size = header->total_size; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
274 slpmsg->flags = P2P_ACK; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
275 slpmsg->ack_id = header->id; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
276 slpmsg->ack_sub_id = header->ack_id; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
277 slpmsg->ack_size = header->total_size; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
278 slpmsg->info = "SLP ACK"; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
279 |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
280 return slpmsg; |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
281 } |
545fa069c531
The creation of SlpMessage must be done in its own module.
masca@cpw.pidgin.im
parents:
30789
diff
changeset
|
282 |
30783
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
283 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
|
284 { |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
285 MsnP2PHeader *header; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
286 MsnP2PFooter *footer; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
287 char *base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
288 char *tmp; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
289 size_t siz; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
290 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
291 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:
30781
diff
changeset
|
292 tmp = base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
293 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
294 header = msn_p2p_header_to_wire(slpmsg->header); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
295 footer = msn_p2p_footer_to_wire(slpmsg->footer); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
296 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
297 siz = sizeof(MsnP2PHeader); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
298 /* Copy header */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
299 memcpy(tmp, (char*)header, siz); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
300 tmp += siz; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
301 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
302 /* Copy body */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
303 memcpy(tmp, slpmsg->buffer, slpmsg->size); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
304 tmp += slpmsg->size; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
305 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
306 /* Copy footer */ |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
307 siz = sizeof(MsnP2PFooter); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
308 memcpy(tmp, (char*)footer, siz); |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
309 tmp += siz; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
310 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
311 *ret_size = tmp - base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
312 |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
313 return base; |
09f2a7d2ac99
Add SlpMessage parser and serializer functions to SlpMessage module.
masca@cpw.pidgin.im
parents:
30781
diff
changeset
|
314 } |