libpurple/protocols/msn/slpmsg.c

Mon, 10 Feb 2014 16:22:00 +0530

author
Ankit Vani <a@nevitus.org>
date
Mon, 10 Feb 2014 16:22:00 +0530
branch
soc.2013.gobjectification.plugins
changeset 37108
73c5fb6d78b3
parent 32438
dc8991868906
child 35827
c7c855c36c9b
permissions
-rw-r--r--

Merged default branch

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 *
31776
9fcc62c3330f Add the slpcall as a parameter when creating a slpmsg.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31771
diff changeset
37 msn_slpmsg_new(MsnSlpLink *slplink, MsnSlpCall *slpcall)
9193
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;
31781
e847bafa5e00 Get the P2P version based on the user. Still hard-coded as v1 though.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31780
diff changeset
40 MsnP2PVersion p2p;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
41
31789
4a942d622726 Let's not fool anyone here. The slplink is never NULL.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31781
diff changeset
42 g_return_val_if_fail(slplink != NULL, NULL);
4a942d622726 Let's not fool anyone here. The slplink is never NULL.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31781
diff changeset
43
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
44 slpmsg = g_new0(MsnSlpMessage, 1);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
45
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
46 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
47 purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
48
31789
4a942d622726 Let's not fool anyone here. The slplink is never NULL.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31781
diff changeset
49 msn_slpmsg_set_slplink(slpmsg, slplink);
31776
9fcc62c3330f Add the slpcall as a parameter when creating a slpmsg.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31771
diff changeset
50 slpmsg->slpcall = slpcall;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
51
31790
fd6e676248f8 Getting the P2P version is probably the slplink's job, since it has
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31789
diff changeset
52 p2p = msn_slplink_get_p2p_version(slplink);
31781
e847bafa5e00 Get the P2P version based on the user. Still hard-coded as v1 though.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31780
diff changeset
53 slpmsg->p2p_info = msn_p2p_info_new(p2p);
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
54
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
55 return slpmsg;
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
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
58 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
59 msn_slpmsg_destroy(MsnSlpMessage *slpmsg)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
60 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
61 MsnSlpLink *slplink;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
62 GList *cur;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
63
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
64 g_return_if_fail(slpmsg != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
65
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
66 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
67 purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
68
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
69 slplink = slpmsg->slplink;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
70
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
71 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
72
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 /* 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
74 * 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
75 if (slpmsg->img == NULL)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
76 g_free(slpmsg->buffer);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
77
31025
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
78 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
79 {
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
80 /* 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
81 * pointer to prevent a crash. */
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
82 /* 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
83
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
84 MsnSlpMessagePart *part = cur->data;
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
85
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
86 part->ack_cb = NULL;
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
87 part->nak_cb = NULL;
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
88 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
89 msn_slpmsgpart_unref(part);
31025
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
17ce2e75854d Destroy Parts when the SlpMessage is destroyed.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31015
diff changeset
92 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
93
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
94 msn_p2p_info_free(slpmsg->p2p_info);
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
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 void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
111 msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
112 long long size)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
113 {
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
114 /* 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
115 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
116 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
117 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
118
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
119 if (body != NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
120 slpmsg->buffer = g_memdup(body, size);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
121 else
11164
4396374c0cd9 [gaim-migrate @ 13265]
Mark Doliner <markdoliner@pidgin.im>
parents: 10589
diff changeset
122 slpmsg->buffer = g_new0(guchar, size);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9193
diff changeset
123
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
124 slpmsg->size = size;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
125 }
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 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
128 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
129 {
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 /* 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
131 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
132 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
133 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
134
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 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
136 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
137 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
138 }
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
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
140
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
141 MsnSlpMessage *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
142 msn_slpmsg_sip_new(MsnSlpCall *slpcall, int cseq,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
143 const char *header, const char *branch,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
144 const char *content_type, const char *content)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
145 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
146 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
147 PurpleAccount *account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
148 MsnSlpMessage *slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
149 char *body;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
150 gsize body_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
151 gsize content_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
152
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
153 g_return_val_if_fail(slpcall != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
154 g_return_val_if_fail(header != NULL, NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
155
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
156 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
157 account = slplink->session->account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
158
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
159 /* Let's remember that "content" should end with a 0x00 */
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 content_len = (content != NULL) ? strlen(content) + 1 : 0;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
162
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
163 body = g_strdup_printf(
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
164 "%s\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
165 "To: <msnmsgr:%s>\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
166 "From: <msnmsgr:%s>\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
167 "Via: MSNSLP/1.0/TLP ;branch={%s}\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
168 "CSeq: %d\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
169 "Call-ID: {%s}\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
170 "Max-Forwards: 0\r\n"
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
171 "Content-Type: %s\r\n"
10112
3133c5f8eb10 [gaim-migrate @ 11145]
Nathan Walp <nwalp@pidgin.im>
parents: 9775
diff changeset
172 "Content-Length: %" G_GSIZE_FORMAT "\r\n"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
173 "\r\n",
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
174 header,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
175 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
176 purple_account_get_username(account),
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
177 branch,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
178 cseq,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
179 slpcall->id,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
180 content_type,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
181 content_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
182
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
183 body_len = strlen(body);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
184
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
185 if (content_len > 0)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
186 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
187 body_len += content_len;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
188 body = g_realloc(body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
189 g_strlcat(body, content, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
190 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
191
31776
9fcc62c3330f Add the slpcall as a parameter when creating a slpmsg.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31771
diff changeset
192 slpmsg = msn_slpmsg_new(slplink, slpcall);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
193 msn_slpmsg_set_body(slpmsg, body, body_len);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
194
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
195 g_free(body);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
196
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
197 return slpmsg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
diff changeset
198 }
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
199
31777
e97131c80037 Add the slplink as a parameter when creating a slpmsg ack.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31776
diff changeset
200 MsnSlpMessage *msn_slpmsg_ack_new(MsnSlpLink *slplink, MsnP2PInfo *ack_info)
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
201 {
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
202 MsnSlpMessage *slpmsg;
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
203 MsnP2PInfo *new_info;
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
204
31777
e97131c80037 Add the slplink as a parameter when creating a slpmsg ack.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31776
diff changeset
205 slpmsg = msn_slpmsg_new(slplink, NULL);
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
206
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
207 new_info = slpmsg->p2p_info;
31771
26e1c519295f Add P2Pv2 ack'ing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31475
diff changeset
208 msn_p2p_info_create_ack(ack_info, new_info);
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
209 slpmsg->size = msn_p2p_info_get_total_size(ack_info);
30992
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
210 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
211
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
212 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
213 }
4f9b40ce1521 The creation of SlpMessage must be done in its own module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30991
diff changeset
214
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
215 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
216 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
217 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
218
31780
2a58c374de33 Get the slplink from the slpcall as needed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31777
diff changeset
219 slpmsg = msn_slpmsg_new(slpcall->slplink, slpcall);
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
220 msn_p2p_info_set_flags(slpmsg->p2p_info, P2P_MSN_OBJ_DATA);
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
221 slpmsg->info = "SLP DATA";
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 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
224
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
225 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
226 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
227
30994
7dea76174d5c Use better function names.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30993
diff changeset
228 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
229 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
230 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
231
31780
2a58c374de33 Get the slplink from the slpcall as needed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31777
diff changeset
232 slpmsg = msn_slpmsg_new(slpcall->slplink, 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
233
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
234 msn_p2p_info_set_session_id(slpmsg->p2p_info, slpcall->session_id);
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
235 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
236 slpmsg->info = "SLP DATA PREP";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
237
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
238 return slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
239
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
240 }
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
241
32438
dc8991868906 A boring and large patch so I can merge heads.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31790
diff changeset
242 MsnSlpMessage *msn_slpmsg_file_new(MsnSlpCall *slpcall, goffset size)
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
243 {
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
244 MsnSlpMessage *slpmsg;
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
245
31780
2a58c374de33 Get the slplink from the slpcall as needed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31777
diff changeset
246 slpmsg = msn_slpmsg_new(slpcall->slplink, slpcall);
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
247
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
248 msn_p2p_info_set_flags(slpmsg->p2p_info, P2P_FILE_DATA);
30993
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
249 slpmsg->info = "SLP FILE";
ba1b9cad314d Move more SlpMessage creation to its module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30992
diff changeset
250 slpmsg->size = size;
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 return 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
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
255 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
256 {
31247
57079aab03d0 Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31240
diff changeset
257 char *header;
57079aab03d0 Change SLP P2P functions to use the new buffer access functions
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31240
diff changeset
258 char *footer;
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
259 char *base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
260 char *tmp;
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
261 size_t header_size, footer_size;
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
262
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
263 header = msn_p2p_header_to_wire(slpmsg->p2p_info, &header_size);
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
264 footer = msn_p2p_footer_to_wire(slpmsg->p2p_info, &footer_size);
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
265
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
266 base = g_malloc(header_size + slpmsg->size + footer_size);
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
267 tmp = base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
268
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
269 /* Copy header */
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
270 memcpy(tmp, header, header_size);
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
271 tmp += header_size;
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
272
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
273 /* Copy body */
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
274 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
275 tmp += slpmsg->size;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
276
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
277 /* Copy footer */
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
278 memcpy(tmp, footer, footer_size);
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
279 tmp += footer_size;
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
280
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
281 *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
282
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
283 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
284 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
285
30985
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
286 return base;
c6a552dc0f12 Add SlpMessage parser and serializer functions to SlpMessage module.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30983
diff changeset
287 }
31038
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
288
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
289 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
290 {
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
291 GString *str;
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
292
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
293 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
294
31367
743e9d0967aa Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31358
diff changeset
295 msn_p2p_info_to_string(slpmsg->p2p_info, str);
31038
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
296
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
297 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
298 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
299
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
300 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
301 str->len--;
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
302 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
303 }
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
304 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
305
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
306 }
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
307
8e85fd9fdddb Add a function that will help debug of SlpMessages.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31030
diff changeset
308 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
309 }

mercurial