Mercurial > pidgin.yaz
annotate libpurple/protocols/msn/slpcall.c @ 32194:462c19eb31d8
Remove duplicate calls to msn_slpmsg_set_slplink. This function is
already called when a slpmsg is created, and calling it again will
place the slpmsg on the slplink list an extra time. If the slpmsg is
freed, then the first entry is removed, but the second remains, and
can cause crashes due to invalid memory accesses.
Fixes #14307.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Thu, 14 Jul 2011 05:54:10 +0000 |
parents | eb1bbaae3427 |
children | 92711688c245 |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2 * @file slpcall.c SLP Call Functions |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
15823 | 4 * purple |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * |
15823 | 6 * Purple is the legal property of its developers, whose names are too numerous |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * source distribution. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
17137
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 */ |
31180
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
29466
diff
changeset
|
24 |
31196
230caecf5435
Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
masca@cpw.pidgin.im
parents:
31180
diff
changeset
|
25 #include "internal.h" |
31180
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
29466
diff
changeset
|
26 #include "debug.h" |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
27 #include "smiley.h" |
31180
a99b6dcdb60d
Remove unnecesary includes from msn.h.
masca@cpw.pidgin.im
parents:
29466
diff
changeset
|
28 |
19797
60bc06498746
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@hxbc.us>
parents:
15823
diff
changeset
|
29 #include "msnutils.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "slpcall.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 #include "slp.h" |
31200
e03f912141dd
Start moving p2p specific code to its own module.
masca@cpw.pidgin.im
parents:
31198
diff
changeset
|
33 #include "p2p.h" |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
34 #include "xfer.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 /************************************************************************** |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 * Main |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 **************************************************************************/ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 |
24337
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
40 static gboolean |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
41 msn_slpcall_timeout(gpointer data) |
24337
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
42 { |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
43 MsnSlpCall *slpcall; |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
44 |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
45 slpcall = data; |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
46 |
27509
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
47 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
48 purple_debug_info("msn", "slpcall_timeout: slpcall(%p)\n", slpcall); |
24337
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
49 |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
50 if (!slpcall->pending && !slpcall->progress) |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
51 { |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
52 msn_slpcall_destroy(slpcall); |
25169
14b927f45ec5
We just freed slpcall, so don't set slpcall->timer to 0. And return
Mark Doliner <mark@kingant.net>
parents:
25072
diff
changeset
|
53 return TRUE; |
24337
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
54 } |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
55 |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
56 slpcall->progress = FALSE; |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
57 |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
58 return TRUE; |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
59 } |
f0160066b58b
Make msn_slp_call_timeout static
Mark Doliner <mark@kingant.net>
parents:
23737
diff
changeset
|
60 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 MsnSlpCall * |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
62 msn_slpcall_new(MsnSlpLink *slplink) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
63 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 MsnSlpCall *slpcall; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 g_return_val_if_fail(slplink != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 slpcall = g_new0(MsnSlpCall, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 |
27509
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
70 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
71 purple_debug_info("msn", "slpcall_new: slpcall(%p)\n", slpcall); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
72 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
73 slpcall->slplink = slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 msn_slplink_add_slpcall(slplink, slpcall); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 |
24342
9bdaf273c0ff
Use purple_timeout_add_seconds() instead of purple_timeout_add() in a
Mark Doliner <mark@kingant.net>
parents:
24341
diff
changeset
|
77 slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 return slpcall; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 void |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
83 msn_slpcall_destroy(MsnSlpCall *slpcall) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 GList *e; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 |
27509
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
87 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
88 purple_debug_info("msn", "slpcall_destroy: slpcall(%p)\n", slpcall); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 g_return_if_fail(slpcall != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 if (slpcall->timer) |
15823 | 93 purple_timeout_remove(slpcall->timer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
95 for (e = slpcall->slplink->slp_msgs; e != NULL; ) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 MsnSlpMessage *slpmsg = e->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 e = e->next; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
99 |
27509
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
100 if (purple_debug_is_verbose()) |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
101 purple_debug_info("msn", "slpcall_destroy: trying slpmsg(%p)\n", |
35b6fd563056
Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27374
diff
changeset
|
102 slpmsg); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
104 if (slpmsg->slpcall == slpcall) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
106 msn_slpmsg_destroy(slpmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 if (slpcall->end_cb != NULL) |
24340
33697964e62b
There's no need for this variable anymore
Mark Doliner <mark@kingant.net>
parents:
24338
diff
changeset
|
111 slpcall->end_cb(slpcall, slpcall->slplink->session); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 |
23719
7b2fdeb078cd
take an extra reference to PurpleXfer so we can check whether the whole
Ka-Hing Cheung <khc@hxbc.us>
parents:
23671
diff
changeset
|
113 if (slpcall->xfer != NULL) { |
29073
59b0c556f787
A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <paul@darkrain42.org>
parents:
28431
diff
changeset
|
114 if (purple_xfer_get_type(slpcall->xfer) == PURPLE_XFER_RECEIVE) |
59b0c556f787
A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <paul@darkrain42.org>
parents:
28431
diff
changeset
|
115 g_byte_array_free(slpcall->u.incoming_data, TRUE); |
23719
7b2fdeb078cd
take an extra reference to PurpleXfer so we can check whether the whole
Ka-Hing Cheung <khc@hxbc.us>
parents:
23671
diff
changeset
|
116 slpcall->xfer->data = NULL; |
17137
8ed7b2d32ad1
slpcall now explicitlt references its xfer and unreferences it when it is destroyed. While it *looks* like this should *probably* have happened anyways due to the interactins between xfer_init, xfer_end, and xfer_cancel_remote, having the xfer's owner make this explicit makes the process less fragile and more obvious, and it may fix a crash as the slp is destroyed. Fixes #1070
Evan Schoenberg <evan.s@dreskin.net>
parents:
17136
diff
changeset
|
117 purple_xfer_unref(slpcall->xfer); |
23719
7b2fdeb078cd
take an extra reference to PurpleXfer so we can check whether the whole
Ka-Hing Cheung <khc@hxbc.us>
parents:
23671
diff
changeset
|
118 } |
17137
8ed7b2d32ad1
slpcall now explicitlt references its xfer and unreferences it when it is destroyed. While it *looks* like this should *probably* have happened anyways due to the interactins between xfer_init, xfer_end, and xfer_cancel_remote, having the xfer's owner make this explicit makes the process less fragile and more obvious, and it may fix a crash as the slp is destroyed. Fixes #1070
Evan Schoenberg <evan.s@dreskin.net>
parents:
17136
diff
changeset
|
119 |
29073
59b0c556f787
A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <paul@darkrain42.org>
parents:
28431
diff
changeset
|
120 |
24338
9b253ce969d0
msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <mark@kingant.net>
parents:
24337
diff
changeset
|
121 msn_slplink_remove_slpcall(slpcall->slplink, slpcall); |
9b253ce969d0
msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <mark@kingant.net>
parents:
24337
diff
changeset
|
122 |
23735
331effbd1cc8
Re-arrange msn_slplink_destroy and msn_slp_call_destroy. Might help
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23671
diff
changeset
|
123 g_free(slpcall->id); |
331effbd1cc8
Re-arrange msn_slplink_destroy and msn_slp_call_destroy. Might help
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23671
diff
changeset
|
124 g_free(slpcall->branch); |
331effbd1cc8
Re-arrange msn_slplink_destroy and msn_slp_call_destroy. Might help
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23671
diff
changeset
|
125 g_free(slpcall->data_info); |
331effbd1cc8
Re-arrange msn_slplink_destroy and msn_slp_call_destroy. Might help
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23671
diff
changeset
|
126 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 g_free(slpcall); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 void |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
131 msn_slpcall_init(MsnSlpCall *slpcall, MsnSlpCallType type) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 slpcall->session_id = rand() % 0xFFFFFF00 + 4; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 slpcall->id = rand_guid(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 slpcall->type = type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
136 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
137 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 void |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
139 msn_slpcall_session_init(MsnSlpCall *slpcall) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 if (slpcall->session_init_cb) |
23671
96e78c0fa32b
Get rid of MsnSlpSession entirely. It only seems to link to MsnSlpCall
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22808
diff
changeset
|
142 slpcall->session_init_cb(slpcall); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 slpcall->started = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 void |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
148 msn_slpcall_invite(MsnSlpCall *slpcall, const char *euf_guid, |
31282
7b1b7a4e0bb4
Documetn P2P Application ID in a enum and use it instead of 'magic numbers'.
masca@cpw.pidgin.im
parents:
31272
diff
changeset
|
149 MsnP2PAppId app_id, const char *context) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 MsnSlpLink *slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 MsnSlpMessage *slpmsg; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 char *header; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 char *content; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 g_return_if_fail(slpcall != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 g_return_if_fail(context != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 slplink = slpcall->slplink; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 slpcall->branch = rand_guid(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 content = g_strdup_printf( |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 "EUF-GUID: {%s}\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 "SessionID: %lu\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 "AppID: %d\r\n" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 "Context: %s\r\n\r\n", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 euf_guid, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 slpcall->session_id, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 app_id, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 context); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
172 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
173 header = g_strdup_printf("INVITE MSNMSGR:%s MSNSLP/1.0", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 slplink->remote_user); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 slpmsg = msn_slpmsg_sip_new(slpcall, 0, header, slpcall->branch, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 "application/x-msnmsgr-sessionreqbody", content); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 slpmsg->info = "SLP INVITE"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 slpmsg->text_body = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 msn_slplink_send_slpmsg(slplink, slpmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
183 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
184 g_free(header); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
185 g_free(content); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 void |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
189 msn_slpcall_close(MsnSlpCall *slpcall) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
191 g_return_if_fail(slpcall != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
192 g_return_if_fail(slpcall->slplink != NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 send_bye(slpcall, "application/x-msnmsgr-sessionclosebody"); |
24344
bceefbae1ca6
Reame msn_slplink_unleash to msn_slplink_send_queued_slpmsgs, which I
Mark Doliner <mark@kingant.net>
parents:
24342
diff
changeset
|
195 msn_slplink_send_queued_slpmsgs(slpcall->slplink); |
24341
b27908701f66
For some reason the slpmsg and slplink functions don't have underscores
Mark Doliner <mark@kingant.net>
parents:
24340
diff
changeset
|
196 msn_slpcall_destroy(slpcall); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
199 /***************************************************************************** |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
200 * Parse received SLP messages |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
201 ****************************************************************************/ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
202 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
203 /************************************************************************** |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
204 *** Util |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
205 **************************************************************************/ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
206 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
207 static char * |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
208 get_token(const char *str, const char *start, const char *end) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
209 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
210 const char *c, *c2; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
211 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
212 if ((c = strstr(str, start)) == NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
213 return NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
214 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
215 c += strlen(start); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
216 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
217 if (end != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
218 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
219 if ((c2 = strstr(c, end)) == NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
220 return NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
221 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
222 return g_strndup(c, c2 - c); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
223 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
224 else |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
225 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
226 /* This has to be changed */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
227 return g_strdup(c); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
228 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
229 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
230 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
231 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
232 /* XXX: this could be improved if we tracked custom smileys |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
233 * per-protocol, per-account, per-session or (ideally) per-conversation |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
234 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
235 static PurpleStoredImage * |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
236 find_valid_emoticon(PurpleAccount *account, const char *path) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
237 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
238 GList *smileys; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
239 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
240 if (!purple_account_get_bool(account, "custom_smileys", TRUE)) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
241 return NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
242 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
243 smileys = purple_smileys_get_all(); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
244 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
245 for (; smileys; smileys = g_list_delete_link(smileys, smileys)) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
246 PurpleSmiley *smiley; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
247 PurpleStoredImage *img; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
248 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
249 smiley = smileys->data; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
250 img = purple_smiley_get_stored_image(smiley); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
251 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
252 if (purple_strequal(path, purple_imgstore_get_filename(img))) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
253 g_list_free(smileys); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
254 return img; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
255 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
256 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
257 purple_imgstore_unref(img); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
258 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
259 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
260 purple_debug_error("msn", "Received illegal request for file %s\n", path); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
261 return NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
262 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
263 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
264 static char * |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
265 parse_dc_nonce(const char *content, MsnDirectConnNonceType *ntype) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
266 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
267 char *nonce; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
268 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
269 *ntype = DC_NONCE_UNKNOWN; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
270 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
271 nonce = get_token(content, "Hashed-Nonce: {", "}\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
272 if (nonce) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
273 *ntype = DC_NONCE_SHA1; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
274 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
275 guint32 n1, n6; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
276 guint16 n2, n3, n4, n5; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
277 nonce = get_token(content, "Nonce: {", "}\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
278 if (nonce |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
279 && sscanf(nonce, "%08x-%04hx-%04hx-%04hx-%04hx%08x", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
280 &n1, &n2, &n3, &n4, &n5, &n6) == 6) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
281 *ntype = DC_NONCE_PLAIN; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
282 g_free(nonce); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
283 nonce = g_malloc(16); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
284 *(guint32 *)(nonce + 0) = GUINT32_TO_LE(n1); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
285 *(guint16 *)(nonce + 4) = GUINT16_TO_LE(n2); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
286 *(guint16 *)(nonce + 6) = GUINT16_TO_LE(n3); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
287 *(guint16 *)(nonce + 8) = GUINT16_TO_BE(n4); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
288 *(guint16 *)(nonce + 10) = GUINT16_TO_BE(n5); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
289 *(guint32 *)(nonce + 12) = GUINT32_TO_BE(n6); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
290 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
291 /* Invalid nonce, so ignore request */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
292 g_free(nonce); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
293 nonce = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
294 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
295 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
296 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
297 return nonce; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
298 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
299 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
300 static void |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
301 msn_slp_process_transresp(MsnSlpCall *slpcall, const char *content) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
302 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
303 /* A direct connection negotiation response */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
304 char *bridge; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
305 char *nonce; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
306 char *listening; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
307 MsnDirectConn *dc = slpcall->slplink->dc; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
308 MsnDirectConnNonceType ntype; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
309 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
310 purple_debug_info("msn", "process_transresp\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
311 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
312 /* Direct connections are disabled. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
313 if (!purple_account_get_bool(slpcall->slplink->session->account, "direct_connect", TRUE)) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
314 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
315 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
316 g_return_if_fail(dc != NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
317 g_return_if_fail(dc->state == DC_STATE_CLOSED); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
318 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
319 bridge = get_token(content, "Bridge: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
320 nonce = parse_dc_nonce(content, &ntype); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
321 listening = get_token(content, "Listening: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
322 if (listening && bridge && !strcmp(bridge, "TCPv1")) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
323 /* Ok, the client supports direct TCP connection */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
324 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
325 /* We always need this. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
326 if (ntype == DC_NONCE_SHA1) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
327 strncpy(dc->remote_nonce, nonce, 36); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
328 dc->remote_nonce[36] = '\0'; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
329 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
330 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
331 if (!strcasecmp(listening, "false")) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
332 if (dc->listen_data != NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
333 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
334 * We'll listen for incoming connections but |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
335 * the listening socket isn't ready yet so we cannot |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
336 * send the INVITE packet now. Put the slpcall into waiting mode |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
337 * and let the callback send the invite. |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
338 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
339 slpcall->wait_for_socket = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
340 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
341 } else if (dc->listenfd != -1) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
342 /* The listening socket is ready. Send the INVITE here. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
343 msn_dc_send_invite(dc); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
344 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
345 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
346 /* We weren't able to create a listener either. Use SB. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
347 msn_dc_fallback_to_sb(dc); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
348 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
349 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
350 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
351 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
352 * We should connect to the client so parse |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
353 * IP/port from response. |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
354 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
355 char *ip, *port_str; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
356 int port = 0; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
357 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
358 if (ntype == DC_NONCE_PLAIN) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
359 /* Only needed for listening side. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
360 memcpy(dc->nonce, nonce, 16); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
361 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
362 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
363 /* Cancel any listen attempts because we don't need them. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
364 if (dc->listenfd_handle != 0) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
365 purple_input_remove(dc->listenfd_handle); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
366 dc->listenfd_handle = 0; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
367 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
368 if (dc->connect_timeout_handle != 0) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
369 purple_timeout_remove(dc->connect_timeout_handle); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
370 dc->connect_timeout_handle = 0; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
371 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
372 if (dc->listenfd != -1) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
373 purple_network_remove_port_mapping(dc->listenfd); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
374 close(dc->listenfd); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
375 dc->listenfd = -1; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
376 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
377 if (dc->listen_data != NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
378 purple_network_listen_cancel(dc->listen_data); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
379 dc->listen_data = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
380 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
381 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
382 /* Save external IP/port for later use. We'll try local connection first. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
383 dc->ext_ip = get_token(content, "IPv4External-Addrs: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
384 port_str = get_token(content, "IPv4External-Port: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
385 if (port_str) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
386 dc->ext_port = atoi(port_str); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
387 g_free(port_str); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
388 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
389 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
390 ip = get_token(content, "IPv4Internal-Addrs: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
391 port_str = get_token(content, "IPv4Internal-Port: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
392 if (port_str) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
393 port = atoi(port_str); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
394 g_free(port_str); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
395 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
396 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
397 if (ip && port) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
398 /* Try internal address first */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
399 dc->connect_data = purple_proxy_connect( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
400 NULL, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
401 slpcall->slplink->session->account, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
402 ip, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
403 port, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
404 msn_dc_connected_to_peer_cb, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
405 dc |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
406 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
407 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
408 if (dc->connect_data) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
409 /* Add connect timeout handle */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
410 dc->connect_timeout_handle = purple_timeout_add_seconds( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
411 DC_OUTGOING_TIMEOUT, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
412 msn_dc_outgoing_connection_timeout_cb, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
413 dc |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
414 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
415 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
416 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
417 * Connection failed |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
418 * Try external IP/port (if specified) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
419 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
420 msn_dc_outgoing_connection_timeout_cb(dc); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
421 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
422 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
423 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
424 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
425 * Omitted or invalid internal IP address / port |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
426 * Try external IP/port (if specified) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
427 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
428 msn_dc_outgoing_connection_timeout_cb(dc); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
429 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
430 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
431 g_free(ip); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
432 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
433 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
434 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
435 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
436 * Invalid direct connect invitation or |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
437 * TCP connection is not supported |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
438 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
439 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
440 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
441 g_free(listening); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
442 g_free(nonce); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
443 g_free(bridge); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
444 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
445 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
446 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
447 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
448 static void |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
449 got_sessionreq(MsnSlpCall *slpcall, const char *branch, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
450 const char *euf_guid, const char *context) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
451 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
452 gboolean accepted = FALSE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
453 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
454 if (!strcmp(euf_guid, MSN_OBJ_GUID)) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
455 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
456 /* Emoticon or UserDisplay */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
457 char *content; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
458 gsize len; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
459 MsnSlpLink *slplink; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
460 MsnSlpMessage *slpmsg; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
461 MsnObject *obj; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
462 char *msnobj_data; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
463 PurpleStoredImage *img = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
464 int type; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
465 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
466 /* Send Ok */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
467 content = g_strdup_printf("SessionID: %lu\r\n\r\n", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
468 slpcall->session_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
469 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
470 msn_slp_send_ok(slpcall, branch, "application/x-msnmsgr-sessionreqbody", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
471 content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
472 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
473 g_free(content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
474 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
475 slplink = slpcall->slplink; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
476 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
477 msnobj_data = (char *)purple_base64_decode(context, &len); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
478 obj = msn_object_new_from_string(msnobj_data); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
479 type = msn_object_get_type(obj); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
480 g_free(msnobj_data); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
481 if (type == MSN_OBJECT_EMOTICON) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
482 img = find_valid_emoticon(slplink->session->account, obj->location); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
483 } else if (type == MSN_OBJECT_USERTILE) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
484 img = msn_object_get_image(obj); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
485 if (img) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
486 purple_imgstore_ref(img); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
487 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
488 msn_object_destroy(obj); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
489 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
490 if (img != NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
491 /* DATA PREP */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
492 slpmsg = msn_slpmsg_dataprep_new(slpcall); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
493 msn_slplink_queue_slpmsg(slplink, slpmsg); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
494 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
495 /* DATA */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
496 slpmsg = msn_slpmsg_obj_new(slpcall, img); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
497 msn_slplink_queue_slpmsg(slplink, slpmsg); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
498 purple_imgstore_unref(img); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
499 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
500 accepted = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
501 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
502 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
503 purple_debug_error("msn", "Wrong object.\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
504 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
505 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
506 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
507 else if (!strcmp(euf_guid, MSN_FT_GUID)) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
508 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
509 /* File Transfer */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
510 PurpleAccount *account; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
511 PurpleXfer *xfer; |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
512 MsnFileContext *file_context; |
31493
b4064198e017
Add functions for reading and writing a MsnFileContext which negates
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31417
diff
changeset
|
513 char *buf; |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
514 gsize bin_len; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
515 guint32 file_size; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
516 char *file_name; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
517 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
518 account = slpcall->slplink->session->account; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
519 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
520 slpcall->end_cb = msn_xfer_end_cb; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
521 slpcall->branch = g_strdup(branch); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
522 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
523 slpcall->pending = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
524 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
525 xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
526 slpcall->slplink->remote_user); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
527 |
31493
b4064198e017
Add functions for reading and writing a MsnFileContext which negates
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31417
diff
changeset
|
528 buf = (char *)purple_base64_decode(context, &bin_len); |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
529 file_context = msn_file_context_from_wire(buf, bin_len); |
31493
b4064198e017
Add functions for reading and writing a MsnFileContext which negates
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31417
diff
changeset
|
530 |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
531 if (file_context != NULL) { |
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
532 file_size = file_context->file_size; |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
533 |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
534 file_name = g_convert((const gchar *)&file_context->file_name, |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
535 MAX_FILE_NAME_LEN * 2, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
536 "UTF-8", "UTF-16LE", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
537 NULL, NULL, NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
538 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
539 purple_xfer_set_filename(xfer, file_name ? file_name : ""); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
540 g_free(file_name); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
541 purple_xfer_set_size(xfer, file_size); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
542 purple_xfer_set_init_fnc(xfer, msn_xfer_init); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
543 purple_xfer_set_request_denied_fnc(xfer, msn_xfer_cancel); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
544 purple_xfer_set_cancel_recv_fnc(xfer, msn_xfer_cancel); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
545 purple_xfer_set_read_fnc(xfer, msn_xfer_read); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
546 purple_xfer_set_write_fnc(xfer, msn_xfer_write); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
547 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
548 slpcall->u.incoming_data = g_byte_array_new(); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
549 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
550 slpcall->xfer = xfer; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
551 purple_xfer_ref(slpcall->xfer); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
552 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
553 xfer->data = slpcall; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
554 |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
555 if (file_context->preview) { |
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
556 purple_xfer_set_thumbnail(xfer, file_context->preview, |
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
557 file_context->preview_len, |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
558 "image/png"); |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
559 g_free(file_context->preview); |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
560 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
561 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
562 purple_xfer_request(xfer); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
563 } |
31566
9ccbd0302bb2
Change MsnFileContext variables from "header" to "context". This it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31565
diff
changeset
|
564 g_free(file_context); |
31493
b4064198e017
Add functions for reading and writing a MsnFileContext which negates
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31417
diff
changeset
|
565 g_free(buf); |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
566 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
567 accepted = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
568 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
569 } else if (!strcmp(euf_guid, MSN_CAM_REQUEST_GUID)) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
570 purple_debug_info("msn", "Cam request.\n"); |
31348
b09ec659a9f5
slpcall is never NULL here.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31323
diff
changeset
|
571 if (slpcall->slplink && slpcall->slplink->session) { |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
572 PurpleConversation *conv; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
573 gchar *from = slpcall->slplink->remote_user; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
574 conv = purple_find_conversation_with_account( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
575 PURPLE_CONV_TYPE_IM, from, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
576 slpcall->slplink->session->account); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
577 if (conv) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
578 char *buf; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
579 buf = g_strdup_printf( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
580 _("%s requests to view your " |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
581 "webcam, but this request is " |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
582 "not yet supported."), from); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
583 purple_conversation_write(conv, NULL, buf, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
584 PURPLE_MESSAGE_SYSTEM | |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
585 PURPLE_MESSAGE_NOTIFY, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
586 time(NULL)); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
587 g_free(buf); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
588 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
589 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
590 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
591 } else if (!strcmp(euf_guid, MSN_CAM_GUID)) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
592 purple_debug_info("msn", "Cam invite.\n"); |
31348
b09ec659a9f5
slpcall is never NULL here.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31323
diff
changeset
|
593 if (slpcall->slplink && slpcall->slplink->session) { |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
594 PurpleConversation *conv; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
595 gchar *from = slpcall->slplink->remote_user; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
596 conv = purple_find_conversation_with_account( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
597 PURPLE_CONV_TYPE_IM, from, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
598 slpcall->slplink->session->account); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
599 if (conv) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
600 char *buf; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
601 buf = g_strdup_printf( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
602 _("%s invited you to view his/her webcam, but " |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
603 "this is not yet supported."), from); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
604 purple_conversation_write(conv, NULL, buf, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
605 PURPLE_MESSAGE_SYSTEM | |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
606 PURPLE_MESSAGE_NOTIFY, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
607 time(NULL)); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
608 g_free(buf); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
609 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
610 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
611 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
612 } else |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
613 purple_debug_warning("msn", "SLP SessionReq with unknown EUF-GUID: %s\n", euf_guid); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
614 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
615 if (!accepted) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
616 char *content = g_strdup_printf("SessionID: %lu\r\n\r\n", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
617 slpcall->session_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
618 msn_slp_send_decline(slpcall, branch, "application/x-msnmsgr-sessionreqbody", content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
619 g_free(content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
620 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
621 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
622 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
623 void |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
624 send_bye(MsnSlpCall *slpcall, const char *type) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
625 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
626 MsnSlpLink *slplink; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
627 PurpleAccount *account; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
628 MsnSlpMessage *slpmsg; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
629 char *header; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
630 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
631 slplink = slpcall->slplink; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
632 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
633 g_return_if_fail(slplink != NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
634 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
635 account = slplink->session->account; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
636 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
637 header = g_strdup_printf("BYE MSNMSGR:%s MSNSLP/1.0", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
638 purple_account_get_username(account)); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
639 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
640 slpmsg = msn_slpmsg_sip_new(slpcall, 0, header, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
641 "A0D624A6-6C0C-4283-A9E0-BC97B4B46D32", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
642 type, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
643 "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
644 g_free(header); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
645 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
646 slpmsg->info = "SLP BYE"; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
647 slpmsg->text_body = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
648 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
649 msn_slplink_queue_slpmsg(slplink, slpmsg); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
650 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
651 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
652 static void |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
653 got_invite(MsnSlpCall *slpcall, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
654 const char *branch, const char *type, const char *content) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
655 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
656 MsnSlpLink *slplink; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
657 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
658 slplink = slpcall->slplink; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
659 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
660 if (!strcmp(type, "application/x-msnmsgr-sessionreqbody")) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
661 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
662 char *euf_guid, *context; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
663 char *temp; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
664 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
665 euf_guid = get_token(content, "EUF-GUID: {", "}\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
666 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
667 temp = get_token(content, "SessionID: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
668 if (temp != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
669 slpcall->session_id = atoi(temp); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
670 g_free(temp); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
671 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
672 temp = get_token(content, "AppID: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
673 if (temp != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
674 slpcall->app_id = atoi(temp); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
675 g_free(temp); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
676 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
677 context = get_token(content, "Context: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
678 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
679 if (context != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
680 got_sessionreq(slpcall, branch, euf_guid, context); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
681 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
682 g_free(context); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
683 g_free(euf_guid); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
684 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
685 else if (!strcmp(type, "application/x-msnmsgr-transreqbody")) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
686 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
687 /* A direct connection negotiation request */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
688 char *bridges; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
689 char *nonce; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
690 MsnDirectConnNonceType ntype; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
691 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
692 purple_debug_info("msn", "got_invite: transreqbody received\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
693 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
694 /* Direct connections may be disabled. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
695 if (!purple_account_get_bool(slplink->session->account, "direct_connect", TRUE)) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
696 msn_slp_send_ok(slpcall, branch, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
697 "application/x-msnmsgr-transrespbody", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
698 "Bridge: TCPv1\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
699 "Listening: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
700 "Nonce: {00000000-0000-0000-0000-000000000000}\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
701 "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
702 msn_slpcall_session_init(slpcall); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
703 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
704 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
705 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
706 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
707 /* Don't do anything if we already have a direct connection */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
708 if (slplink->dc != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
709 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
710 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
711 bridges = get_token(content, "Bridges: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
712 nonce = parse_dc_nonce(content, &ntype); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
713 if (bridges && strstr(bridges, "TCPv1") != NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
714 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
715 * Ok, the client supports direct TCP connection |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
716 * Try to create a listening port |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
717 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
718 MsnDirectConn *dc; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
719 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
720 dc = msn_dc_new(slpcall); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
721 if (ntype == DC_NONCE_PLAIN) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
722 /* There is only one nonce for plain auth. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
723 dc->nonce_type = ntype; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
724 memcpy(dc->nonce, nonce, 16); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
725 } else if (ntype == DC_NONCE_SHA1) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
726 /* Each side has a nonce in SHA1 auth. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
727 dc->nonce_type = ntype; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
728 strncpy(dc->remote_nonce, nonce, 36); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
729 dc->remote_nonce[36] = '\0'; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
730 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
731 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
732 dc->listen_data = purple_network_listen_range( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
733 0, 0, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
734 SOCK_STREAM, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
735 msn_dc_listen_socket_created_cb, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
736 dc |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
737 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
738 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
739 if (dc->listen_data == NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
740 /* Listen socket creation failed */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
741 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
742 purple_debug_info("msn", "got_invite: listening failed\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
743 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
744 if (dc->nonce_type != DC_NONCE_PLAIN) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
745 msn_slp_send_ok(slpcall, branch, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
746 "application/x-msnmsgr-transrespbody", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
747 "Bridge: TCPv1\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
748 "Listening: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
749 "Hashed-Nonce: {00000000-0000-0000-0000-000000000000}\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
750 "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
751 else |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
752 msn_slp_send_ok(slpcall, branch, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
753 "application/x-msnmsgr-transrespbody", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
754 "Bridge: TCPv1\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
755 "Listening: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
756 "Nonce: {00000000-0000-0000-0000-000000000000}\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
757 "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
758 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
759 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
760 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
761 * Listen socket created successfully. |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
762 * Don't send anything here because we don't know the parameters |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
763 * of the created socket yet. msn_dc_send_ok will be called from |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
764 * the callback function: dc_listen_socket_created_cb |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
765 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
766 purple_debug_info("msn", "got_invite: listening socket created\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
767 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
768 dc->send_connection_info_msg_cb = msn_dc_send_ok; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
769 slpcall->wait_for_socket = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
770 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
771 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
772 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
773 /* |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
774 * Invalid direct connect invitation or |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
775 * TCP connection is not supported. |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
776 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
777 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
778 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
779 g_free(nonce); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
780 g_free(bridges); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
781 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
782 else if (!strcmp(type, "application/x-msnmsgr-transrespbody")) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
783 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
784 /* A direct connection negotiation response */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
785 msn_slp_process_transresp(slpcall, content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
786 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
787 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
788 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
789 static void |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
790 got_ok(MsnSlpCall *slpcall, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
791 const char *type, const char *content) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
792 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
793 g_return_if_fail(slpcall != NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
794 g_return_if_fail(type != NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
795 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
796 if (!strcmp(type, "application/x-msnmsgr-sessionreqbody")) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
797 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
798 char *content; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
799 char *header; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
800 char *nonce = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
801 MsnSession *session = slpcall->slplink->session; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
802 MsnSlpMessage *msg; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
803 MsnDirectConn *dc; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
804 MsnUser *user; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
805 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
806 if (!purple_account_get_bool(session->account, "direct_connect", TRUE)) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
807 /* Don't attempt a direct connection if disabled. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
808 msn_slpcall_session_init(slpcall); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
809 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
810 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
811 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
812 if (slpcall->slplink->dc != NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
813 /* If we already have an established direct connection |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
814 * then just start the transfer. |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
815 */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
816 msn_slpcall_session_init(slpcall); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
817 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
818 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
819 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
820 user = msn_userlist_find_user(session->userlist, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
821 slpcall->slplink->remote_user); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
822 if (!user || !(user->clientid & 0xF0000000)) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
823 /* Just start a normal SB transfer. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
824 msn_slpcall_session_init(slpcall); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
825 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
826 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
827 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
828 /* Try direct file transfer by sending a second INVITE */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
829 dc = msn_dc_new(slpcall); |
31376
2de522fa534a
Fix a lot more leaks, some old, some new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31348
diff
changeset
|
830 g_free(slpcall->branch); |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
831 slpcall->branch = rand_guid(); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
832 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
833 dc->listen_data = purple_network_listen_range( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
834 0, 0, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
835 SOCK_STREAM, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
836 msn_dc_listen_socket_created_cb, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
837 dc |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
838 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
839 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
840 header = g_strdup_printf( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
841 "INVITE MSNMSGR:%s MSNSLP/1.0", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
842 slpcall->slplink->remote_user |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
843 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
844 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
845 if (dc->nonce_type == DC_NONCE_SHA1) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
846 nonce = g_strdup_printf("Hashed-Nonce: {%s}\r\n", dc->nonce_hash); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
847 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
848 if (dc->listen_data == NULL) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
849 /* Listen socket creation failed */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
850 purple_debug_info("msn", "got_ok: listening failed\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
851 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
852 content = g_strdup_printf( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
853 "Bridges: TCPv1\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
854 "NetID: %u\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
855 "Conn-Type: IP-Restrict-NAT\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
856 "UPnPNat: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
857 "ICF: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
858 "%s" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
859 "\r\n", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
860 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
861 rand() % G_MAXUINT32, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
862 nonce ? nonce : "" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
863 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
864 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
865 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
866 /* Listen socket created successfully. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
867 purple_debug_info("msn", "got_ok: listening socket created\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
868 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
869 content = g_strdup_printf( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
870 "Bridges: TCPv1\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
871 "NetID: 0\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
872 "Conn-Type: Direct-Connect\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
873 "UPnPNat: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
874 "ICF: false\r\n" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
875 "%s" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
876 "\r\n", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
877 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
878 nonce ? nonce : "" |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
879 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
880 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
881 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
882 msg = msn_slpmsg_sip_new( |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
883 slpcall, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
884 0, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
885 header, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
886 slpcall->branch, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
887 "application/x-msnmsgr-transreqbody", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
888 content |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
889 ); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
890 msg->info = "DC INVITE"; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
891 msg->text_body = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
892 g_free(nonce); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
893 g_free(header); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
894 g_free(content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
895 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
896 msn_slplink_queue_slpmsg(slpcall->slplink, msg); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
897 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
898 else if (!strcmp(type, "application/x-msnmsgr-transreqbody")) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
899 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
900 /* Do we get this? */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
901 purple_debug_info("msn", "OK with transreqbody\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
902 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
903 else if (!strcmp(type, "application/x-msnmsgr-transrespbody")) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
904 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
905 msn_slp_process_transresp(slpcall, content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
906 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
907 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
908 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
909 static void |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
910 got_error(MsnSlpCall *slpcall, |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
911 const char *error, const char *type, const char *content) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
912 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
913 /* It's not valid. Kill this off. */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
914 purple_debug_error("msn", "Received non-OK result: %s\n", |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
915 error ? error : "Unknown"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
916 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
917 if (type && !strcmp(type, "application/x-msnmsgr-transreqbody")) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
918 MsnDirectConn *dc = slpcall->slplink->dc; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
919 if (dc) { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
920 msn_dc_fallback_to_sb(dc); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
921 return; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
922 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
923 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
924 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
925 slpcall->wasted = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
926 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
927 |
31272
25a8e3ad7e30
Remove this prototipe and make the function static since it is not exposed anymore.
masca@cpw.pidgin.im
parents:
31271
diff
changeset
|
928 static MsnSlpCall * |
31271
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
929 msn_slp_sip_recv(MsnSlpLink *slplink, const char *body) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
930 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
931 MsnSlpCall *slpcall; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
932 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
933 if (body == NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
934 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
935 purple_debug_warning("msn", "received bogus message\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
936 return NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
937 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
938 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
939 if (!strncmp(body, "INVITE", strlen("INVITE"))) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
940 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
941 /* This is an INVITE request */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
942 char *branch; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
943 char *call_id; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
944 char *content; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
945 char *content_type; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
946 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
947 /* From: <msnmsgr:buddy@hotmail.com> */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
948 #if 0 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
949 slpcall->remote_user = get_token(body, "From: <msnmsgr:", ">\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
950 #endif |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
951 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
952 branch = get_token(body, ";branch={", "}"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
953 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
954 call_id = get_token(body, "Call-ID: {", "}"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
955 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
956 #if 0 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
957 long content_len = -1; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
958 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
959 temp = get_token(body, "Content-Length: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
960 if (temp != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
961 content_len = atoi(temp); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
962 g_free(temp); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
963 #endif |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
964 content_type = get_token(body, "Content-Type: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
965 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
966 content = get_token(body, "\r\n\r\n", NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
967 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
968 slpcall = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
969 if (branch && call_id) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
970 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
971 slpcall = msn_slplink_find_slp_call(slplink, call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
972 if (slpcall) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
973 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
974 g_free(slpcall->branch); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
975 slpcall->branch = g_strdup(branch); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
976 got_invite(slpcall, branch, content_type, content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
977 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
978 else if (content_type && content) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
979 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
980 slpcall = msn_slpcall_new(slplink); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
981 slpcall->id = g_strdup(call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
982 got_invite(slpcall, branch, content_type, content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
983 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
984 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
985 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
986 g_free(call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
987 g_free(branch); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
988 g_free(content_type); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
989 g_free(content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
990 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
991 else if (!strncmp(body, "MSNSLP/1.0 ", strlen("MSNSLP/1.0 "))) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
992 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
993 /* This is a response */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
994 char *content; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
995 char *content_type; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
996 /* Make sure this is "OK" */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
997 const char *status = body + strlen("MSNSLP/1.0 "); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
998 char *call_id; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
999 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1000 call_id = get_token(body, "Call-ID: {", "}"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1001 slpcall = msn_slplink_find_slp_call(slplink, call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1002 g_free(call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1003 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1004 g_return_val_if_fail(slpcall != NULL, NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1005 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1006 content_type = get_token(body, "Content-Type: ", "\r\n"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1007 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1008 content = get_token(body, "\r\n\r\n", NULL); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1009 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1010 if (strncmp(status, "200 OK", 6)) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1011 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1012 char *error = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1013 const char *c; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1014 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1015 /* Eww */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1016 if ((c = strchr(status, '\r')) || (c = strchr(status, '\n')) || |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1017 (c = strchr(status, '\0'))) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1018 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1019 size_t len = c - status; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1020 error = g_strndup(status, len); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1021 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1022 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1023 got_error(slpcall, error, content_type, content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1024 g_free(error); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1025 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1026 } else { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1027 /* Everything's just dandy */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1028 got_ok(slpcall, content_type, content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1029 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1030 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1031 g_free(content_type); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1032 g_free(content); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1033 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1034 else if (!strncmp(body, "BYE", strlen("BYE"))) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1035 { |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1036 /* This is a BYE request */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1037 char *call_id; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1038 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1039 call_id = get_token(body, "Call-ID: {", "}"); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1040 slpcall = msn_slplink_find_slp_call(slplink, call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1041 g_free(call_id); |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1042 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1043 if (slpcall != NULL) |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1044 slpcall->wasted = TRUE; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1045 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1046 /* msn_slpcall_destroy(slpcall); */ |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1047 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1048 else |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1049 slpcall = NULL; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1050 |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1051 return slpcall; |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1052 } |
b0c8b85265b4
Move slp parsing and answering code down the stack to SlpCall. This simplify a lot slp.c.
masca@cpw.pidgin.im
parents:
31214
diff
changeset
|
1053 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1054 MsnSlpCall * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1055 msn_slp_process_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1056 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1057 MsnSlpCall *slpcall; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1058 const guchar *body; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1059 gsize body_len; |
31599
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1060 guint32 session_id; |
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1061 guint32 flags; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1062 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1063 slpcall = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1064 body = slpmsg->buffer; |
31599
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1065 body_len = msn_p2p_info_get_offset(slpmsg->p2p_info); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1066 |
31599
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1067 session_id = msn_p2p_info_get_session_id(slpmsg->p2p_info); |
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1068 flags = msn_p2p_info_get_flags(slpmsg->p2p_info); |
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1069 |
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1070 if (flags == P2P_NO_FLAG || flags == P2P_WLM2009_COMP) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1071 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1072 char *body_str; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1073 |
31599
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1074 if (session_id == 64) |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1075 { |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1076 /* This is for handwritten messages (Ink) */ |
28431
500d1e806264
So apparently, I messed up the name of this charset. But I wonder why it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28156
diff
changeset
|
1077 GError *error = NULL; |
28093
4362f871369c
Using g_convert instead of g_utf16_to_utf8 so that we can explicitly set
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
1078 gsize bytes_read, bytes_written; |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1079 |
28094
a82fec14ac0f
Fix the warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28093
diff
changeset
|
1080 body_str = g_convert((const gchar *)body, body_len / 2, |
28156
0cd438c47ab3
THis conversion specifier is incorrect.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28099
diff
changeset
|
1081 "UTF-8", "UTF-16LE", |
28093
4362f871369c
Using g_convert instead of g_utf16_to_utf8 so that we can explicitly set
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
1082 &bytes_read, &bytes_written, &error); |
4362f871369c
Using g_convert instead of g_utf16_to_utf8 so that we can explicitly set
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
1083 body_len -= bytes_read + 2; |
4362f871369c
Using g_convert instead of g_utf16_to_utf8 so that we can explicitly set
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
1084 body += bytes_read + 2; |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1085 if (body_str == NULL |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1086 || body_len <= 0 |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1087 || strstr(body_str, "image/gif") == NULL) |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1088 { |
28099
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1089 if (error != NULL) { |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1090 purple_debug_error("msn", |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1091 "Unable to convert Ink header from UTF-16 to UTF-8: %s\n", |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1092 error->message); |
28099
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1093 g_error_free(error); |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1094 } |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1095 else |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1096 purple_debug_error("msn", |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1097 "Received Ink in unknown format\n"); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1098 g_free(body_str); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1099 return NULL; |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1100 } |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1101 g_free(body_str); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1102 |
28094
a82fec14ac0f
Fix the warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28093
diff
changeset
|
1103 body_str = g_convert((const gchar *)body, body_len / 2, |
28431
500d1e806264
So apparently, I messed up the name of this charset. But I wonder why it
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28156
diff
changeset
|
1104 "UTF-8", "UTF-16LE", |
28093
4362f871369c
Using g_convert instead of g_utf16_to_utf8 so that we can explicitly set
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27509
diff
changeset
|
1105 &bytes_read, &bytes_written, &error); |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1106 if (!body_str) |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1107 { |
28099
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1108 if (error != NULL) { |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1109 purple_debug_error("msn", |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1110 "Unable to convert Ink body from UTF-16 to UTF-8: %s\n", |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1111 error->message); |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1112 g_error_free(error); |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1113 } |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1114 else |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1115 purple_debug_error("msn", |
080cfd84038c
Don't leak the GError from g_convert.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28095
diff
changeset
|
1116 "Received Ink in unknown format\n"); |
27374
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1117 return NULL; |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1118 } |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1119 |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1120 msn_switchboard_show_ink(slpmsg->slplink->swboard, |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1121 slplink->remote_user, |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1122 body_str); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1123 } |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1124 else |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1125 { |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1126 body_str = g_strndup((const char *)body, body_len); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1127 slpcall = msn_slp_sip_recv(slplink, body_str); |
a6d84d9de605
Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25169
diff
changeset
|
1128 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1129 g_free(body_str); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1130 } |
32021
eb1bbaae3427
Try to hide msn_p2p_info_get_flags as much as possible, since it may
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31599
diff
changeset
|
1131 else if (msn_p2p_msg_is_data(slpmsg->p2p_info)) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1132 { |
31599
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1133 slpcall = msn_slplink_find_slp_call_with_session_id(slplink, session_id); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1134 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1135 if (slpcall != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1136 { |
25072
5fd2102643d5
Avoid canceling this timer twice
Mark Doliner <mark@kingant.net>
parents:
24971
diff
changeset
|
1137 if (slpcall->timer) { |
15823 | 1138 purple_timeout_remove(slpcall->timer); |
25072
5fd2102643d5
Avoid canceling this timer twice
Mark Doliner <mark@kingant.net>
parents:
24971
diff
changeset
|
1139 slpcall->timer = 0; |
5fd2102643d5
Avoid canceling this timer twice
Mark Doliner <mark@kingant.net>
parents:
24971
diff
changeset
|
1140 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1141 |
29073
59b0c556f787
A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <paul@darkrain42.org>
parents:
28431
diff
changeset
|
1142 if (slpcall->cb) |
59b0c556f787
A quick and dirty hack to make MSN use the in-core code to perform FT.
Paul Aurich <paul@darkrain42.org>
parents:
28431
diff
changeset
|
1143 slpcall->cb(slpcall, body, body_len); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1144 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1145 slpcall->wasted = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1146 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1147 } |
32021
eb1bbaae3427
Try to hide msn_p2p_info_get_flags as much as possible, since it may
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31599
diff
changeset
|
1148 else if (msn_p2p_info_is_ack(slpmsg->p2p_info)) |
24971
859e5b3f5c47
On MSN, don't print an "unknown" message for SLP acknowledgement messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24967
diff
changeset
|
1149 { |
859e5b3f5c47
On MSN, don't print an "unknown" message for SLP acknowledgement messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24967
diff
changeset
|
1150 /* Acknowledgement of previous message. Don't do anything currently. */ |
859e5b3f5c47
On MSN, don't print an "unknown" message for SLP acknowledgement messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24967
diff
changeset
|
1151 } |
24967
5e77f8512f5b
Report a debug warning if a SLP MSG is not processed because it has unknown
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24965
diff
changeset
|
1152 else |
31310
c209701a3152
Fix a warning about the size of the flags and avoi displaying trialing 0 that will not be used.
masca@cpw.pidgin.im
parents:
31308
diff
changeset
|
1153 purple_debug_warning("msn", "Unprocessed SLP message with flags 0x%04x\n", |
31599
34da321b60f1
Try to hide all P2P fields away behind accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31566
diff
changeset
|
1154 flags); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1155 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1156 return slpcall; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1157 } |