Mercurial > pidgin.yaz
annotate libpurple/protocols/jabber/si.c @ 31449:1c660ba17ba1
propagate from branch 'im.pidgin.pidgin' (head 6f879669a6513a5c40335bbaefe842389a92b39e)
to branch 'im.pidgin.cpw.qulogic.cairo' (head 4ab0199887f74442673fd46dcbb662bc7f070bc4)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Sun, 21 Nov 2010 20:30:12 +0000 |
parents | 372bec4b2ff9 |
children | 29b4f2c52533 a8cc50c2279f |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15823 | 2 * purple - Jabber Protocol Plugin |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
28398
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
28224
diff
changeset
|
4 * Purple is the legal property of its developers, whose names are too numerous |
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
28224
diff
changeset
|
5 * to list here. Please refer to the COPYRIGHT file distributed with this |
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
28224
diff
changeset
|
6 * source distribution. |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * 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
|
9 * 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
|
10 * 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
|
11 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * 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
|
14 * 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
|
15 * 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
|
16 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * 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
|
20 * 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:
19675
diff
changeset
|
21 * 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
|
22 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
17770
diff
changeset
|
25 #include "internal.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
17770
diff
changeset
|
27 #include "blist.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "ft.h" |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
30 #include "request.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 #include "network.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 #include "notify.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 #include "buddy.h" |
30202
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
35 #include "data.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 #include "disco.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 #include "jabber.h" |
25247
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25243
diff
changeset
|
38 #include "ibb.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 #include "iq.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 #include "si.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
42 #define STREAMHOST_CONNECT_TIMEOUT 15 |
30595
0c8d1b152b16
woops, this should remain de-activated for a while yet... :)
Marcus Lundblad <ml@update.uu.se>
parents:
30594
diff
changeset
|
43 #define ENABLE_FT_THUMBNAILS 0 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 typedef struct _JabberSIXfer { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 |
15823 | 48 PurpleProxyConnectData *connect_data; |
49 PurpleNetworkListenData *listen_data; | |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
50 guint connect_timeout; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
52 gboolean accepted; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
53 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
54 char *stream_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 char *iq_id; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
56 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
57 enum { |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
58 STREAM_METHOD_UNKNOWN = 0, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 STREAM_METHOD_BYTESTREAMS = 2 << 1, |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
60 STREAM_METHOD_IBB = 2 << 2, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 STREAM_METHOD_UNSUPPORTED = 2 << 31 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 } stream_method; |
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 GList *streamhosts; |
15823 | 65 PurpleProxyInfo *gpi; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 char *rxqueue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 size_t rxlen; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 gsize rxmaxlen; |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
70 int local_streamhost_fd; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
71 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
72 JabberIBBSession *ibb_session; |
25243
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
73 guint ibb_timeout_handle; |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
74 PurpleCircBuffer *ibb_buffer; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 } JabberSIXfer; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
77 /* some forward declarations */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
78 static void jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
79 |
15823 | 80 static PurpleXfer* |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 jabber_si_xfer_find(JabberStream *js, const char *sid, const char *from) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 GList *xfers; |
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 if(!sid || !from) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
87 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 for(xfers = js->file_transfers; xfers; xfers = xfers->next) { |
15823 | 89 PurpleXfer *xfer = xfers->data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 if(jsx->stream_id && xfer->who && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 !strcmp(jsx->stream_id, sid) && !strcmp(xfer->who, from)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 return xfer; |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 |
22912
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
99 static void |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
100 jabber_si_free_streamhost(gpointer data, gpointer user_data) |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
101 { |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
102 JabberBytestreamsStreamhost *sh = data; |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
103 |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
104 if(!data) |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
105 return; |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
106 |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
107 g_free(sh->jid); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
108 g_free(sh->host); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
109 g_free(sh->zeroconf); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
110 g_free(sh); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
111 } |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
112 |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
113 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 |
15823 | 115 static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 jabber_si_bytestreams_connect_cb(gpointer data, gint source, const gchar *error_message) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 { |
15823 | 120 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 xmlnode *query, *su; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
124 JabberBytestreamsStreamhost *streamhost = jsx->streamhosts->data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 |
15823 | 126 purple_proxy_info_destroy(jsx->gpi); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
127 jsx->gpi = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 jsx->connect_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
130 if (jsx->connect_timeout > 0) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
131 purple_timeout_remove(jsx->connect_timeout); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
132 jsx->connect_timeout = 0; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
133 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 if(source < 0) { |
17770
efb5d0fe4895
Better error message for when a Jabber connection fails
Mark Doliner <mark@kingant.net>
parents:
17441
diff
changeset
|
135 purple_debug_warning("jabber", |
efb5d0fe4895
Better error message for when a Jabber connection fails
Mark Doliner <mark@kingant.net>
parents:
17441
diff
changeset
|
136 "si connection failed, jid was %s, host was %s, error was %s\n", |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
137 streamhost->jid, streamhost->host, |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
138 error_message ? error_message : "(null)"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 jsx->streamhosts = g_list_remove(jsx->streamhosts, streamhost); |
22912
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
140 jabber_si_free_streamhost(streamhost, NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 jabber_si_bytestreams_attempt_connect(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 return; |
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 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
145 /* unknown file transfer type is assumed to be RECEIVE */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
146 if(xfer->type == PURPLE_XFER_SEND) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
147 { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
148 xmlnode *activate; |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
149 iq = jabber_iq_new_query(jsx->js, JABBER_IQ_SET, NS_BYTESTREAMS); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
150 xmlnode_set_attrib(iq->node, "to", streamhost->jid); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
151 query = xmlnode_get_child(iq->node, "query"); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
152 xmlnode_set_attrib(query, "sid", jsx->stream_id); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
153 activate = xmlnode_new_child(query, "activate"); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
154 xmlnode_insert_data(activate, xfer->who, -1); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
155 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
156 /* TODO: We need to wait for an activation result before starting */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
157 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
158 else |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
159 { |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
160 iq = jabber_iq_new_query(jsx->js, JABBER_IQ_RESULT, NS_BYTESTREAMS); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
161 xmlnode_set_attrib(iq->node, "to", xfer->who); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
162 jabber_iq_set_id(iq, jsx->iq_id); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
163 query = xmlnode_get_child(iq->node, "query"); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
164 su = xmlnode_new_child(query, "streamhost-used"); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
165 xmlnode_set_attrib(su, "jid", streamhost->jid); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
166 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 |
15823 | 170 purple_xfer_start(xfer, source, NULL, -1); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
172 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
173 static gboolean |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
174 connect_timeout_cb(gpointer data) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
175 { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
176 PurpleXfer *xfer = data; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
177 JabberSIXfer *jsx = xfer->data; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
178 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
179 purple_debug_info("jabber", "Streamhost connection timeout of %d seconds exceeded.\n", STREAMHOST_CONNECT_TIMEOUT); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
180 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
181 jsx->connect_timeout = 0; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
182 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
183 if (jsx->connect_data != NULL) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
184 purple_proxy_connect_cancel(jsx->connect_data); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
185 jsx->connect_data = NULL; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
186 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
187 /* Trigger the connect error manually */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
188 jabber_si_bytestreams_connect_cb(xfer, -1, "Timeout Exceeded."); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
189 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
190 return FALSE; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
191 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
192 |
25243
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
193 static void |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
194 jabber_si_bytestreams_ibb_timeout_remove(JabberSIXfer *jsx) |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
195 { |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
196 if (jsx->ibb_timeout_handle) { |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
197 purple_timeout_remove(jsx->ibb_timeout_handle); |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
198 jsx->ibb_timeout_handle = 0; |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
199 } |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
200 } |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
201 |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
202 static gboolean |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
203 jabber_si_bytestreams_ibb_timeout_cb(gpointer data) |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
204 { |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
205 PurpleXfer *xfer = (PurpleXfer *) data; |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
206 JabberSIXfer *jsx = xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
207 |
25243
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
208 if (jsx && !jsx->ibb_session) { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
209 purple_debug_info("jabber", |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
210 "jabber_si_bytestreams_ibb_timeout called and IBB session not set " |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
211 " up yet, cancel transfer"); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
212 jabber_si_bytestreams_ibb_timeout_remove(jsx); |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
213 purple_xfer_cancel_local(xfer); |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
214 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
215 |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
216 return FALSE; |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
217 } |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
218 |
15823 | 219 static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
220 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 JabberSIXfer *jsx = xfer->data; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
222 JabberBytestreamsStreamhost *streamhost; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
223 JabberID *dstjid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 if(!jsx->streamhosts) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
226 JabberIq *iq = jabber_iq_new(jsx->js, JABBER_IQ_ERROR); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 xmlnode *error, *inf; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
229 if(jsx->iq_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
230 jabber_iq_set_id(iq, jsx->iq_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
231 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
232 xmlnode_set_attrib(iq->node, "to", xfer->who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 error = xmlnode_new_child(iq->node, "error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 xmlnode_set_attrib(error, "code", "404"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 xmlnode_set_attrib(error, "type", "cancel"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 inf = xmlnode_new_child(error, "item-not-found"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
237 xmlnode_set_namespace(inf, NS_XMPP_STANZAS); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
239 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
240 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
241 /* if IBB is available, revert to that before giving up... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
242 if (jsx->stream_method & STREAM_METHOD_IBB) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
243 /* if we are the initializer, init IBB */ |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
244 purple_debug_info("jabber", |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
245 "jabber_si_bytestreams_attempt_connect: " |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
246 "no streamhosts found, trying IBB\n"); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
247 /* if we are the sender, open an IBB session, but not if we already |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
248 did it, since we could have received the error <iq/> from the |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
249 receiver already... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
250 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
251 && !jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
252 jabber_si_xfer_ibb_send_init(jsx->js, xfer); |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
253 } else { |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
254 /* setup a timeout to cancel waiting for IBB open */ |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
255 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
256 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
257 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
258 /* if we are the receiver, just wait for IBB open, callback is |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
259 already set up... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
260 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
261 purple_xfer_cancel_local(xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
262 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
263 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
265 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
266 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 streamhost = jsx->streamhosts->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
268 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
269 jsx->connect_data = NULL; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
270 if (jsx->gpi != NULL) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
271 purple_proxy_info_destroy(jsx->gpi); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
272 jsx->gpi = NULL; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
273 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
274 dstjid = jabber_id_new(xfer->who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
276 /* TODO: Deal with zeroconf */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
277 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
278 if(dstjid != NULL && streamhost->host && streamhost->port > 0) { |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
279 char *dstaddr, *hash; |
15823 | 280 jsx->gpi = purple_proxy_info_new(); |
281 purple_proxy_info_set_type(jsx->gpi, PURPLE_PROXY_SOCKS5); | |
282 purple_proxy_info_set_host(jsx->gpi, streamhost->host); | |
283 purple_proxy_info_set_port(jsx->gpi, streamhost->port); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
285 /* unknown file transfer type is assumed to be RECEIVE */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
286 if(xfer->type == PURPLE_XFER_SEND) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
287 dstaddr = g_strdup_printf("%s%s@%s/%s%s@%s/%s", jsx->stream_id, jsx->js->user->node, jsx->js->user->domain, |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
288 jsx->js->user->resource, dstjid->node, dstjid->domain, dstjid->resource); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
289 else |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
290 dstaddr = g_strdup_printf("%s%s@%s/%s%s@%s/%s", jsx->stream_id, dstjid->node, dstjid->domain, dstjid->resource, |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
291 jsx->js->user->node, jsx->js->user->domain, jsx->js->user->resource); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
293 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ |
30031
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
30013
diff
changeset
|
294 hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 |
15823 | 296 jsx->connect_data = purple_proxy_connect_socks5(NULL, jsx->gpi, |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
297 hash, 0, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 jabber_si_bytestreams_connect_cb, xfer); |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
299 g_free(hash); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 g_free(dstaddr); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
302 /* When selecting a streamhost, timeout after STREAMHOST_CONNECT_TIMEOUT seconds, otherwise it takes forever */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
303 if (xfer->type != PURPLE_XFER_SEND && jsx->connect_data != NULL) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
304 jsx->connect_timeout = purple_timeout_add_seconds( |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
305 STREAMHOST_CONNECT_TIMEOUT, connect_timeout_cb, xfer); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
306 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 jabber_id_free(dstjid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 if (jsx->connect_data == NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 jsx->streamhosts = g_list_remove(jsx->streamhosts, streamhost); |
22912
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
313 jabber_si_free_streamhost(streamhost, NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 jabber_si_bytestreams_attempt_connect(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
318 void jabber_bytestreams_parse(JabberStream *js, const char *from, |
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
319 JabberIqType type, const char *id, xmlnode *query) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 { |
15823 | 321 PurpleXfer *xfer; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 JabberSIXfer *jsx; |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
323 xmlnode *streamhost; |
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
324 const char *sid; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
326 if(type != JABBER_IQ_SET) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
328 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
329 if(!from) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
332 if(!(sid = xmlnode_get_attrib(query, "sid"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
334 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
335 if(!(xfer = jabber_si_xfer_find(js, sid, from))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
338 jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 if(!jsx->accepted) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
342 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 if(jsx->iq_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 g_free(jsx->iq_id); |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
345 jsx->iq_id = g_strdup(id); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 for(streamhost = xmlnode_get_child(query, "streamhost"); streamhost; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 streamhost = xmlnode_get_next_twin(streamhost)) { |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
349 const char *jid, *host = NULL, *port, *zeroconf; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
350 int portnum = 0; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
351 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 if((jid = xmlnode_get_attrib(streamhost, "jid")) && |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
353 ((zeroconf = xmlnode_get_attrib(streamhost, "zeroconf")) || |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
354 ((host = xmlnode_get_attrib(streamhost, "host")) && |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 (port = xmlnode_get_attrib(streamhost, "port")) && |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
356 (portnum = atoi(port))))) { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
357 JabberBytestreamsStreamhost *sh = g_new0(JabberBytestreamsStreamhost, 1); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
358 sh->jid = g_strdup(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
359 sh->host = g_strdup(host); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 sh->port = portnum; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
361 sh->zeroconf = g_strdup(zeroconf); |
22912
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
362 /* If there were a lot of these, it'd be worthwhile to prepend and reverse. */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 jsx->streamhosts = g_list_append(jsx->streamhosts, sh); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
367 jabber_si_bytestreams_attempt_connect(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
368 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 jabber_si_xfer_bytestreams_send_read_again_resp_cb(gpointer data, gint source, |
15823 | 373 PurpleInputCondition cond) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 { |
15823 | 375 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
376 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 len = write(source, jsx->rxqueue + jsx->rxlen, jsx->rxmaxlen - jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 if (len < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 else if (len < 0) { |
15823 | 383 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
384 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 g_free(jsx->rxqueue); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 jsx->rxqueue = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
387 close(source); |
15823 | 388 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
391 jsx->rxlen += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 if (jsx->rxlen < jsx->rxmaxlen) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
395 |
15823 | 396 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
397 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
398 g_free(jsx->rxqueue); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
399 jsx->rxqueue = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
401 /* Before actually starting sending the file, we need to wait until the |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
402 * recipient sends the IQ result with <streamhost-used/> |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
403 */ |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
404 purple_debug_info("jabber", "SOCKS5 connection negotiation completed. " |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
405 "Waiting for IQ result to start file transfer.\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
409 jabber_si_xfer_bytestreams_send_read_again_cb(gpointer data, gint source, |
15823 | 410 PurpleInputCondition cond) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 { |
15823 | 412 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 JabberSIXfer *jsx = xfer->data; |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
414 char buffer[42]; /* 40 for DST.ADDR + 2 bytes for port number*/ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 int len; |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
416 char *dstaddr, *hash; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 const char *host; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
418 |
15823 | 419 purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_read_again_cb\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
420 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
421 if(jsx->rxlen < 5) { |
15823 | 422 purple_debug_info("jabber", "reading the first 5 bytes\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
423 len = read(source, buffer, 5 - jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
424 if(len < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
425 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
426 else if(len <= 0) { |
15823 | 427 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
429 close(source); |
15823 | 430 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
431 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
432 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
433 jsx->rxqueue = g_realloc(jsx->rxqueue, len + jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
435 jsx->rxlen += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
437 } else if(jsx->rxqueue[0] != 0x05 || jsx->rxqueue[1] != 0x01 || |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
438 jsx->rxqueue[3] != 0x03 || jsx->rxqueue[4] != 40) { |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
439 purple_debug_info("jabber", "Invalid socks5 conn req. header[0x%x,0x%x,0x%x,0x%x,0x%x]\n", |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
440 jsx->rxqueue[0], jsx->rxqueue[1], jsx->rxqueue[2], |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
441 jsx->rxqueue[3], jsx->rxqueue[4]); |
15823 | 442 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
443 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
444 close(source); |
15823 | 445 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
446 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 } else if(jsx->rxlen - 5 < jsx->rxqueue[4] + 2) { |
26997
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
448 /* Upper-bound of 257 (jsx->rxlen = 5, jsx->rxqueue[4] = 0xFF) */ |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
449 unsigned short to_read = jsx->rxqueue[4] + 2 - (jsx->rxlen - 5); |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
450 purple_debug_info("jabber", "reading %u bytes for DST.ADDR + port num (trying to read %hu now)\n", |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
451 jsx->rxqueue[4] + 2, to_read); |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
452 len = read(source, buffer, to_read); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
453 if(len < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
454 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
455 else if(len <= 0) { |
15823 | 456 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
458 close(source); |
15823 | 459 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
460 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
461 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
462 jsx->rxqueue = g_realloc(jsx->rxqueue, len + jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
463 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
464 jsx->rxlen += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
465 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
466 |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
467 /* Have we not read all of DST.ADDR and the following 2-byte port number? */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
468 if(jsx->rxlen - 5 < jsx->rxqueue[4] + 2) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
469 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
470 |
15823 | 471 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
472 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
473 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
474 dstaddr = g_strdup_printf("%s%s@%s/%s%s", jsx->stream_id, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
475 jsx->js->user->node, jsx->js->user->domain, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
476 jsx->js->user->resource, xfer->who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
477 |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
478 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ |
30031
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
30013
diff
changeset
|
479 hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
480 |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
481 if(strncmp(hash, jsx->rxqueue + 5, 40) || |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
482 jsx->rxqueue[45] != 0x00 || jsx->rxqueue[46] != 0x00) { |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
483 if (jsx->rxqueue[45] != 0x00 || jsx->rxqueue[46] != 0x00) |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
484 purple_debug_error("jabber", "Got SOCKS5 BS conn with the wrong DST.PORT" |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
485 " (must be 0 - got[0x%x,0x%x]).\n", |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
486 jsx->rxqueue[45], jsx->rxqueue[46]); |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
487 else |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
488 purple_debug_error("jabber", "Got SOCKS5 BS conn with the wrong DST.ADDR" |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
489 " (expected '%s' - got '%.40s').\n", |
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
490 hash, jsx->rxqueue + 5); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 close(source); |
15823 | 492 purple_xfer_cancel_remote(xfer); |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
493 g_free(hash); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
494 g_free(dstaddr); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
495 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
496 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
497 |
24641
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24497
diff
changeset
|
498 g_free(hash); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
499 g_free(dstaddr); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
500 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
501 g_free(jsx->rxqueue); |
15823 | 502 host = purple_network_get_my_ip(jsx->js->fd); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
503 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 jsx->rxmaxlen = 5 + strlen(host) + 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
505 jsx->rxqueue = g_malloc(jsx->rxmaxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
506 jsx->rxlen = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
507 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 jsx->rxqueue[0] = 0x05; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
509 jsx->rxqueue[1] = 0x00; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
510 jsx->rxqueue[2] = 0x00; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
511 jsx->rxqueue[3] = 0x03; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
512 jsx->rxqueue[4] = strlen(host); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
513 memcpy(jsx->rxqueue + 5, host, strlen(host)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
514 jsx->rxqueue[5+strlen(host)] = 0x00; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
515 jsx->rxqueue[6+strlen(host)] = 0x00; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
516 |
15823 | 517 xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
518 jabber_si_xfer_bytestreams_send_read_again_resp_cb, xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
519 jabber_si_xfer_bytestreams_send_read_again_resp_cb(xfer, source, |
15823 | 520 PURPLE_INPUT_WRITE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
521 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
522 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
523 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
524 jabber_si_xfer_bytestreams_send_read_response_cb(gpointer data, gint source, |
15823 | 525 PurpleInputCondition cond) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 { |
15823 | 527 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
529 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 len = write(source, jsx->rxqueue + jsx->rxlen, jsx->rxmaxlen - jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 if (len < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 else if (len < 0) { |
15823 | 535 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
536 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 g_free(jsx->rxqueue); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 jsx->rxqueue = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 close(source); |
15823 | 540 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
541 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
542 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 jsx->rxlen += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 if (jsx->rxlen < jsx->rxmaxlen) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 |
15823 | 548 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
551 /* If we sent a "Success", wait for a response, otherwise give up and cancel */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 if (jsx->rxqueue[1] == 0x00) { |
15823 | 553 xfer->watcher = purple_input_add(source, PURPLE_INPUT_READ, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 jabber_si_xfer_bytestreams_send_read_again_cb, xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
555 g_free(jsx->rxqueue); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
556 jsx->rxqueue = NULL; |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
557 jsx->rxlen = 0; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 close(source); |
15823 | 560 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
563 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
564 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 jabber_si_xfer_bytestreams_send_read_cb(gpointer data, gint source, |
15823 | 566 PurpleInputCondition cond) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 { |
15823 | 568 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
569 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
570 int i; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 char buffer[256]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
573 |
15823 | 574 purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_read_cb\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
575 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
576 xfer->fd = source; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
577 |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
578 /** Try to read the SOCKS5 header */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
579 if(jsx->rxlen < 2) { |
15823 | 580 purple_debug_info("jabber", "reading those first two bytes\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
581 len = read(source, buffer, 2 - jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
582 if(len < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 else if(len <= 0) { |
15823 | 585 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
587 close(source); |
15823 | 588 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
590 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
591 jsx->rxqueue = g_realloc(jsx->rxqueue, len + jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
592 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
593 jsx->rxlen += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
594 return; |
26997
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
595 } else if(jsx->rxlen - 2 < jsx->rxqueue[1]) { |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
596 /* Has a maximum value of 255 (jsx->rxlen = 2, jsx->rxqueue[1] = 0xFF) */ |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
597 unsigned short to_read = jsx->rxqueue[1] - (jsx->rxlen - 2); |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
598 purple_debug_info("jabber", "reading %u bytes for auth methods (trying to read %hu now)\n", |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
599 jsx->rxqueue[1], to_read); |
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26959
diff
changeset
|
600 len = read(source, buffer, to_read); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
601 if(len < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
602 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
603 else if(len <= 0) { |
15823 | 604 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
605 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
606 close(source); |
15823 | 607 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
608 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
609 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
610 jsx->rxqueue = g_realloc(jsx->rxqueue, len + jsx->rxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
611 memcpy(jsx->rxqueue + jsx->rxlen, buffer, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
612 jsx->rxlen += len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
613 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
614 |
25841
0d7f02640e2b
Make sure that the buffer is large enough to fit DST.ADDR + DST.PORT. This was found in the analysis that Veracode performed on the pidgin codebase.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24641
diff
changeset
|
615 /* Have we not read all the auth. method bytes? */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
616 if(jsx->rxlen -2 < jsx->rxqueue[1]) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
617 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
618 |
15823 | 619 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
620 xfer->watcher = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
621 |
15823 | 622 purple_debug_info("jabber", "checking to make sure we're socks FIVE\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
623 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
624 if(jsx->rxqueue[0] != 0x05) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
625 close(source); |
15823 | 626 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
627 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
628 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
629 |
15823 | 630 purple_debug_info("jabber", "going to test %hhu different methods\n", jsx->rxqueue[1]); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
631 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
632 for(i=0; i<jsx->rxqueue[1]; i++) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
633 |
15823 | 634 purple_debug_info("jabber", "testing %hhu\n", jsx->rxqueue[i+2]); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
635 if(jsx->rxqueue[i+2] == 0x00) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
636 g_free(jsx->rxqueue); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
637 jsx->rxlen = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
638 jsx->rxmaxlen = 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
639 jsx->rxqueue = g_malloc(jsx->rxmaxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 jsx->rxqueue[0] = 0x05; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
641 jsx->rxqueue[1] = 0x00; |
15823 | 642 xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
643 jabber_si_xfer_bytestreams_send_read_response_cb, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
644 xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
645 jabber_si_xfer_bytestreams_send_read_response_cb(xfer, |
15823 | 646 source, PURPLE_INPUT_WRITE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
647 jsx->rxqueue = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
648 jsx->rxlen = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
649 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
650 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
651 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
652 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
653 g_free(jsx->rxqueue); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
654 jsx->rxlen = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
655 jsx->rxmaxlen = 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
656 jsx->rxqueue = g_malloc(jsx->rxmaxlen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 jsx->rxqueue[0] = 0x05; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
658 jsx->rxqueue[1] = 0xFF; |
15823 | 659 xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
660 jabber_si_xfer_bytestreams_send_read_response_cb, xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 jabber_si_xfer_bytestreams_send_read_response_cb(xfer, |
15823 | 662 source, PURPLE_INPUT_WRITE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
663 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
664 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
665 static gint |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
666 jabber_si_compare_jid(gconstpointer a, gconstpointer b) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
667 { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
668 const JabberBytestreamsStreamhost *sh = a; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
669 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
670 if(!a) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
671 return -1; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
672 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
673 return strcmp(sh->jid, (char *)b); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
674 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
675 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
676 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
677 jabber_si_xfer_bytestreams_send_connected_cb(gpointer data, gint source, |
15823 | 678 PurpleInputCondition cond) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
679 { |
15823 | 680 PurpleXfer *xfer = data; |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
681 JabberSIXfer *jsx = xfer->data; |
23769
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
682 int acceptfd, flags; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 |
15823 | 684 purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_connected_cb\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
685 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
686 acceptfd = accept(source, NULL, 0); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
687 if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
688 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
689 else if(acceptfd == -1) { |
21121
35b4f1dc4c8d
replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents:
19680
diff
changeset
|
690 purple_debug_warning("jabber", "accept: %s\n", g_strerror(errno)); |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
691 /* Don't cancel the ft - allow it to fall to the next streamhost.*/ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
692 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
693 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
694 |
15823 | 695 purple_input_remove(xfer->watcher); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
696 close(source); |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
697 jsx->local_streamhost_fd = -1; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
698 |
23769
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
699 flags = fcntl(acceptfd, F_GETFL); |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
700 fcntl(acceptfd, F_SETFL, flags | O_NONBLOCK); |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
701 #ifndef _WIN32 |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
702 fcntl(acceptfd, F_SETFD, FD_CLOEXEC); |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
703 #endif |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23645
diff
changeset
|
704 |
15823 | 705 xfer->watcher = purple_input_add(acceptfd, PURPLE_INPUT_READ, |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
706 jabber_si_xfer_bytestreams_send_read_cb, xfer); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
707 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
708 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
709 static void |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
710 jabber_si_connect_proxy_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
711 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
712 xmlnode *packet, gpointer data) |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
713 { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
714 PurpleXfer *xfer = data; |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
715 JabberSIXfer *jsx; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
716 xmlnode *query, *streamhost_used; |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
717 const char *jid; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
718 GList *matched; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
719 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
720 /* TODO: This need to send errors if we don't see what we're looking for */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
721 |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
722 /* Make sure that the xfer is actually still valid and we're not just receiving an old iq response */ |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
723 if (!g_list_find(js->file_transfers, xfer)) { |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
724 purple_debug_error("jabber", "Got bytestreams response for no longer existing xfer (%p)\n", xfer); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
725 return; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
726 } |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
727 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
728 /* In the case of a direct file transfer, this is expected to return */ |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
729 if(!xfer->data) |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
730 return; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
731 |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
732 jsx = xfer->data; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
733 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
734 if(type != JABBER_IQ_RESULT) { |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
735 purple_debug_info("jabber", |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
736 "jabber_si_xfer_connect_proxy_cb: type = error\n"); |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
737 /* if IBB is available, open IBB session */ |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
738 purple_debug_info("jabber", |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
739 "jabber_si_xfer_connect_proxy_cb: got error, method: %d\n", |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
740 jsx->stream_method); |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
741 if (jsx->stream_method & STREAM_METHOD_IBB) { |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
742 purple_debug_info("jabber", "IBB is possible, try it\n"); |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
743 /* if we are the sender and haven't already opened an IBB |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
744 session, do so now (we might already have failed to open |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
745 the bytestream proxy ourselves when receiving this <iq/> */ |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
746 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
747 && !jsx->ibb_session) { |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
748 jabber_si_xfer_ibb_send_init(js, xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
749 } else { |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
750 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
751 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
752 } |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
753 /* if we are receiver, just wait for IBB open stanza, callback |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
754 is already set up */ |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
755 } else { |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
756 purple_xfer_cancel_remote(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
757 } |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
758 return; |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
759 } |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
760 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
761 if (!from) |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
762 return; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
763 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
764 if(!(query = xmlnode_get_child(packet, "query"))) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
765 return; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
766 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
767 if(!(streamhost_used = xmlnode_get_child(query, "streamhost-used"))) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
768 return; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
769 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
770 if(!(jid = xmlnode_get_attrib(streamhost_used, "jid"))) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
771 return; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
772 |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
773 purple_debug_info("jabber", "jabber_si_connect_proxy_cb() will be looking at jsx %p: jsx->streamhosts is %p and jid is %s\n", |
22656
919074aa02ca
I've seen intermittent crashes on xmpp file transfers in this code, but I
Evan Schoenberg <evan.s@dreskin.net>
parents:
22206
diff
changeset
|
774 jsx, jsx->streamhosts, jid); |
919074aa02ca
I've seen intermittent crashes on xmpp file transfers in this code, but I
Evan Schoenberg <evan.s@dreskin.net>
parents:
22206
diff
changeset
|
775 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
776 if(!(matched = g_list_find_custom(jsx->streamhosts, jid, jabber_si_compare_jid))) |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
777 { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
778 gchar *my_jid = g_strdup_printf("%s@%s/%s", jsx->js->user->node, |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
779 jsx->js->user->domain, jsx->js->user->resource); |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
780 if (!strcmp(jid, my_jid)) { |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
781 purple_debug_info("jabber", "Got local SOCKS5 streamhost-used.\n"); |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
782 purple_xfer_start(xfer, xfer->fd, NULL, -1); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
783 } else { |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
784 /* if available, try to revert to IBB... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
785 if (jsx->stream_method & STREAM_METHOD_IBB) { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
786 purple_debug_info("jabber", |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
787 "jabber_si_connect_proxy_cb: trying to revert to IBB\n"); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
788 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
789 jabber_si_xfer_ibb_send_init(jsx->js, xfer); |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
790 } else { |
25243
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
791 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
792 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
793 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
794 /* if we are the receiver, we are already set up...*/ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
795 } else { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
796 purple_debug_info("jabber", |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
797 "streamhost-used does not match any proxy that was offered to target\n"); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
798 purple_xfer_cancel_local(xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
799 } |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
800 } |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
801 g_free(my_jid); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
802 return; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
803 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
804 |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
805 /* Clean up the local streamhost - it isn't going to be used.*/ |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
806 if (xfer->watcher > 0) { |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
807 purple_input_remove(xfer->watcher); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
808 xfer->watcher = 0; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
809 } |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
810 if (jsx->local_streamhost_fd >= 0) { |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
811 close(jsx->local_streamhost_fd); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
812 jsx->local_streamhost_fd = -1; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
813 } |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
814 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
815 jsx->streamhosts = g_list_remove_link(jsx->streamhosts, matched); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
816 g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
817 g_list_free(jsx->streamhosts); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
818 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
819 jsx->streamhosts = matched; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
820 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
821 jabber_si_bytestreams_attempt_connect(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
822 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
823 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
824 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
825 jabber_si_xfer_bytestreams_listen_cb(int sock, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
826 { |
15823 | 827 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
828 JabberSIXfer *jsx; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
829 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
830 xmlnode *query, *streamhost; |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
831 char port[6]; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
832 GList *tmp; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
833 JabberBytestreamsStreamhost *sh, *sh2; |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
834 int streamhost_count = 0; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
835 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
836 jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
837 jsx->listen_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
838 |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
839 /* I'm not sure under which conditions this can happen |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
840 * (it seems like it shouldn't be possible */ |
15823 | 841 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) { |
842 purple_xfer_unref(xfer); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
843 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
844 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
845 |
15823 | 846 purple_xfer_unref(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
847 |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
848 iq = jabber_iq_new_query(jsx->js, JABBER_IQ_SET, NS_BYTESTREAMS); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
849 xmlnode_set_attrib(iq->node, "to", xfer->who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
850 query = xmlnode_get_child(iq->node, "query"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
851 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
852 xmlnode_set_attrib(query, "sid", jsx->stream_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
853 |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
854 /* If we successfully started listening locally */ |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
855 if (sock >= 0) { |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
856 gchar *jid; |
29495
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
857 GList *local_ips = |
29496
f1aa01ff26dd
Remove IPv6 support from _get_local_system_ips, since I couldn't get it to
Marcus Lundblad <ml@update.uu.se>
parents:
29495
diff
changeset
|
858 purple_network_get_all_local_system_ips(); |
29495
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
859 const char *public_ip; |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
860 gboolean has_public_ip = FALSE; |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
861 |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
862 jsx->local_streamhost_fd = sock; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
863 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
864 jid = g_strdup_printf("%s@%s/%s", jsx->js->user->node, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
865 jsx->js->user->domain, jsx->js->user->resource); |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
866 xfer->local_port = purple_network_get_port_from_fd(sock); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
867 g_snprintf(port, sizeof(port), "%hu", xfer->local_port); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
868 |
29495
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
869 public_ip = purple_network_get_my_ip(jsx->js->fd); |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
870 |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
871 /* Include the localhost's IPs (for in-network transfers) */ |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
872 while (local_ips) { |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
873 gchar *local_ip = local_ips->data; |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
874 streamhost_count++; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
875 streamhost = xmlnode_new_child(query, "streamhost"); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
876 xmlnode_set_attrib(streamhost, "jid", jid); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
877 xmlnode_set_attrib(streamhost, "host", local_ip); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
878 xmlnode_set_attrib(streamhost, "port", port); |
29495
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
879 if (purple_strequal(local_ip, public_ip)) |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
880 has_public_ip = TRUE; |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
881 g_free(local_ip); |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
882 local_ips = g_list_delete_link(local_ips, local_ips); |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
883 } |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
884 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
885 /* Include the public IP (assuming that there is a port mapped somehow) */ |
29495
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28398
diff
changeset
|
886 if (!has_public_ip && strcmp(public_ip, "0.0.0.0") != 0) { |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
887 streamhost_count++; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
888 streamhost = xmlnode_new_child(query, "streamhost"); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
889 xmlnode_set_attrib(streamhost, "jid", jid); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
890 xmlnode_set_attrib(streamhost, "host", public_ip); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
891 xmlnode_set_attrib(streamhost, "port", port); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
892 } |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
893 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
894 g_free(jid); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
895 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
896 /* The listener for the local proxy */ |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
897 xfer->watcher = purple_input_add(sock, PURPLE_INPUT_READ, |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
898 jabber_si_xfer_bytestreams_send_connected_cb, xfer); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
899 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
900 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
901 for (tmp = jsx->js->bs_proxies; tmp; tmp = tmp->next) { |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
902 sh = tmp->data; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
903 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
904 /* TODO: deal with zeroconf proxies */ |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
905 |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
906 if (!(sh->jid && sh->host && sh->port > 0)) |
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
907 continue; |
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
908 |
24423
88955b918197
Add missing newline in debug message.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23769
diff
changeset
|
909 purple_debug_info("jabber", "jabber_si_xfer_bytestreams_listen_cb() will be looking at jsx %p: jsx->streamhosts %p and sh->jid %p\n", |
22656
919074aa02ca
I've seen intermittent crashes on xmpp file transfers in this code, but I
Evan Schoenberg <evan.s@dreskin.net>
parents:
22206
diff
changeset
|
910 jsx, jsx->streamhosts, sh->jid); |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
911 if(g_list_find_custom(jsx->streamhosts, sh->jid, jabber_si_compare_jid) != NULL) |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
912 continue; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
913 |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
914 streamhost_count++; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
915 streamhost = xmlnode_new_child(query, "streamhost"); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
916 xmlnode_set_attrib(streamhost, "jid", sh->jid); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
917 xmlnode_set_attrib(streamhost, "host", sh->host); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
918 g_snprintf(port, sizeof(port), "%hu", sh->port); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
919 xmlnode_set_attrib(streamhost, "port", port); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
920 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
921 sh2 = g_new0(JabberBytestreamsStreamhost, 1); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
922 sh2->jid = g_strdup(sh->jid); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
923 sh2->host = g_strdup(sh->host); |
22912
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22656
diff
changeset
|
924 /*sh2->zeroconf = g_strdup(sh->zeroconf);*/ |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
925 sh2->port = sh->port; |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
926 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
927 jsx->streamhosts = g_list_prepend(jsx->streamhosts, sh2); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
928 } |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
929 |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
930 /* We have no way of transferring, cancel the transfer */ |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
931 if (streamhost_count == 0) { |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
932 jabber_iq_free(iq); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
933 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
934 /* if available, revert to IBB */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
935 if (jsx->stream_method & STREAM_METHOD_IBB) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
936 purple_debug_info("jabber", |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
937 "jabber_si_xfer_bytestreams_listen_cb: trying to revert to IBB\n"); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
938 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
939 /* if we are the sender, init the IBB session... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
940 jabber_si_xfer_ibb_send_init(jsx->js, xfer); |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
941 } else { |
25243
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
942 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
943 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
944 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
945 /* if we are the receiver, we should just wait... the IBB open |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
946 handler has already been set up... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
947 } else { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
948 /* We should probably notify the target, |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
949 but this really shouldn't ever happen */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
950 purple_xfer_cancel_local(xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
951 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
952 |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
953 return; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
954 } |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
955 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
956 jabber_iq_set_callback(iq, jabber_si_connect_proxy_cb, xfer); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
957 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
958 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
959 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
960 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
961 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
962 static void |
15823 | 963 jabber_si_xfer_bytestreams_send_init(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
964 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
965 JabberSIXfer *jsx; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
966 |
15823 | 967 purple_xfer_ref(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
968 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
969 jsx = xfer->data; |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
970 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
971 /* TODO: Should there be an option to not use the local host as a ft proxy? |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
972 * (to prevent revealing IP address, etc.) */ |
15823 | 973 jsx->listen_data = purple_network_listen_range(0, 0, SOCK_STREAM, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
974 jabber_si_xfer_bytestreams_listen_cb, xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
975 if (jsx->listen_data == NULL) { |
23366
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
976 /* We couldn't open a local port. Perhaps we can use a proxy. */ |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23365
diff
changeset
|
977 jabber_si_xfer_bytestreams_listen_cb(-1, xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
978 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
979 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
980 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
981 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
982 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
983 jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
984 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
985 PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
986 |
27366
73c8e1964eef
A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27190
diff
changeset
|
987 purple_debug_error("jabber", "an error occurred during IBB file transfer\n"); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
988 purple_xfer_cancel_remote(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
989 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
990 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
991 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
992 jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
993 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
994 PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
995 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
996 purple_debug_info("jabber", "the remote user closed the transfer\n"); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
997 if (purple_xfer_get_bytes_remaining(xfer) > 0) { |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
998 purple_xfer_cancel_remote(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
999 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1000 purple_xfer_set_completed(xfer, TRUE); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1001 purple_xfer_end(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1002 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1003 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1004 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1005 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1006 jabber_si_xfer_ibb_recv_data_cb(JabberIBBSession *sess, gpointer data, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1007 gsize size) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1008 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1009 PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1010 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1011 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1012 if (size <= purple_xfer_get_bytes_remaining(xfer)) { |
25247
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25243
diff
changeset
|
1013 purple_debug_info("jabber", "about to write %" G_GSIZE_FORMAT " bytes from IBB stream\n", |
25216
daaabfcf5c2b
Revert to using g_fopen (since we have a compatability define for old glibs)
Marcus Lundblad <ml@update.uu.se>
parents:
25213
diff
changeset
|
1014 size); |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1015 purple_circ_buffer_append(jsx->ibb_buffer, data, size); |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1016 purple_xfer_prpl_ready(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1017 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1018 /* trying to write past size of file transfers negotiated size, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1019 reject transfer to protect against malicious behaviour */ |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1020 purple_debug_error("jabber", |
25247
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25243
diff
changeset
|
1021 "IBB file transfer send more data than expected\n"); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1022 purple_xfer_cancel_remote(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1023 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1024 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1025 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1026 |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1027 static gssize |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1028 jabber_si_xfer_ibb_read(guchar **out_buffer, PurpleXfer *xfer) |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1029 { |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1030 JabberSIXfer *jsx = xfer->data; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1031 guchar *buffer; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1032 gsize size; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1033 gsize tmp; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1034 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1035 size = jsx->ibb_buffer->bufused; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1036 *out_buffer = buffer = g_malloc(size); |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1037 while ((tmp = purple_circ_buffer_get_max_read(jsx->ibb_buffer))) { |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1038 memcpy(buffer, jsx->ibb_buffer->outptr, tmp); |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1039 buffer += tmp; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1040 purple_circ_buffer_mark_read(jsx->ibb_buffer, tmp); |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1041 } |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1042 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1043 return size; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1044 } |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1045 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1046 static gboolean |
26555
50ff0162fe26
Convert IBB parser (and everything that then stems from that) to new iq-handler
Paul Aurich <paul@darkrain42.org>
parents:
26551
diff
changeset
|
1047 jabber_si_xfer_ibb_open_cb(JabberStream *js, const char *who, const char *id, |
50ff0162fe26
Convert IBB parser (and everything that then stems from that) to new iq-handler
Paul Aurich <paul@darkrain42.org>
parents:
26551
diff
changeset
|
1048 xmlnode *open) |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1049 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1050 const gchar *sid = xmlnode_get_attrib(open, "sid"); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1051 PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who); |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1052 if (xfer) { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1053 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1054 JabberIBBSession *sess = |
26555
50ff0162fe26
Convert IBB parser (and everything that then stems from that) to new iq-handler
Paul Aurich <paul@darkrain42.org>
parents:
26551
diff
changeset
|
1055 jabber_ibb_session_create_from_xmlnode(js, who, id, open, xfer); |
25247
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25243
diff
changeset
|
1056 |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1057 jabber_si_bytestreams_ibb_timeout_remove(jsx); |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1058 |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1059 if (sess) { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1060 /* setup callbacks here...*/ |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1061 jabber_ibb_session_set_data_received_callback(sess, |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1062 jabber_si_xfer_ibb_recv_data_cb); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1063 jabber_ibb_session_set_closed_callback(sess, |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1064 jabber_si_xfer_ibb_closed_cb); |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1065 jabber_ibb_session_set_error_callback(sess, |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1066 jabber_si_xfer_ibb_error_cb); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1067 |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1068 jsx->ibb_session = sess; |
30013
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29733
diff
changeset
|
1069 /* we handle up to block-size bytes of decoded data, to handle |
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29733
diff
changeset
|
1070 clients interpreting the block-size attribute as that |
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29733
diff
changeset
|
1071 (see also remark in ibb.c) */ |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1072 jsx->ibb_buffer = |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1073 purple_circ_buffer_new(jabber_ibb_session_get_block_size(sess)); |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1074 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1075 /* set up read function */ |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1076 purple_xfer_set_read_fnc(xfer, jabber_si_xfer_ibb_read); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1077 |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1078 /* start the transfer */ |
28218
6adbdd4b2963
ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <paul@darkrain42.org>
parents:
28138
diff
changeset
|
1079 purple_xfer_start(xfer, -1, NULL, 0); |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1080 return TRUE; |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1081 } else { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1082 /* failed to create IBB session */ |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1083 purple_debug_error("jabber", "failed to create IBB session\n"); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1084 purple_xfer_cancel_remote(xfer); |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1085 return FALSE; |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1086 } |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1087 } else { |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1088 /* we got an IBB <open/> for an unknown file transfer, pass along... */ |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1089 purple_debug_info("jabber", |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1090 "IBB open did not match any SI file transfer\n"); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1091 return FALSE; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1092 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1093 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1094 |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1095 static gssize |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1096 jabber_si_xfer_ibb_write(const guchar *buffer, size_t len, PurpleXfer *xfer) |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1097 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1098 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1099 JabberIBBSession *sess = jsx->ibb_session; |
30013
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29733
diff
changeset
|
1100 gsize packet_size = len < jabber_ibb_session_get_max_data_size(sess) ? |
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29733
diff
changeset
|
1101 len : jabber_ibb_session_get_max_data_size(sess); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1102 |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1103 jabber_ibb_session_send_data(sess, buffer, packet_size); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1104 |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1105 return packet_size; |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1106 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1107 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1108 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1109 jabber_si_xfer_ibb_sent_cb(JabberIBBSession *sess) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1110 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1111 PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1112 gsize remaining = purple_xfer_get_bytes_remaining(xfer); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1113 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1114 if (remaining == 0) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1115 /* close the session */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1116 jabber_ibb_session_close(sess); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1117 purple_xfer_set_completed(xfer, TRUE); |
25222
d6351b105e42
Call purple_xfer_end when ending an IBB session.
Marcus Lundblad <ml@update.uu.se>
parents:
25221
diff
changeset
|
1118 purple_xfer_end(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1119 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1120 /* send more... */ |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1121 purple_xfer_prpl_ready(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1122 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1123 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1124 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1125 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1126 jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1127 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1128 PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); |
25247
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25243
diff
changeset
|
1129 |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1130 if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) { |
28218
6adbdd4b2963
ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <paul@darkrain42.org>
parents:
28138
diff
changeset
|
1131 purple_xfer_start(xfer, -1, NULL, 0); |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1132 purple_xfer_prpl_ready(xfer); |
25224
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1133 } else { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1134 /* error */ |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1135 purple_xfer_end(xfer); |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25222
diff
changeset
|
1136 } |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1137 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1138 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1139 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1140 jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1141 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1142 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1143 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1144 jsx->ibb_session = jabber_ibb_session_create(js, jsx->stream_id, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1145 purple_xfer_get_remote_user(xfer), xfer); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1146 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1147 if (jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1148 /* should set callbacks here... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1149 jabber_ibb_session_set_opened_callback(jsx->ibb_session, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1150 jabber_si_xfer_ibb_opened_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1151 jabber_ibb_session_set_data_sent_callback(jsx->ibb_session, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1152 jabber_si_xfer_ibb_sent_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1153 jabber_ibb_session_set_closed_callback(jsx->ibb_session, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1154 jabber_si_xfer_ibb_closed_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1155 jabber_ibb_session_set_error_callback(jsx->ibb_session, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1156 jabber_si_xfer_ibb_error_cb); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1157 |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1158 purple_xfer_set_write_fnc(xfer, jabber_si_xfer_ibb_write); |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1159 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1160 jsx->ibb_buffer = |
30013
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29733
diff
changeset
|
1161 purple_circ_buffer_new(jabber_ibb_session_get_max_data_size(jsx->ibb_session)); |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1162 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1163 /* open the IBB session */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1164 jabber_ibb_session_open(jsx->ibb_session); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1165 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1166 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1167 /* failed to create IBB session */ |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1168 purple_debug_error("jabber", |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1169 "failed to initiate IBB session for file transfer\n"); |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1170 purple_xfer_cancel_local(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1171 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1172 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1173 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
1174 static void jabber_si_xfer_send_method_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
1175 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
1176 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1177 { |
15823 | 1178 PurpleXfer *xfer = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1179 xmlnode *si, *feature, *x, *field, *value; |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1180 gboolean found_method = FALSE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1181 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1182 if(!(si = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) { |
15823 | 1183 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1184 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1185 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1186 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1187 if(!(feature = xmlnode_get_child_with_namespace(si, "feature", "http://jabber.org/protocol/feature-neg"))) { |
15823 | 1188 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1189 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1190 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1191 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1192 if(!(x = xmlnode_get_child_with_namespace(feature, "x", "jabber:x:data"))) { |
15823 | 1193 purple_xfer_cancel_remote(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1194 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1195 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1196 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1197 for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1198 const char *var = xmlnode_get_attrib(field, "var"); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1199 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1200 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1201 if(var && !strcmp(var, "stream-method")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1202 if((value = xmlnode_get_child(field, "value"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1203 char *val = xmlnode_get_data(value); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1204 if(val && !strcmp(val, NS_BYTESTREAMS)) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1205 jabber_si_xfer_bytestreams_send_init(xfer); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1206 jsx->stream_method |= STREAM_METHOD_BYTESTREAMS; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1207 found_method = TRUE; |
29026
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28889
diff
changeset
|
1208 } else if (val && !strcmp(val, NS_IBB)) { |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1209 jsx->stream_method |= STREAM_METHOD_IBB; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1210 if (!found_method) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1211 /* we haven't tried to init a bytestream session, yet |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1212 start IBB right away... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1213 jabber_si_xfer_ibb_send_init(js, xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1214 found_method = TRUE; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1215 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1216 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1217 g_free(val); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1218 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1219 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1220 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1221 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1222 if (!found_method) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1223 purple_xfer_cancel_remote(xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1224 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1225 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1226 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1227 |
15823 | 1228 static void jabber_si_xfer_send_request(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1229 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1230 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1231 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1232 xmlnode *si, *file, *feature, *x, *field, *option, *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1233 char buf[32]; |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1234 #if ENABLE_FT_THUMBNAILS |
30250
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30243
diff
changeset
|
1235 gconstpointer thumb; |
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30243
diff
changeset
|
1236 gsize thumb_size; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1237 |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1238 purple_xfer_prepare_thumbnail(xfer, "jpeg,png"); |
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1239 #endif |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1240 xfer->filename = g_path_get_basename(xfer->local_filename); |
30198
afe5c224f3e9
Add code to generate a thumbnail (only fully works with GDK 2.4+ so far)
Marcus Lundblad <ml@update.uu.se>
parents:
27190
diff
changeset
|
1241 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1242 iq = jabber_iq_new(jsx->js, JABBER_IQ_SET); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1243 xmlnode_set_attrib(iq->node, "to", xfer->who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1244 si = xmlnode_new_child(iq->node, "si"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1245 xmlnode_set_namespace(si, "http://jabber.org/protocol/si"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1246 jsx->stream_id = jabber_get_next_id(jsx->js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 xmlnode_set_attrib(si, "id", jsx->stream_id); |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1248 xmlnode_set_attrib(si, "profile", NS_SI_FILE_TRANSFER); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1249 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1250 file = xmlnode_new_child(si, "file"); |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1251 xmlnode_set_namespace(file, NS_SI_FILE_TRANSFER); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1252 xmlnode_set_attrib(file, "name", xfer->filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1253 g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, xfer->size); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1254 xmlnode_set_attrib(file, "size", buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1255 /* maybe later we'll do hash and date attribs */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1256 |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1257 #if ENABLE_FT_THUMBNAILS |
30202
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1258 /* add thumbnail, if appropriate */ |
30250
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30243
diff
changeset
|
1259 if ((thumb = purple_xfer_get_thumbnail(xfer, &thumb_size))) { |
30237
25a53c299713
Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <ml@update.uu.se>
parents:
30232
diff
changeset
|
1260 const gchar *mimetype = purple_xfer_get_thumbnail_mimetype(xfer); |
25a53c299713
Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <ml@update.uu.se>
parents:
30232
diff
changeset
|
1261 JabberData *thumbnail_data = |
30250
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30243
diff
changeset
|
1262 jabber_data_create_from_data(thumb, thumb_size, |
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30243
diff
changeset
|
1263 mimetype, TRUE, jsx->js); |
30202
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1264 xmlnode *thumbnail = xmlnode_new_child(file, "thumbnail"); |
30225
4cfa6d49bee5
Added the "thumbs" namespace to namespaces.h
Marcus Lundblad <ml@update.uu.se>
parents:
30224
diff
changeset
|
1265 xmlnode_set_namespace(thumbnail, NS_THUMBS); |
30202
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1266 xmlnode_set_attrib(thumbnail, "cid", |
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1267 jabber_data_get_cid(thumbnail_data)); |
30237
25a53c299713
Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <ml@update.uu.se>
parents:
30232
diff
changeset
|
1268 xmlnode_set_attrib(thumbnail, "mime-type", mimetype); |
30202
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1269 /* cache data */ |
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1270 jabber_data_associate_local(thumbnail_data, NULL); |
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1271 } |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1272 #endif |
30202
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
30198
diff
changeset
|
1273 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1274 feature = xmlnode_new_child(si, "feature"); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
1275 xmlnode_set_namespace(feature, "http://jabber.org/protocol/feature-neg"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1276 x = xmlnode_new_child(feature, "x"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1277 xmlnode_set_namespace(x, "jabber:x:data"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1278 xmlnode_set_attrib(x, "type", "form"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1279 field = xmlnode_new_child(x, "field"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1280 xmlnode_set_attrib(field, "var", "stream-method"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1281 xmlnode_set_attrib(field, "type", "list-single"); |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
1282 /* maybe we should add an option to always skip bytestreams for people |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
1283 behind troublesome firewalls */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1284 option = xmlnode_new_child(field, "option"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1285 value = xmlnode_new_child(option, "value"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1286 xmlnode_insert_data(value, NS_BYTESTREAMS, -1); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1287 option = xmlnode_new_child(field, "option"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1288 value = xmlnode_new_child(option, "value"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1289 xmlnode_insert_data(value, NS_IBB, -1); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1290 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1291 jabber_iq_set_callback(iq, jabber_si_xfer_send_method_cb, xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1292 |
19675
a48681403103
Unregister the iq callback listener when the transfer is freed. Fixes #1804. It doesn't seem correct to me that nothing is sent to the recipient when the sender cancels the ft request, but that is a different issue.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18210
diff
changeset
|
1293 /* Store the IQ id so that we can cancel the callback */ |
a48681403103
Unregister the iq callback listener when the transfer is freed. Fixes #1804. It doesn't seem correct to me that nothing is sent to the recipient when the sender cancels the ft request, but that is a different issue.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18210
diff
changeset
|
1294 g_free(jsx->iq_id); |
a48681403103
Unregister the iq callback listener when the transfer is freed. Fixes #1804. It doesn't seem correct to me that nothing is sent to the recipient when the sender cancels the ft request, but that is a different issue.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18210
diff
changeset
|
1295 jsx->iq_id = g_strdup(iq->id); |
a48681403103
Unregister the iq callback listener when the transfer is freed. Fixes #1804. It doesn't seem correct to me that nothing is sent to the recipient when the sender cancels the ft request, but that is a different issue.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18210
diff
changeset
|
1296 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1297 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1298 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1299 |
15823 | 1300 static void jabber_si_xfer_free(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1301 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 JabberSIXfer *jsx = xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1303 |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1304 if (jsx) { |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1305 JabberStream *js = jsx->js; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1306 |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1307 js->file_transfers = g_list_remove(js->file_transfers, xfer); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1308 |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1309 if (jsx->connect_data != NULL) |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1310 purple_proxy_connect_cancel(jsx->connect_data); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1311 if (jsx->listen_data != NULL) |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1312 purple_network_listen_cancel(jsx->listen_data); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1313 if (jsx->iq_id != NULL) |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1314 jabber_iq_remove_callback_by_id(js, jsx->iq_id); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1315 if (jsx->local_streamhost_fd >= 0) |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1316 close(jsx->local_streamhost_fd); |
27190
38c4973b5222
Add a function to remove a port mapping (UPnP or NAT-PMP) given a file
Marcus Lundblad <ml@update.uu.se>
parents:
27014
diff
changeset
|
1317 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && |
38c4973b5222
Add a function to remove a port mapping (UPnP or NAT-PMP) given a file
Marcus Lundblad <ml@update.uu.se>
parents:
27014
diff
changeset
|
1318 xfer->fd >= 0) { |
38c4973b5222
Add a function to remove a port mapping (UPnP or NAT-PMP) given a file
Marcus Lundblad <ml@update.uu.se>
parents:
27014
diff
changeset
|
1319 purple_debug_info("jabber", "remove port mapping\n"); |
38c4973b5222
Add a function to remove a port mapping (UPnP or NAT-PMP) given a file
Marcus Lundblad <ml@update.uu.se>
parents:
27014
diff
changeset
|
1320 purple_network_remove_port_mapping(xfer->fd); |
38c4973b5222
Add a function to remove a port mapping (UPnP or NAT-PMP) given a file
Marcus Lundblad <ml@update.uu.se>
parents:
27014
diff
changeset
|
1321 } |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1322 if (jsx->connect_timeout > 0) |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1323 purple_timeout_remove(jsx->connect_timeout); |
25243
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
1324 if (jsx->ibb_timeout_handle > 0) |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25242
diff
changeset
|
1325 purple_timeout_remove(jsx->ibb_timeout_handle); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1326 |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1327 if (jsx->streamhosts) { |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1328 g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1329 g_list_free(jsx->streamhosts); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1330 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1331 |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1332 if (jsx->ibb_session) { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1333 purple_debug_info("jabber", |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1334 "jabber_si_xfer_free: destroying IBB session\n"); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1335 jabber_ibb_session_destroy(jsx->ibb_session); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1336 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1337 |
28224
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1338 if (jsx->ibb_buffer) { |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
28218
diff
changeset
|
1339 purple_circ_buffer_destroy(jsx->ibb_buffer); |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1340 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1341 |
28138
deecc1d663c4
Don't use pointers (even opaquely) once they're freed. Closes #9822.
Paul Aurich <paul@darkrain42.org>
parents:
27635
diff
changeset
|
1342 purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p\n", jsx); |
deecc1d663c4
Don't use pointers (even opaquely) once they're freed. Closes #9822.
Paul Aurich <paul@darkrain42.org>
parents:
27635
diff
changeset
|
1343 |
25221
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1344 g_free(jsx->stream_id); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1345 g_free(jsx->iq_id); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1346 /* XXX: free other stuff */ |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1347 g_free(jsx->rxqueue); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1348 g_free(jsx); |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25220
diff
changeset
|
1349 xfer->data = NULL; |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21561
diff
changeset
|
1350 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1351 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1352 |
25248
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1353 /* |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1354 * These four functions should only be called from the PurpleXfer functions |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1355 * (typically purple_xfer_cancel_(remote|local), purple_xfer_end, or |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1356 * purple_xfer_request_denied. |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25247
diff
changeset
|
1357 */ |
15823 | 1358 static void jabber_si_xfer_cancel_send(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1359 { |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1360 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1361 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1362 /* if there is an IBB session active, send close on that */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1363 if (jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1364 jabber_ibb_session_close(jsx->ibb_session); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1365 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1366 jabber_si_xfer_free(xfer); |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28398
diff
changeset
|
1367 purple_debug_info("jabber", "in jabber_si_xfer_cancel_send\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1368 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1369 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1370 |
15823 | 1371 static void jabber_si_xfer_request_denied(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1372 { |
27635
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1373 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1374 JabberStream *js = jsx->js; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1375 |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1376 /* |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1377 * TODO: It's probably an error if jsx->iq_id == NULL. g_return_if_fail |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1378 * might be warranted. |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1379 */ |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1380 if (jsx->iq_id && !jsx->accepted) { |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1381 JabberIq *iq; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1382 xmlnode *error, *child; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1383 iq = jabber_iq_new(js, JABBER_IQ_ERROR); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1384 xmlnode_set_attrib(iq->node, "to", xfer->who); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1385 jabber_iq_set_id(iq, jsx->iq_id); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1386 |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1387 error = xmlnode_new_child(iq->node, "error"); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1388 xmlnode_set_attrib(error, "type", "cancel"); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1389 child = xmlnode_new_child(error, "forbidden"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1390 xmlnode_set_namespace(child, NS_XMPP_STANZAS); |
27635
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1391 child = xmlnode_new_child(error, "text"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1392 xmlnode_set_namespace(child, NS_XMPP_STANZAS); |
27635
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1393 xmlnode_insert_data(child, "Offer Declined", -1); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1394 |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1395 jabber_iq_send(iq); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1396 } |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1397 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1398 jabber_si_xfer_free(xfer); |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28398
diff
changeset
|
1399 purple_debug_info("jabber", "in jabber_si_xfer_request_denied\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1400 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1401 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1402 |
15823 | 1403 static void jabber_si_xfer_cancel_recv(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1404 { |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1405 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1406 /* if there is an IBB session active, send close */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1407 if (jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1408 jabber_ibb_session_close(jsx->ibb_session); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1409 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1410 jabber_si_xfer_free(xfer); |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28398
diff
changeset
|
1411 purple_debug_info("jabber", "in jabber_si_xfer_cancel_recv\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1412 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1413 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1414 |
15823 | 1415 static void jabber_si_xfer_end(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1416 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1417 jabber_si_xfer_free(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1418 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1419 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1420 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1421 static void jabber_si_xfer_send_disco_cb(JabberStream *js, const char *who, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1422 JabberCapabilities capabilities, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1423 { |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1424 PurpleXfer *xfer = (PurpleXfer *) data; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1425 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1426 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1427 if (capabilities & JABBER_CAP_IBB) { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1428 purple_debug_info("jabber", |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1429 "jabber_si_xfer_send_disco_cb: remote JID supports IBB\n"); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1430 jsx->stream_method |= STREAM_METHOD_IBB; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1431 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1432 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1433 if (capabilities & JABBER_CAP_SI_FILE_XFER) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1434 jabber_si_xfer_send_request(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1435 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1436 char *msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who); |
15823 | 1437 purple_notify_error(js->gc, _("File Send Failed"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1438 _("File Send Failed"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1439 g_free(msg); |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1440 purple_xfer_cancel_local(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1441 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1442 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1443 |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1444 static void resource_select_cancel_cb(PurpleXfer *xfer, PurpleRequestFields *fields) |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1445 { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1446 purple_xfer_cancel_local(xfer); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1447 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1448 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1449 static void do_transfer_send(PurpleXfer *xfer, const char *resource) |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1450 { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1451 JabberSIXfer *jsx = xfer->data; |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1452 char **who_v = g_strsplit(xfer->who, "/", 2); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1453 char *who; |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1454 JabberBuddy *jb; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1455 JabberBuddyResource *jbr = NULL; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1456 |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1457 jb = jabber_buddy_find(jsx->js, who_v[0], FALSE); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1458 if (jb) { |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1459 jbr = jabber_buddy_find_resource(jb, resource); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1460 } |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1461 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1462 who = g_strdup_printf("%s/%s", who_v[0], resource); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1463 g_strfreev(who_v); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1464 g_free(xfer->who); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1465 xfer->who = who; |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1466 |
29163
6921cc1e704b
Use the jabber_resource_know_capabilities function to determine if a buddy
Marcus Lundblad <ml@update.uu.se>
parents:
29161
diff
changeset
|
1467 if (jbr && jabber_resource_know_capabilities(jbr)) { |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1468 char *msg; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1469 |
29026
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28889
diff
changeset
|
1470 if (jabber_resource_has_capability(jbr, NS_IBB)) |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1471 jsx->stream_method |= STREAM_METHOD_IBB; |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1472 if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)) { |
27634
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1473 jabber_si_xfer_send_request(xfer); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1474 return; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1475 } |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1476 |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1477 msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1478 purple_notify_error(jsx->js->gc, _("File Send Failed"), |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1479 _("File Send Failed"), msg); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1480 g_free(msg); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1481 purple_xfer_cancel_local(xfer); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1482 } else { |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1483 jabber_disco_info_do(jsx->js, who, |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1484 jabber_si_xfer_send_disco_cb, xfer); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27366
diff
changeset
|
1485 } |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1486 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1487 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1488 static void resource_select_ok_cb(PurpleXfer *xfer, PurpleRequestFields *fields) |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1489 { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1490 PurpleRequestField *field = purple_request_fields_get_field(fields, "resource"); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1491 int selected_id = purple_request_field_choice_get_value(field); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1492 GList *labels = purple_request_field_choice_get_labels(field); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1493 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1494 const char *selected_label = g_list_nth_data(labels, selected_id); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1495 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1496 do_transfer_send(xfer, selected_label); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1497 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1498 |
15823 | 1499 static void jabber_si_xfer_init(PurpleXfer *xfer) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1500 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1501 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1502 JabberIq *iq; |
15823 | 1503 if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1504 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1505 JabberBuddyResource *jbr = NULL; |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1506 char *resource; |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1507 GList *resources = NULL; |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1508 |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1509 if(NULL != (resource = jabber_get_resource(xfer->who))) { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1510 /* they've specified a resource, no need to ask or |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1511 * default or anything, just do it */ |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1512 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1513 do_transfer_send(xfer, resource); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1514 g_free(resource); |
21556
4e98fb3661cc
Prevent multiple file offers from going out with a patch from galt. Fixes #3839.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21284
diff
changeset
|
1515 return; |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1516 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1517 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1518 jb = jabber_buddy_find(jsx->js, xfer->who, TRUE); |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1519 |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1520 if (jb) { |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1521 GList *l; |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1522 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1523 for (l = jb->resources ; l ; l = g_list_next(l)) { |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1524 jbr = l->data; |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1525 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1526 if (!jabber_resource_know_capabilities(jbr) || |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1527 (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER) |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1528 && (jabber_resource_has_capability(jbr, NS_BYTESTREAMS) |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1529 || jabber_resource_has_capability(jbr, NS_IBB)))) { |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1530 resources = g_list_append(resources, jbr); |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1531 } |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1532 } |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1533 } |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1534 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1535 if (!resources) { |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1536 /* no resources online, we're trying to send to someone |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1537 * whose presence we're not subscribed to, or |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1538 * someone who is offline. Let's inform the user */ |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1539 char *msg; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1540 |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1541 if(!jb) { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1542 msg = g_strdup_printf(_("Unable to send file to %s, invalid JID"), xfer->who); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1543 } else if(jb->subscription & JABBER_SUB_TO) { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1544 msg = g_strdup_printf(_("Unable to send file to %s, user is not online"), xfer->who); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1545 } else { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1546 msg = g_strdup_printf(_("Unable to send file to %s, not subscribed to user presence"), xfer->who); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1547 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1548 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1549 purple_notify_error(jsx->js->gc, _("File Send Failed"), _("File Send Failed"), msg); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1550 g_free(msg); |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1551 } else if (g_list_length(resources) == 1) { |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1552 /* only 1 resource online (probably our most common case) |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1553 * so no need to ask who to send to */ |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1554 jbr = resources->data; |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1555 do_transfer_send(xfer, jbr->name); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1556 } else { |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1557 /* we've got multiple resources, we need to pick one to send to */ |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1558 GList *l; |
22204
a464d2bd6f01
I'm not sure how to disapprove a local change without it ever getting pushed... sorry for the double commit. I didn't intend to leave a trailing colon, since we didn't use punctuation at the end previously.
Evan Schoenberg <evan.s@dreskin.net>
parents:
22203
diff
changeset
|
1559 char *msg = g_strdup_printf(_("Please select the resource of %s to which you would like to send a file"), xfer->who); |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1560 PurpleRequestFields *fields = purple_request_fields_new(); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1561 PurpleRequestField *field = purple_request_field_choice_new("resource", _("Resource"), 0); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1562 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL); |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1563 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1564 for(l = resources; l; l = l->next) { |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1565 jbr = l->data; |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1566 purple_request_field_choice_add(field, jbr->name); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1567 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1568 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1569 purple_request_field_group_add_field(group, field); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1570 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1571 purple_request_fields_add_group(fields, group); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1572 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1573 purple_request_fields(jsx->js->gc, _("Select a Resource"), msg, NULL, fields, |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1574 _("Send File"), G_CALLBACK(resource_select_ok_cb), _("Cancel"), G_CALLBACK(resource_select_cancel_cb), |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1575 jsx->js->gc->account, xfer->who, NULL, xfer); |
17441
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1576 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15823
diff
changeset
|
1577 g_free(msg); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1578 } |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1579 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1580 g_list_free(resources); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1581 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1582 xmlnode *si, *feature, *x, *field, *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1583 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1584 iq = jabber_iq_new(jsx->js, JABBER_IQ_RESULT); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1585 xmlnode_set_attrib(iq->node, "to", xfer->who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1586 if(jsx->iq_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1587 jabber_iq_set_id(iq, jsx->iq_id); |
27635
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1588 else |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27634
diff
changeset
|
1589 purple_debug_error("jabber", "Sending SI result with new IQ id.\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1590 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1591 jsx->accepted = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1592 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1593 si = xmlnode_new_child(iq->node, "si"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1594 xmlnode_set_namespace(si, "http://jabber.org/protocol/si"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1595 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1596 feature = xmlnode_new_child(si, "feature"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1597 xmlnode_set_namespace(feature, "http://jabber.org/protocol/feature-neg"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1598 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1599 x = xmlnode_new_child(feature, "x"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1600 xmlnode_set_namespace(x, "jabber:x:data"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1601 xmlnode_set_attrib(x, "type", "submit"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1602 field = xmlnode_new_child(x, "field"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1603 xmlnode_set_attrib(field, "var", "stream-method"); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1604 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1605 /* we should maybe "remember" if bytestreams has failed before (in the |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1606 same session) with this JID, and only present IBB as an option to |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1607 avoid unnessesary timeout */ |
25241
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
1608 /* maybe we should have an account option to always just try IBB |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25236
diff
changeset
|
1609 for people who know their firewalls are very restrictive */ |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1610 if (jsx->stream_method & STREAM_METHOD_BYTESTREAMS) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1611 value = xmlnode_new_child(field, "value"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1612 xmlnode_insert_data(value, NS_BYTESTREAMS, -1); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1613 } else if(jsx->stream_method & STREAM_METHOD_IBB) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1614 value = xmlnode_new_child(field, "value"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1615 xmlnode_insert_data(value, NS_IBB, -1); |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1616 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1617 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1618 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1619 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1620 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1621 |
15823 | 1622 PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1623 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1624 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1625 |
15823 | 1626 PurpleXfer *xfer; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1627 JabberSIXfer *jsx; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1628 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1629 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1630 |
15823 | 1631 xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1632 if (xfer) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1633 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1634 xfer->data = jsx = g_new0(JabberSIXfer, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1635 jsx->js = js; |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
1636 jsx->local_streamhost_fd = -1; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1637 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1638 jsx->ibb_session = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1639 |
15823 | 1640 purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init); |
1641 purple_xfer_set_cancel_send_fnc(xfer, jabber_si_xfer_cancel_send); | |
1642 purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1643 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1644 js->file_transfers = g_list_append(js->file_transfers, xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1645 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1646 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1647 return xfer; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1648 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1649 |
15823 | 1650 void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1651 { |
15823 | 1652 PurpleXfer *xfer; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1653 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1654 xfer = jabber_si_new_xfer(gc, who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1655 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1656 if (file) |
15823 | 1657 purple_xfer_request_accepted(xfer, file); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1658 else |
15823 | 1659 purple_xfer_request(xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1660 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1661 |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1662 #if ENABLE_FT_THUMBNAILS |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1663 static void |
30242
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1664 jabber_si_thumbnail_cb(JabberData *data, gchar *alt, gpointer userdata) |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1665 { |
30242
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1666 PurpleXfer *xfer = (PurpleXfer *) userdata; |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1667 |
30242
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1668 if (data) { |
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1669 purple_xfer_set_thumbnail(xfer, jabber_data_get_data(data), |
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1670 jabber_data_get_size(data), jabber_data_get_type(data)); |
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1671 /* data is ephemeral, get rid of now (the xfer re-owned the thumbnail */ |
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1672 jabber_data_destroy(data); |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1673 } |
30242
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1674 |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1675 purple_xfer_request(xfer); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1676 } |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1677 #endif |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1678 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
1679 void jabber_si_parse(JabberStream *js, const char *from, JabberIqType type, |
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
1680 const char *id, xmlnode *si) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1681 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1682 JabberSIXfer *jsx; |
15823 | 1683 PurpleXfer *xfer; |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1684 xmlnode *file, *feature, *x, *field, *option, *value, *thumbnail; |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
1685 const char *stream_id, *filename, *filesize_c, *profile; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1686 size_t filesize = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1687 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1688 if(!(profile = xmlnode_get_attrib(si, "profile")) || |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30595
diff
changeset
|
1689 strcmp(profile, NS_SI_FILE_TRANSFER)) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1690 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1691 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1692 if(!(stream_id = xmlnode_get_attrib(si, "id"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1693 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1694 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1695 if(!(file = xmlnode_get_child(si, "file"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1696 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1697 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1698 if(!(filename = xmlnode_get_attrib(file, "name"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1699 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1700 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1701 if((filesize_c = xmlnode_get_attrib(file, "size"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1702 filesize = atoi(filesize_c); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1703 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1704 if(!(feature = xmlnode_get_child(si, "feature"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1705 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1706 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1707 if(!(x = xmlnode_get_child_with_namespace(feature, "x", "jabber:x:data"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1708 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1709 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
1710 if(!from) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1711 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1712 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1713 /* if they've already sent us this file transfer with the same damn id |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1714 * then we're gonna ignore it, until I think of something better to do |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1715 * with it */ |
30846
7c871249318b
Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30653
diff
changeset
|
1716 if(jabber_si_xfer_find(js, stream_id, from) != NULL) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1717 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1718 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1719 jsx = g_new0(JabberSIXfer, 1); |
23029
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22912
diff
changeset
|
1720 jsx->local_streamhost_fd = -1; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25264
diff
changeset
|
1721 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1722 jsx->ibb_session = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1723 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1724 for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1725 const char *var = xmlnode_get_attrib(field, "var"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1726 if(var && !strcmp(var, "stream-method")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1727 for(option = xmlnode_get_child(field, "option"); option; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1728 option = xmlnode_get_next_twin(option)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1729 if((value = xmlnode_get_child(option, "value"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1730 char *val; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1731 if((val = xmlnode_get_data(value))) { |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1732 if(!strcmp(val, NS_BYTESTREAMS)) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1733 jsx->stream_method |= STREAM_METHOD_BYTESTREAMS; |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29026
diff
changeset
|
1734 } else if(!strcmp(val, NS_IBB)) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1735 jsx->stream_method |= STREAM_METHOD_IBB; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1736 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1737 g_free(val); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1738 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1739 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1740 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1741 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1742 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1743 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1744 if(jsx->stream_method == STREAM_METHOD_UNKNOWN) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1745 g_free(jsx); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1746 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1747 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1748 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1749 jsx->js = js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1750 jsx->stream_id = g_strdup(stream_id); |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25067
diff
changeset
|
1751 jsx->iq_id = g_strdup(id); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1752 |
15823 | 1753 xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE, from); |
26309
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1754 g_return_if_fail(xfer != NULL); |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1755 |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1756 xfer->data = jsx; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1757 |
26309
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1758 purple_xfer_set_filename(xfer, filename); |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1759 if(filesize > 0) |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1760 purple_xfer_set_size(xfer, filesize); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1761 |
26309
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1762 purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init); |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1763 purple_xfer_set_request_denied_fnc(xfer, jabber_si_xfer_request_denied); |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1764 purple_xfer_set_cancel_recv_fnc(xfer, jabber_si_xfer_cancel_recv); |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1765 purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end); |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1766 |
26309
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25981
diff
changeset
|
1767 js->file_transfers = g_list_append(js->file_transfers, xfer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1768 |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1769 #if ENABLE_FT_THUMBNAILS |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1770 /* if there is a thumbnail, we should request it... */ |
30225
4cfa6d49bee5
Added the "thumbs" namespace to namespaces.h
Marcus Lundblad <ml@update.uu.se>
parents:
30224
diff
changeset
|
1771 if ((thumbnail = xmlnode_get_child_with_namespace(file, "thumbnail", |
4cfa6d49bee5
Added the "thumbs" namespace to namespaces.h
Marcus Lundblad <ml@update.uu.se>
parents:
30224
diff
changeset
|
1772 NS_THUMBS))) { |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1773 const char *cid = xmlnode_get_attrib(thumbnail, "cid"); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1774 if (cid) { |
30242
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1775 jabber_data_request(js, cid, purple_xfer_get_remote_user(xfer), |
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
30240
diff
changeset
|
1776 NULL, TRUE, jabber_si_thumbnail_cb, xfer); |
30203
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1777 } else { |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1778 purple_xfer_request(xfer); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1779 } |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1780 } else { |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1781 purple_xfer_request(xfer); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
30202
diff
changeset
|
1782 } |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1783 #else |
30263
1f5c86f79eeb
Silence a warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30256
diff
changeset
|
1784 thumbnail = NULL; /* Silence warning */ |
30256
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1785 purple_xfer_request(xfer); |
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
30250
diff
changeset
|
1786 #endif |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1787 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1788 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1789 void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1790 jabber_si_init(void) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1791 { |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26997
diff
changeset
|
1792 jabber_iq_register_handler("si", "http://jabber.org/protocol/si", jabber_si_parse); |
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26997
diff
changeset
|
1793 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1794 jabber_ibb_register_open_handler(jabber_si_xfer_ibb_open_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1795 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1796 |
23999
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1797 void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1798 jabber_si_uninit(void) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1799 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1800 jabber_ibb_unregister_open_handler(jabber_si_xfer_ibb_open_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1801 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23769
diff
changeset
|
1802 |