libpurple/protocols/msn/slpmsg.c

Sat, 12 Jun 2010 21:38:32 +0000

author
Jorge Villaseñor <masca@cpw.pidgin.im>
date
Sat, 12 Jun 2010 21:38:32 +0000
branch
soc.2010.msn-tlc
changeset 30994
7dea76174d5c
parent 30993
ba1b9cad314d
child 31015
1c2337029749
permissions
-rw-r--r--

Use better function names.

9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
1 /**
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
2 * @file slpmsg.h SLP Message functions
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
8 * source distribution.
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
9 *
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
13 * (at your option) any later version.
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
14 *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
18 * GNU General Public License for more details.
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
19 *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 16596
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
23 */
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30337
diff changeset
24
30961
885064b16c54 Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30945
diff changeset
25 #include "internal.h"
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30337
diff changeset
26 #include "debug.h"
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30337
diff changeset
27
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
28 #include "slpmsg.h"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
29 #include "slplink.h"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
30
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
31 /**************************************************************************
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
32 * SLP Message
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
33 **************************************************************************/
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
34
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
35 MsnSlpMessage *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
36 msn_slpmsg_new(MsnSlpLink *slplink)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
37 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
38 MsnSlpMessage *slpmsg;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
39
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
40 slpmsg = g_new0(MsnSlpMessage, 1);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
41
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24610
diff changeset
42 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24610
diff changeset
43 purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
44
30991
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
45 if (slplink)
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
46 msn_slpmsg_set_slplink(slpmsg, slplink);
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
47 else
30983
50dc8dfb51b2 Allow temporary SlpMessages so we can get slp specific code from MsnMessage.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30982
diff changeset
48 slpmsg->slplink = NULL;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
49
30982
07f38d5c0887 This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
50 slpmsg->header = NULL;
07f38d5c0887 This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
51 slpmsg->footer = NULL;
07f38d5c0887 This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
52
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
53 return slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
54 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
55
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
56 MsnSlpMessage *msn_slpmsg_new_from_data(const char *data, size_t data_len)
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
57 {
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
58 MsnSlpMessage *slpmsg;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
59 MsnP2PHeader *header;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
60 const char *tmp;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
61 int body_len;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
62
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
63 tmp = data;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
64 slpmsg = msn_slpmsg_new(NULL);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
65
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
66 if (data_len < sizeof(*header)) {
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
67 return NULL;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
68 }
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
69
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
70 /* Extract the binary SLP header */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
71 slpmsg->header = msn_p2p_header_from_wire((MsnP2PHeader*)tmp);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
72
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
73 /* Extract the body */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
74 body_len = data_len - (tmp - data);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
75 /* msg->body_len = msg->msnslp_header.length; */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
76
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
77 if (body_len > 0) {
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
78 slpmsg->size = body_len;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
79 slpmsg->buffer = g_malloc(body_len);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
80 memcpy(slpmsg->buffer, tmp, body_len);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
81 tmp += body_len;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
82 }
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
83
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
84 /* Extract the footer */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
85 if (body_len >= 0)
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
86 slpmsg->footer = msn_p2p_footer_from_wire((MsnP2PFooter*)tmp);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
87
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
88 return slpmsg;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
89 }
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
90
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
91 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
92 msn_slpmsg_destroy(MsnSlpMessage *slpmsg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
93 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
94 MsnSlpLink *slplink;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
95 GList *cur;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
96
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
97 g_return_if_fail(slpmsg != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
98
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24610
diff changeset
99 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24610
diff changeset
100 purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
101
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
102 slplink = slpmsg->slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
103
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
104 purple_imgstore_unref(slpmsg->img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
105
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
106 /* We don't want to free the data of the PurpleStoredImage,
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
107 * but to avoid code duplication, it's sharing buffer. */
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
108 if (slpmsg->img == NULL)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
109 g_free(slpmsg->buffer);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
110
30337
5ba7a3bba0a6 Add and remove an extra ref per MsnMessage when saving it in a slpmsg, to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29010
diff changeset
111 for (cur = slpmsg->msgs; cur != NULL; cur = g_list_delete_link(cur, cur))
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
112 {
10306
c2ad3e682684 [gaim-migrate @ 11492]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
113 /* Something is pointing to this slpmsg, so we should remove that
c2ad3e682684 [gaim-migrate @ 11492]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
114 * pointer to prevent a crash. */
c2ad3e682684 [gaim-migrate @ 11492]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
115 /* Ex: a user goes offline and after that we receive an ACK */
c2ad3e682684 [gaim-migrate @ 11492]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
116
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
117 MsnMessage *msg = cur->data;
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10225
diff changeset
118
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
119 msg->ack_cb = NULL;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
120 msg->nak_cb = NULL;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
121 msg->ack_data = NULL;
30337
5ba7a3bba0a6 Add and remove an extra ref per MsnMessage when saving it in a slpmsg, to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29010
diff changeset
122 msn_message_unref(msg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
123 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
124
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
125 slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
126
30982
07f38d5c0887 This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
127 g_free(slpmsg->header);
07f38d5c0887 This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
128 g_free(slpmsg->footer);
07f38d5c0887 This bits belong to SlpMessage, lets handle here, also I think it's easier to manage this bits being a pointer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
129
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
130 g_free(slpmsg);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
131 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
132
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
133 void
30991
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
134 msn_slpmsg_set_slplink(MsnSlpMessage *slpmsg, MsnSlpLink *slplink)
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
135 {
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
136 g_return_if_fail(slplink != NULL);
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
137
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
138 slpmsg->slplink = slplink;
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
139
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
140 slplink->slp_msgs =
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
141 g_list_append(slplink->slp_msgs, slpmsg);
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
142
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
143 }
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
144
4277a3521dce Since we can create a SlpMessage without a SlpLink, add a function to relate them post-creation.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30990
diff changeset
145 void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
146 msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
147 long long size)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
148 {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
149 /* We can only have one data source at a time. */
16596
92be5d0abd43 Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@pidgin.im>
parents: 16538
diff changeset
150 g_return_if_fail(slpmsg->buffer == NULL);
92be5d0abd43 Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@pidgin.im>
parents: 16538
diff changeset
151 g_return_if_fail(slpmsg->img == NULL);
29010
2ddb58c7f71e Get rid of slpmsg->fp since the core is handling all the partial reads and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27691
diff changeset
152 g_return_if_fail(slpmsg->ft == FALSE);
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
153
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
154 if (body != NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
155 slpmsg->buffer = g_memdup(body, size);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
156 else
11164
4396374c0cd9 [gaim-migrate @ 13265]
Mark Doliner <markdoliner@pidgin.im>
parents: 10589
diff changeset
157 slpmsg->buffer = g_new0(guchar, size);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
158
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
159 slpmsg->size = size;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
160 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
161
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
162 void
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
163 msn_slpmsg_set_image(MsnSlpMessage *slpmsg, PurpleStoredImage *img)
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
164 {
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
165 /* We can only have one data source at a time. */
16596
92be5d0abd43 Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@pidgin.im>
parents: 16538
diff changeset
166 g_return_if_fail(slpmsg->buffer == NULL);
92be5d0abd43 Fix the g_return_if_fail() guards that prevent setting more than one data
Richard Laager <rlaager@pidgin.im>
parents: 16538
diff changeset
167 g_return_if_fail(slpmsg->img == NULL);
29010
2ddb58c7f71e Get rid of slpmsg->fp since the core is handling all the partial reads and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27691
diff changeset
168 g_return_if_fail(slpmsg->ft == FALSE);
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
169
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
170 slpmsg->img = purple_imgstore_ref(img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
171 slpmsg->buffer = (guchar *)purple_imgstore_get_data(img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
172 slpmsg->size = purple_imgstore_get_size(img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
173 }
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
174
11321
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11164
diff changeset
175 void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
176 msn_slpmsg_show(MsnMessage *msg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
177 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
178 const char *info;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
179 gboolean text;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
180 guint32 flags;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
181
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
182 text = FALSE;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
183
30986
5e30592f85e5 Drop slp header and footer from MsnMessage in favor of MsnSlpMessage->header and footer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30985
diff changeset
184 flags = GUINT32_TO_LE(msg->slpmsg->header->flags);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
185
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
186 switch (flags)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
187 {
30990
0acf7d556bd0 Avoid magic numbers.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30986
diff changeset
188 case P2P_NO_FLAG :
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
189 info = "SLP CONTROL";
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
190 text = TRUE;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
191 break;
30990
0acf7d556bd0 Avoid magic numbers.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30986
diff changeset
192 case P2P_ACK:
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
193 info = "SLP ACK"; break;
30990
0acf7d556bd0 Avoid magic numbers.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30986
diff changeset
194 case P2P_MSN_OBJ_DATA:
0acf7d556bd0 Avoid magic numbers.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30986
diff changeset
195 case P2P_FILE_DATA:
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
196 info = "SLP DATA"; break;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
197 default:
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
198 info = "SLP UNKNOWN"; break;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
199 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
200
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
201 msn_message_show_readable(msg, info, text);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
202 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
203
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
204 MsnSlpMessage *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
205 msn_slpmsg_sip_new(MsnSlpCall *slpcall, int cseq,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
206 const char *header, const char *branch,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
207 const char *content_type, const char *content)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
208 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
209 MsnSlpLink *slplink;
24610
fcde2a7d204b Get rid of slplink->local_user because it's a copy of
Mark Doliner <markdoliner@pidgin.im>
parents: 23990
diff changeset
210 PurpleAccount *account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
211 MsnSlpMessage *slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
212 char *body;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
213 gsize body_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
214 gsize content_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
215
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
216 g_return_val_if_fail(slpcall != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
217 g_return_val_if_fail(header != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
218
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
219 slplink = slpcall->slplink;
24610
fcde2a7d204b Get rid of slplink->local_user because it's a copy of
Mark Doliner <markdoliner@pidgin.im>
parents: 23990
diff changeset
220 account = slplink->session->account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
221
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
222 /* Let's remember that "content" should end with a 0x00 */
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
223
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
224 content_len = (content != NULL) ? strlen(content) + 1 : 0;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
225
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
226 body = g_strdup_printf(
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
227 "%s\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
228 "To: <msnmsgr:%s>\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
229 "From: <msnmsgr:%s>\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
230 "Via: MSNSLP/1.0/TLP ;branch={%s}\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
231 "CSeq: %d\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
232 "Call-ID: {%s}\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
233 "Max-Forwards: 0\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
234 "Content-Type: %s\r\n"
10112
3133c5f8eb10 [gaim-migrate @ 11145]
Nathan Walp <nwalp@pidgin.im>
parents: 9775
diff changeset
235 "Content-Length: %" G_GSIZE_FORMAT "\r\n"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
236 "\r\n",
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
237 header,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
238 slplink->remote_user,
24610
fcde2a7d204b Get rid of slplink->local_user because it's a copy of
Mark Doliner <markdoliner@pidgin.im>
parents: 23990
diff changeset
239 purple_account_get_username(account),
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
240 branch,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
241 cseq,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
242 slpcall->id,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
243 content_type,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
244 content_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
245
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
246 body_len = strlen(body);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
247
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
248 if (content_len > 0)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
249 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
250 body_len += content_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
251 body = g_realloc(body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
252 g_strlcat(body, content, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
253 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
254
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
255 slpmsg = msn_slpmsg_new(slplink);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
256 msn_slpmsg_set_body(slpmsg, body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
257
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
258 slpmsg->sip = TRUE;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
259 slpmsg->slpcall = slpcall;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
260
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
261 g_free(body);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
262
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
263 return slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
264 }
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
265
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
266 MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PHeader *header)
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
267 {
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
268 MsnSlpMessage *slpmsg;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
269
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
270 slpmsg = msn_slpmsg_new(NULL);
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
271
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
272 slpmsg->session_id = header->session_id;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
273 slpmsg->size = header->total_size;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
274 slpmsg->flags = P2P_ACK;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
275 slpmsg->ack_id = header->id;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
276 slpmsg->ack_sub_id = header->ack_id;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
277 slpmsg->ack_size = header->total_size;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
278 slpmsg->info = "SLP ACK";
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
279
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
280 return slpmsg;
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
281 }
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
282
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
283 MsnSlpMessage *msn_slpmsg_obj_new(MsnSlpCall *slpcall, PurpleStoredImage *img)
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
284 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
285 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
286
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
287 slpmsg = msn_slpmsg_new(NULL);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
288 slpmsg->slpcall = slpcall;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
289 slpmsg->flags = P2P_MSN_OBJ_DATA;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
290 slpmsg->info = "SLP DATA";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
291
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
292 msn_slpmsg_set_image(slpmsg, img);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
293
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
294 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
295 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
296
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
297 MsnSlpMessage *msn_slpmsg_dataprep_new(MsnSlpCall *slpcall)
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
298 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
299 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
300
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
301 slpmsg = msn_slpmsg_new(NULL);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
302 slpmsg->slpcall = slpcall;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
303 slpmsg->session_id = slpcall->session_id;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
304 msn_slpmsg_set_body(slpmsg, NULL, 4);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
305 slpmsg->info = "SLP DATA PREP";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
306
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
307 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
308
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
309 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
310
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
311 MsnSlpMessage *msn_slpmsg_file_new(MsnSlpCall *slpcall, size_t size)
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
312 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
313 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
314
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
315 slpmsg = msn_slpmsg_new(NULL);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
316
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
317 slpmsg->slpcall = slpcall;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
318 slpmsg->flags = P2P_FILE_DATA;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
319 slpmsg->info = "SLP FILE";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
320 slpmsg->size = size;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
321
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
322 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
323 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
324
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
325 char *msn_slpmsg_serialize(MsnSlpMessage *slpmsg, size_t *ret_size)
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
326 {
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
327 MsnP2PHeader *header;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
328 MsnP2PFooter *footer;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
329 char *base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
330 char *tmp;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
331 size_t siz;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
332
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
333 base = g_malloc(P2P_PACKET_HEADER_SIZE + slpmsg->size + sizeof(MsnP2PFooter));
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
334 tmp = base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
335
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
336 header = msn_p2p_header_to_wire(slpmsg->header);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
337 footer = msn_p2p_footer_to_wire(slpmsg->footer);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
338
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
339 siz = sizeof(MsnP2PHeader);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
340 /* Copy header */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
341 memcpy(tmp, (char*)header, siz);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
342 tmp += siz;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
343
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
344 /* Copy body */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
345 memcpy(tmp, slpmsg->buffer, slpmsg->size);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
346 tmp += slpmsg->size;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
347
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
348 /* Copy footer */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
349 siz = sizeof(MsnP2PFooter);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
350 memcpy(tmp, (char*)footer, siz);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
351 tmp += siz;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
352
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
353 *ret_size = tmp - base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
354
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
355 return base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
356 }

mercurial