libpurple/protocols/msn/slpmsg.c

Wed, 15 Dec 2010 23:10:13 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 15 Dec 2010 23:10:13 +0000
changeset 31240
db0cb3d72bc9
parent 31180
3f527ea0d2ea
child 31247
57079aab03d0
permissions
-rw-r--r--

Use the unref functions everywhere, instead of destroy. I also removed
some unnecessary checks in the destroy functions, since it's already
OK from the unref.

9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
1 /**
31180
3f527ea0d2ea These new files are missing GPL headers. And fix a couple incorrect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31145
diff changeset
2 * @file slpmsg.c SLP Message functions
9193
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"
31025
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
29 #include "slpmsg_part.h"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
30 #include "slplink.h"
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 /**************************************************************************
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
33 * SLP Message
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
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
36 MsnSlpMessage *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
37 msn_slpmsg_new(MsnSlpLink *slplink)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
38 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
39 MsnSlpMessage *slpmsg;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
40
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
41 slpmsg = g_new0(MsnSlpMessage, 1);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
42
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
43 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
44 purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
45
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
46 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
47 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
48 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
49 slpmsg->slplink = NULL;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
50
31057
fa267600d725 Remove session_id from SlpMsg and use the one from the header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31038
diff changeset
51 slpmsg->header = g_new0(MsnP2PHeader, 1);
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
52 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
53
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
54 return slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
55 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
56
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
57 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
58 msn_slpmsg_destroy(MsnSlpMessage *slpmsg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
59 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
60 MsnSlpLink *slplink;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
61 GList *cur;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
62
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
63 g_return_if_fail(slpmsg != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
64
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
65 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
66 purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
67
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
68 slplink = slpmsg->slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
69
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
70 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
71
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
72 /* 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
73 * 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
74 if (slpmsg->img == NULL)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
75 g_free(slpmsg->buffer);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
76
31025
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
77 for (cur = slpmsg->parts; cur != NULL; cur = g_list_delete_link(cur, cur))
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
78 {
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
79 /* Something is pointing to this slpmsg, so we should remove that
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
80 * pointer to prevent a crash. */
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
81 /* Ex: a user goes offline and after that we receive an ACK */
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
82
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
83 MsnSlpMessagePart *part = cur->data;
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
84
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
85 part->ack_cb = NULL;
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
86 part->nak_cb = NULL;
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
87 part->ack_data = NULL;
31240
db0cb3d72bc9 Use the unref functions everywhere, instead of destroy. I also removed
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31180
diff changeset
88 msn_slpmsgpart_unref(part);
31025
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
89 }
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
90
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
91 slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg);
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
92
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
93 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
94 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
95
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
96 g_free(slpmsg);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
97 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
98
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
99 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
100 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
101 {
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
102 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
103
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
104 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
105
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
106 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
107 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
108
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
109 }
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
110
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
111 void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
112 msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
113 long long size)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
114 {
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
115 /* 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
116 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
117 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
118 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
119
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
120 if (body != NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
121 slpmsg->buffer = g_memdup(body, size);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
122 else
11164
4396374c0cd9 [gaim-migrate @ 13265]
Mark Doliner <markdoliner@pidgin.im>
parents: 10589
diff changeset
123 slpmsg->buffer = g_new0(guchar, size);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
124
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
125 slpmsg->size = size;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
126 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
127
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
128 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
129 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
130 {
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
131 /* 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
132 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
133 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
134 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
135
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
136 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
137 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
138 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
139 }
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
140
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
141
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
142 MsnSlpMessage *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
143 msn_slpmsg_sip_new(MsnSlpCall *slpcall, int cseq,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
144 const char *header, const char *branch,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
145 const char *content_type, const char *content)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
146 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
147 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
148 PurpleAccount *account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
149 MsnSlpMessage *slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
150 char *body;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
151 gsize body_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
152 gsize content_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
153
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
154 g_return_val_if_fail(slpcall != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
155 g_return_val_if_fail(header != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
156
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
157 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
158 account = slplink->session->account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
159
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
160 /* Let's remember that "content" should end with a 0x00 */
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 content_len = (content != NULL) ? strlen(content) + 1 : 0;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
163
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
164 body = g_strdup_printf(
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
165 "%s\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
166 "To: <msnmsgr:%s>\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
167 "From: <msnmsgr:%s>\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
168 "Via: MSNSLP/1.0/TLP ;branch={%s}\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
169 "CSeq: %d\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
170 "Call-ID: {%s}\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
171 "Max-Forwards: 0\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
172 "Content-Type: %s\r\n"
10112
3133c5f8eb10 [gaim-migrate @ 11145]
Nathan Walp <nwalp@pidgin.im>
parents: 9775
diff changeset
173 "Content-Length: %" G_GSIZE_FORMAT "\r\n"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
174 "\r\n",
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
175 header,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
176 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
177 purple_account_get_username(account),
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
178 branch,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
179 cseq,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
180 slpcall->id,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
181 content_type,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
182 content_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
183
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
184 body_len = strlen(body);
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 if (content_len > 0)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
187 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
188 body_len += content_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
189 body = g_realloc(body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
190 g_strlcat(body, content, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
191 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
192
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
193 slpmsg = msn_slpmsg_new(slplink);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
194 msn_slpmsg_set_body(slpmsg, body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
195
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
196 slpmsg->sip = TRUE;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
197 slpmsg->slpcall = slpcall;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
198
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
199 g_free(body);
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 return slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
202 }
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
203
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
204 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
205 {
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
206 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
207
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
208 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
209
31057
fa267600d725 Remove session_id from SlpMsg and use the one from the header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31038
diff changeset
210 slpmsg->header->session_id = header->session_id;
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
211 slpmsg->size = header->total_size;
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31069
diff changeset
212 slpmsg->header->flags = P2P_ACK;
31066
bd2a4bebc8cc Get rid of the ack_id field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31057
diff changeset
213 slpmsg->header->ack_id = header->id;
31068
c5939bca4252 Get rid of the ack_sub_id field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31067
diff changeset
214 slpmsg->header->ack_sub_id = header->ack_id;
31069
7ad474bbdfc6 Get rid of the ack_size field in the SlpMessage in favor of the one in the Header. And do nothing if the released SlpMessage is an ACK or a 100 (DC Handshake).
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31068
diff changeset
215 slpmsg->header->ack_size = header->total_size;
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
216 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
217
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
218 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
219 }
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
220
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
221 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
222 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
223 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
224
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
225 slpmsg = msn_slpmsg_new(NULL);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
226 slpmsg->slpcall = slpcall;
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31069
diff changeset
227 slpmsg->header->flags = P2P_MSN_OBJ_DATA;
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
228 slpmsg->info = "SLP DATA";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
229
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
230 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
231
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
232 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
233 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
234
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
235 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
236 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
237 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
238
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
239 slpmsg = msn_slpmsg_new(NULL);
31057
fa267600d725 Remove session_id from SlpMsg and use the one from the header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31038
diff changeset
240
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
241 slpmsg->slpcall = slpcall;
31057
fa267600d725 Remove session_id from SlpMsg and use the one from the header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31038
diff changeset
242 slpmsg->header->session_id = slpcall->session_id;
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
243 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
244 slpmsg->info = "SLP DATA PREP";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
245
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
246 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
247
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
248 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
249
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
250 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
251 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
252 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
253
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
254 slpmsg = msn_slpmsg_new(NULL);
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
255
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
256 slpmsg->slpcall = slpcall;
31072
55bfe976adfe Get rid of the Flags field in the SlpMessage in favor of the one in the Header.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31069
diff changeset
257 slpmsg->header->flags = P2P_FILE_DATA;
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
258 slpmsg->info = "SLP FILE";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
259 slpmsg->size = size;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
260
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
261 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
262 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
263
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
264 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
265 {
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
266 MsnP2PHeader *header;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
267 MsnP2PFooter *footer;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
268 char *base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
269 char *tmp;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
270 size_t siz;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
271
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
272 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
273 tmp = base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
274
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
275 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
276 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
277
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
278 siz = sizeof(MsnP2PHeader);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
279 /* Copy header */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
280 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
281 tmp += siz;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
282
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
283 /* Copy body */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
284 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
285 tmp += slpmsg->size;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
286
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
287 /* Copy footer */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
288 siz = sizeof(MsnP2PFooter);
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
289 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
290 tmp += siz;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
291
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
292 *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
293
31135
f256308961f6 Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31072
diff changeset
294 g_free(header);
f256308961f6 Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31072
diff changeset
295 g_free(footer);
f256308961f6 Fix some leaks. Header and footer are allocated, copied and not freed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31072
diff changeset
296
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
297 return base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
298 }
31038
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
299
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
300 void msn_slpmsg_show_readable(MsnSlpMessage *slpmsg)
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
301 {
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
302 GString *str;
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
303
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
304 str = g_string_new(NULL);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
305
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
306 g_string_append_printf(str, "Session ID: %u\r\n", slpmsg->header->session_id);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
307 g_string_append_printf(str, "ID: %u\r\n", slpmsg->header->id);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
308 g_string_append_printf(str, "Offset: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->offset);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
309 g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->total_size);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
310 g_string_append_printf(str, "Length: %u\r\n", slpmsg->header->length);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
311 g_string_append_printf(str, "Flags: 0x%x\r\n", slpmsg->header->flags);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
312 g_string_append_printf(str, "ACK ID: %u\r\n", slpmsg->header->ack_id);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
313 g_string_append_printf(str, "SUB ID: %u\r\n", slpmsg->header->ack_sub_id);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
314 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->ack_size);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
315
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
316 if (purple_debug_is_verbose() && slpmsg->buffer != NULL) {
31067
b3ad31e29569 Fix a warning caused because slpmsg->buffer is unsigned and the function spect a gchar pointer. I don't think this can harm in any way.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31066
diff changeset
317 g_string_append_len(str, (gchar*)slpmsg->buffer, slpmsg->size);
31038
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
318
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
319 if (slpmsg->buffer[slpmsg->size - 1] == '\0') {
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
320 str->len--;
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
321 g_string_append(str, " 0x00");
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
322 }
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
323 g_string_append(str, "\r\n");
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
324
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
325 }
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
326
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
327 g_string_append_printf(str, "Footer: %u\r\n", slpmsg->footer->value);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
328
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
329 purple_debug_info("msn", "SlpMessage %s:\n{%s}\n", slpmsg->info, str->str);
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
330 }

mercurial