Mercurial > pidgin
annotate libpurple/protocols/jabber/si.c @ 30994:4458f98f42ba
Replace GdkGC with cairo calls in markerline.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Wed, 28 Jul 2010 04:15:35 +0000 |
parents | fa311a0e51c0 |
children | 7c871249318b |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15822 | 2 * purple - Jabber Protocol Plugin |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
28048
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27879
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:
27879
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:
27879
diff
changeset
|
6 * source distribution. |
15373
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 |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19676
diff
changeset
|
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15373
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:
17532
diff
changeset
|
25 #include "internal.h" |
15373
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:
17532
diff
changeset
|
27 #include "blist.h" |
15373
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" |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
30 #include "request.h" |
15373
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" |
29787
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
35 #include "data.h" |
15373
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" |
25756
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
38 #include "ibb.h" |
15373
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 |
30169
0c8d1b152b16
woops, this should remain de-activated for a while yet... :)
Marcus Lundblad <ml@update.uu.se>
parents:
30168
diff
changeset
|
43 #define ENABLE_FT_THUMBNAILS 0 |
15373
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 |
15822 | 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; |
15373
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 { |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
58 STREAM_METHOD_UNKNOWN = 0, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 STREAM_METHOD_BYTESTREAMS = 2 << 1, |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
60 STREAM_METHOD_IBB = 2 << 2, |
15373
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; |
15822 | 65 PurpleProxyInfo *gpi; |
15373
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; |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
70 int local_streamhost_fd; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
71 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
72 JabberIBBSession *ibb_session; |
25752
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
73 guint ibb_timeout_handle; |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
74 PurpleCircBuffer *ibb_buffer; |
15373
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 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
77 /* some forward declarations */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
79 |
15822 | 80 static PurpleXfer* |
15373
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) { |
15822 | 89 PurpleXfer *xfer = xfers->data; |
15373
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 |
22910
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
99 static void |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
100 jabber_si_free_streamhost(gpointer data, gpointer user_data) |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
101 { |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
102 JabberBytestreamsStreamhost *sh = data; |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
103 |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
104 if(!data) |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
105 return; |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
106 |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
107 g_free(sh->jid); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
108 g_free(sh->host); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
109 g_free(sh->zeroconf); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
110 g_free(sh); |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
111 } |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
112 |
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
113 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 |
15822 | 115 static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer); |
15373
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 { |
15822 | 120 PurpleXfer *xfer = data; |
15373
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; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 |
15822 | 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; |
15373
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 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 if(source < 0) { |
17532
efb5d0fe4895
Better error message for when a Jabber connection fails
Mark Doliner <mark@kingant.net>
parents:
17365
diff
changeset
|
135 purple_debug_warning("jabber", |
efb5d0fe4895
Better error message for when a Jabber connection fails
Mark Doliner <mark@kingant.net>
parents:
17365
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)"); |
15373
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); |
22910
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
140 jabber_si_free_streamhost(streamhost, NULL); |
15373
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; |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
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 { |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
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 } |
15373
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 |
15822 | 170 purple_xfer_start(xfer, source, NULL, -1); |
15373
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 |
25752
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
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:
25751
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:
25751
diff
changeset
|
195 { |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
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:
25751
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:
25751
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:
25751
diff
changeset
|
199 } |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
200 } |
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
201 |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
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:
25745
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:
25745
diff
changeset
|
204 { |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
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:
25745
diff
changeset
|
206 JabberSIXfer *jsx = xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
207 |
25752
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
208 if (jsx && !jsx->ibb_session) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
209 purple_debug_info("jabber", |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
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:
25745
diff
changeset
|
211 " up yet, cancel transfer"); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
212 jabber_si_bytestreams_ibb_timeout_remove(jsx); |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
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:
25745
diff
changeset
|
214 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
215 |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
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:
25745
diff
changeset
|
217 } |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
218 |
15822 | 219 static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer) |
15373
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; |
15373
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"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
237 xmlnode_set_namespace(inf, NS_XMPP_STANZAS); |
15373
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 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
diff
changeset
|
243 /* if we are the initializer, init IBB */ |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
244 purple_debug_info("jabber", |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
246 "no streamhosts found, trying IBB\n"); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
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:
25756
diff
changeset
|
248 did it, since we could have received the error <iq/> from the |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
249 receiver already... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
251 && !jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
252 jabber_si_xfer_ibb_send_init(jsx->js, xfer); |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
253 } else { |
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
254 /* setup a timeout to cancel waiting for IBB open */ |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
255 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
256 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
257 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
259 already set up... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
260 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
262 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
263 |
15373
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 |
15373
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) { |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
279 char *dstaddr, *hash; |
15822 | 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); | |
15373
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); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
293 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ |
29630
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29612
diff
changeset
|
294 hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 |
15822 | 296 jsx->connect_data = purple_proxy_connect_socks5(NULL, jsx->gpi, |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
297 hash, 0, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 jabber_si_bytestreams_connect_cb, xfer); |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
299 g_free(hash); |
15373
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 |
15373
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); |
22910
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
313 jabber_si_free_streamhost(streamhost, NULL); |
15373
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 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
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:
25433
diff
changeset
|
319 JabberIqType type, const char *id, xmlnode *query) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 { |
15822 | 321 PurpleXfer *xfer; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 JabberSIXfer *jsx; |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
323 xmlnode *streamhost; |
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
324 const char *sid; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
326 if(type != JABBER_IQ_SET) |
15373
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 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
329 if(!from) |
15373
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); |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
345 jsx->iq_id = g_strdup(id); |
15373
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; |
15373
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")) && |
15373
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); |
15373
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); |
22910
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
diff
changeset
|
362 /* If there were a lot of these, it'd be worthwhile to prepend and reverse. */ |
15373
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, |
15822 | 373 PurpleInputCondition cond) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 { |
15822 | 375 PurpleXfer *xfer = data; |
15373
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) { |
15822 | 383 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 388 purple_xfer_cancel_remote(xfer); |
15373
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 |
15822 | 396 purple_input_remove(xfer->watcher); |
15373
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 |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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:
22910
diff
changeset
|
402 * recipient sends the IQ result with <streamhost-used/> |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
403 */ |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
404 purple_debug_info("jabber", "SOCKS5 connection negotiation completed. " |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
405 "Waiting for IQ result to start file transfer.\n"); |
15373
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, |
15822 | 410 PurpleInputCondition cond) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 { |
15822 | 412 PurpleXfer *xfer = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 JabberSIXfer *jsx = xfer->data; |
25556
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:
24693
diff
changeset
|
414 char buffer[42]; /* 40 for DST.ADDR + 2 bytes for port number*/ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 int len; |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
416 char *dstaddr, *hash; |
15373
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 |
15822 | 419 purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_read_again_cb\n"); |
15373
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) { |
15822 | 422 purple_debug_info("jabber", "reading the first 5 bytes\n"); |
15373
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) { |
15822 | 427 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 430 purple_xfer_cancel_remote(xfer); |
15373
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 || |
25556
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:
24693
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:
24693
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:
24693
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:
24693
diff
changeset
|
441 jsx->rxqueue[3], jsx->rxqueue[4]); |
15822 | 442 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 445 purple_xfer_cancel_remote(xfer); |
15373
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) { |
26915
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26877
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:
26877
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:
26877
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:
26877
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:
26877
diff
changeset
|
452 len = read(source, buffer, to_read); |
15373
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) { |
15822 | 456 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 459 purple_xfer_cancel_remote(xfer); |
15373
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 |
25556
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:
24693
diff
changeset
|
467 /* Have we not read all of DST.ADDR and the following 2-byte port number? */ |
15373
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 |
15822 | 471 purple_input_remove(xfer->watcher); |
15373
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 |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
diff
changeset
|
478 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ |
29630
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29612
diff
changeset
|
479 hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
480 |
25556
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:
24693
diff
changeset
|
481 if(strncmp(hash, jsx->rxqueue + 5, 40) || |
15373
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) { |
25556
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:
24693
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:
24693
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:
24693
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:
24693
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:
24693
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:
24693
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:
24693
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:
24693
diff
changeset
|
490 hash, jsx->rxqueue + 5); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 close(source); |
15822 | 492 purple_xfer_cancel_remote(xfer); |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
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); |
15373
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 |
24693
61e0924de04a
Fix up the XMPP User Avatar SHA1 hashing so that we don't mess up the checksum
Paul Aurich <paul@darkrain42.org>
parents:
24552
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 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
501 g_free(jsx->rxqueue); |
15822 | 502 host = purple_network_get_my_ip(jsx->js->fd); |
15373
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 |
15822 | 517 xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
15373
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, |
15822 | 520 PURPLE_INPUT_WRITE); |
15373
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, |
15822 | 525 PurpleInputCondition cond) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 { |
15822 | 527 PurpleXfer *xfer = data; |
15373
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) { |
15822 | 535 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 540 purple_xfer_cancel_remote(xfer); |
15373
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 |
15822 | 548 purple_input_remove(xfer->watcher); |
15373
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 |
25556
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:
24693
diff
changeset
|
551 /* If we sent a "Success", wait for a response, otherwise give up and cancel */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 if (jsx->rxqueue[1] == 0x00) { |
15822 | 553 xfer->watcher = purple_input_add(source, PURPLE_INPUT_READ, |
15373
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; |
25556
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:
24693
diff
changeset
|
557 jsx->rxlen = 0; |
15373
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); |
15822 | 560 purple_xfer_cancel_remote(xfer); |
15373
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, |
15822 | 566 PurpleInputCondition cond) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 { |
15822 | 568 PurpleXfer *xfer = data; |
15373
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 |
15822 | 574 purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_read_cb\n"); |
15373
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 |
25556
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:
24693
diff
changeset
|
578 /** Try to read the SOCKS5 header */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
579 if(jsx->rxlen < 2) { |
15822 | 580 purple_debug_info("jabber", "reading those first two bytes\n"); |
15373
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) { |
15822 | 585 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 588 purple_xfer_cancel_remote(xfer); |
15373
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; |
26915
90e7220cf773
Fix two sizeof(size_t) != sizeof(unsigned int) warnings which could never
Paul Aurich <paul@darkrain42.org>
parents:
26877
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:
26877
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:
26877
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:
26877
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:
26877
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:
26877
diff
changeset
|
600 len = read(source, buffer, to_read); |
15373
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) { |
15822 | 604 purple_input_remove(xfer->watcher); |
15373
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); |
15822 | 607 purple_xfer_cancel_remote(xfer); |
15373
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 |
25556
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:
24693
diff
changeset
|
615 /* Have we not read all the auth. method bytes? */ |
15373
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 |
15822 | 619 purple_input_remove(xfer->watcher); |
15373
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 |
15822 | 622 purple_debug_info("jabber", "checking to make sure we're socks FIVE\n"); |
15373
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); |
15822 | 626 purple_xfer_cancel_remote(xfer); |
15373
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 |
15822 | 630 purple_debug_info("jabber", "going to test %hhu different methods\n", jsx->rxqueue[1]); |
15373
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 |
15822 | 634 purple_debug_info("jabber", "testing %hhu\n", jsx->rxqueue[i+2]); |
15373
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; |
15822 | 642 xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
15373
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, |
15822 | 646 source, PURPLE_INPUT_WRITE); |
15373
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; |
15822 | 659 xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
15373
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, |
15822 | 662 source, PURPLE_INPUT_WRITE); |
15373
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 |
15373
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, |
15822 | 678 PurpleInputCondition cond) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
679 { |
15822 | 680 PurpleXfer *xfer = data; |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
681 JabberSIXfer *jsx = xfer->data; |
23707
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23600
diff
changeset
|
682 int acceptfd, flags; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 |
15822 | 684 purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_connected_cb\n"); |
15373
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:
19681
diff
changeset
|
690 purple_debug_warning("jabber", "accept: %s\n", g_strerror(errno)); |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
691 /* Don't cancel the ft - allow it to fall to the next streamhost.*/ |
15373
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 |
15822 | 695 purple_input_remove(xfer->watcher); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
696 close(source); |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
697 jsx->local_streamhost_fd = -1; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
698 |
23707
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23600
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:
23600
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:
23600
diff
changeset
|
701 #ifndef _WIN32 |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23600
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:
23600
diff
changeset
|
703 #endif |
e21c79681c96
Use non-blocking io for direct xmpp file transfers
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23600
diff
changeset
|
704 |
15822 | 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 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
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:
25979
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:
25979
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; |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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; |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
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 |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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:
22910
diff
changeset
|
723 if (!g_list_find(js->file_transfers, xfer)) { |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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:
22910
diff
changeset
|
725 return; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
726 } |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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 */ |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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 |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
732 jsx = xfer->data; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
733 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
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:
25979
diff
changeset
|
748 jabber_si_xfer_ibb_send_init(js, xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
749 } else { |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
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:
25979
diff
changeset
|
751 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
752 } |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
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:
25979
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:
25979
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:
25979
diff
changeset
|
756 purple_xfer_cancel_remote(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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; |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
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 |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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", |
22673
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); |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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"); |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
782 purple_xfer_start(xfer, xfer->fd, NULL, -1); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
783 } else { |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
785 if (jsx->stream_method & STREAM_METHOD_IBB) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
786 purple_debug_info("jabber", |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
diff
changeset
|
789 jabber_si_xfer_ibb_send_init(jsx->js, xfer); |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
790 } else { |
25752
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
791 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
792 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
793 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
795 } else { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
796 purple_debug_info("jabber", |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
diff
changeset
|
799 } |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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 |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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:
22910
diff
changeset
|
806 if (xfer->watcher > 0) { |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
807 purple_input_remove(xfer->watcher); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
808 xfer->watcher = 0; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
809 } |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
810 if (jsx->local_streamhost_fd >= 0) { |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
811 close(jsx->local_streamhost_fd); |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
812 jsx->local_streamhost_fd = -1; |
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
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); |
15373
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 { |
15822 | 827 PurpleXfer *xfer = data; |
15373
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; |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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; |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
834 int streamhost_count = 0; |
15373
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 |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
diff
changeset
|
840 * (it seems like it shouldn't be possible */ |
15822 | 841 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) { |
842 purple_xfer_unref(xfer); | |
15373
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 |
15822 | 846 purple_xfer_unref(xfer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
847 |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
848 iq = jabber_iq_new_query(jsx->js, JABBER_IQ_SET, NS_BYTESTREAMS); |
15373
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 |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
854 /* If we successfully started listening locally */ |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
855 if (sock >= 0) { |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
856 gchar *jid; |
29101
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
857 GList *local_ips = |
29102
f1aa01ff26dd
Remove IPv6 support from _get_local_system_ips, since I couldn't get it to
Marcus Lundblad <ml@update.uu.se>
parents:
29101
diff
changeset
|
858 purple_network_get_all_local_system_ips(); |
29101
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
859 const char *public_ip; |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
860 gboolean has_public_ip = FALSE; |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
861 |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
862 jsx->local_streamhost_fd = sock; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
863 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
864 jid = g_strdup_printf("%s@%s/%s", jsx->js->user->node, |
15373
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); |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
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 |
29101
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
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:
28048
diff
changeset
|
870 |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
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:
28048
diff
changeset
|
872 while (local_ips) { |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
873 gchar *local_ip = local_ips->data; |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
874 streamhost_count++; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
875 streamhost = xmlnode_new_child(query, "streamhost"); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
876 xmlnode_set_attrib(streamhost, "jid", jid); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
diff
changeset
|
878 xmlnode_set_attrib(streamhost, "port", port); |
29101
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
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:
28048
diff
changeset
|
880 has_public_ip = TRUE; |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
881 g_free(local_ip); |
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
882 local_ips = g_list_delete_link(local_ips, local_ips); |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
883 } |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
884 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
885 /* Include the public IP (assuming that there is a port mapped somehow) */ |
29101
02f6f49da454
Add a function to enumerate all local IPs
Marcus Lundblad <ml@update.uu.se>
parents:
28048
diff
changeset
|
886 if (!has_public_ip && strcmp(public_ip, "0.0.0.0") != 0) { |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
887 streamhost_count++; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
888 streamhost = xmlnode_new_child(query, "streamhost"); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
889 xmlnode_set_attrib(streamhost, "jid", jid); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
diff
changeset
|
891 xmlnode_set_attrib(streamhost, "port", port); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
892 } |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
893 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
894 g_free(jid); |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
895 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
896 /* The listener for the local proxy */ |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
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 |
24478
88955b918197
Add missing newline in debug message.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23707
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", |
22673
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 |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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); |
22910
9004da91edd3
Reuse cleanup function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22673
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 |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
diff
changeset
|
931 if (streamhost_count == 0) { |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
932 jabber_iq_free(iq); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
933 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
diff
changeset
|
936 purple_debug_info("jabber", |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
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:
23707
diff
changeset
|
940 jabber_si_xfer_ibb_send_init(jsx->js, xfer); |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
941 } else { |
25752
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
942 jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
943 jabber_si_bytestreams_ibb_timeout_cb, xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
944 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
diff
changeset
|
947 } else { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
948 /* We should probably notify the target, |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
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:
23707
diff
changeset
|
951 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
952 |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
953 return; |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
954 } |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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 |
15373
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 |
15822 | 963 jabber_si_xfer_bytestreams_send_init(PurpleXfer *xfer) |
15373
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 |
15822 | 967 purple_xfer_ref(xfer); |
15373
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; |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
diff
changeset
|
970 |
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
diff
changeset
|
972 * (to prevent revealing IP address, etc.) */ |
15822 | 973 jsx->listen_data = purple_network_listen_range(0, 0, SOCK_STREAM, |
15373
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) { |
23364
05802d915c13
Improve error handling for xmpp file transfers.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23363
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:
23363
diff
changeset
|
977 jabber_si_xfer_bytestreams_listen_cb(-1, xfer); |
15373
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 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
982 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
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:
23707
diff
changeset
|
984 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
985 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:
23707
diff
changeset
|
986 JabberStream *js = jabber_ibb_session_get_js(sess); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
987 PurpleConnection *gc = js->gc; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
988 PurpleAccount *account = purple_connection_get_account(gc); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
989 |
27284
73c8e1964eef
A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27108
diff
changeset
|
990 purple_debug_error("jabber", "an error occurred during IBB file transfer\n"); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
991 purple_xfer_error(purple_xfer_get_type(xfer), account, |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
992 jabber_ibb_session_get_who(sess), |
27284
73c8e1964eef
A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27108
diff
changeset
|
993 _("An error occurred on the in-band bytestream transfer\n")); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
994 purple_xfer_cancel_remote(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
995 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
996 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
997 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
998 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:
23707
diff
changeset
|
999 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1000 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:
23707
diff
changeset
|
1001 JabberStream *js = jabber_ibb_session_get_js(sess); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1002 PurpleConnection *gc = js->gc; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1003 PurpleAccount *account = purple_connection_get_account(gc); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1004 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1005 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:
23707
diff
changeset
|
1006 if (purple_xfer_get_bytes_remaining(xfer) > 0) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1007 purple_xfer_error(purple_xfer_get_type(xfer), account, |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1008 jabber_ibb_session_get_who(sess), _("Transfer was closed.")); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1009 purple_xfer_cancel_remote(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1010 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1011 purple_xfer_set_completed(xfer, TRUE); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1012 purple_xfer_end(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1013 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1014 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1015 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1016 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1017 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:
23707
diff
changeset
|
1018 gsize size) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1019 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1020 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:
23707
diff
changeset
|
1021 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1022 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1023 if (size <= purple_xfer_get_bytes_remaining(xfer)) { |
25756
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1024 purple_debug_info("jabber", "about to write %" G_GSIZE_FORMAT " bytes from IBB stream\n", |
25725
daaabfcf5c2b
Revert to using g_fopen (since we have a compatability define for old glibs)
Marcus Lundblad <ml@update.uu.se>
parents:
25722
diff
changeset
|
1025 size); |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1026 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:
27874
diff
changeset
|
1027 purple_xfer_prpl_ready(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1028 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1029 /* 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:
23707
diff
changeset
|
1030 reject transfer to protect against malicious behaviour */ |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1031 purple_debug_error("jabber", |
25756
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1032 "IBB file transfer send more data than expected\n"); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1033 purple_xfer_cancel_remote(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1034 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1035 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1036 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1037 |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1038 static gssize |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1039 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:
27874
diff
changeset
|
1040 { |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1041 JabberSIXfer *jsx = xfer->data; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1042 guchar *buffer; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1043 gsize size; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1044 gsize tmp; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1045 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1046 size = jsx->ibb_buffer->bufused; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1047 *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:
27874
diff
changeset
|
1048 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:
27874
diff
changeset
|
1049 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:
27874
diff
changeset
|
1050 buffer += tmp; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1051 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:
27874
diff
changeset
|
1052 } |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1053 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1054 return size; |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1055 } |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1056 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1057 static gboolean |
26473
50ff0162fe26
Convert IBB parser (and everything that then stems from that) to new iq-handler
Paul Aurich <paul@darkrain42.org>
parents:
26469
diff
changeset
|
1058 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:
26469
diff
changeset
|
1059 xmlnode *open) |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1060 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1061 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:
23707
diff
changeset
|
1062 PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who); |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1063 if (xfer) { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1064 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1065 JabberIBBSession *sess = |
26473
50ff0162fe26
Convert IBB parser (and everything that then stems from that) to new iq-handler
Paul Aurich <paul@darkrain42.org>
parents:
26469
diff
changeset
|
1066 jabber_ibb_session_create_from_xmlnode(js, who, id, open, xfer); |
25756
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1067 |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1068 jabber_si_bytestreams_ibb_timeout_remove(jsx); |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1069 |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1070 if (sess) { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1071 /* setup callbacks here...*/ |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1072 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:
25731
diff
changeset
|
1073 jabber_si_xfer_ibb_recv_data_cb); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1074 jabber_ibb_session_set_closed_callback(sess, |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1075 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:
25731
diff
changeset
|
1076 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:
25731
diff
changeset
|
1077 jabber_si_xfer_ibb_error_cb); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1078 |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1079 jsx->ibb_session = sess; |
29612
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29339
diff
changeset
|
1080 /* 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:
29339
diff
changeset
|
1081 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:
29339
diff
changeset
|
1082 (see also remark in ibb.c) */ |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1083 jsx->ibb_buffer = |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1084 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:
27874
diff
changeset
|
1085 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1086 /* set up read function */ |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1087 purple_xfer_set_read_fnc(xfer, jabber_si_xfer_ibb_read); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1088 |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1089 /* start the transfer */ |
27874
6adbdd4b2963
ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <paul@darkrain42.org>
parents:
27800
diff
changeset
|
1090 purple_xfer_start(xfer, -1, NULL, 0); |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1091 return TRUE; |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1092 } else { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1093 /* failed to create IBB session */ |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1094 purple_debug_error("jabber", "failed to create IBB session\n"); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1095 purple_xfer_cancel_remote(xfer); |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1096 return FALSE; |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1097 } |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1098 } else { |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1099 /* we got an IBB <open/> for an unknown file transfer, pass along... */ |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1100 purple_debug_info("jabber", |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1101 "IBB open did not match any SI file transfer\n"); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1102 return FALSE; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1103 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1104 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1105 |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1106 static gssize |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1107 jabber_si_xfer_ibb_write(const guchar *buffer, size_t len, PurpleXfer *xfer) |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1108 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1109 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1110 JabberIBBSession *sess = jsx->ibb_session; |
29612
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29339
diff
changeset
|
1111 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:
29339
diff
changeset
|
1112 len : jabber_ibb_session_get_max_data_size(sess); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1113 |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1114 jabber_ibb_session_send_data(sess, buffer, packet_size); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1115 |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1116 return packet_size; |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1117 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1118 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1119 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1120 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:
23707
diff
changeset
|
1121 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1122 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:
23707
diff
changeset
|
1123 gsize remaining = purple_xfer_get_bytes_remaining(xfer); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1124 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1125 if (remaining == 0) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1126 /* close the session */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1127 jabber_ibb_session_close(sess); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1128 purple_xfer_set_completed(xfer, TRUE); |
25731
d6351b105e42
Call purple_xfer_end when ending an IBB session.
Marcus Lundblad <ml@update.uu.se>
parents:
25730
diff
changeset
|
1129 purple_xfer_end(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1130 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1131 /* send more... */ |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1132 purple_xfer_prpl_ready(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1133 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1134 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1135 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1136 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1137 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:
23707
diff
changeset
|
1138 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1139 PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); |
25756
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1140 JabberStream *js = jabber_ibb_session_get_js(sess); |
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1141 PurpleConnection *gc = js->gc; |
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1142 PurpleAccount *account = purple_connection_get_account(gc); |
151b4054ce40
Trigger error callbacks when receiving a malformed-ish packet.
Paul Aurich <paul@darkrain42.org>
parents:
25752
diff
changeset
|
1143 |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1144 if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) { |
27874
6adbdd4b2963
ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <paul@darkrain42.org>
parents:
27800
diff
changeset
|
1145 purple_xfer_start(xfer, -1, NULL, 0); |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1146 purple_xfer_prpl_ready(xfer); |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1147 } else { |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1148 /* error */ |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1149 purple_xfer_error(purple_xfer_get_type(xfer), account, |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1150 jabber_ibb_session_get_who(sess), |
25733
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1151 _("Failed to open in-band bytestream")); |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1152 purple_xfer_end(xfer); |
51cbb9be484e
Set state error on IBBSession if the receiver gives an error.
Marcus Lundblad <ml@update.uu.se>
parents:
25731
diff
changeset
|
1153 } |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1154 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1155 |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1156 static void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1157 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:
23707
diff
changeset
|
1158 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1159 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1160 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1161 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:
23707
diff
changeset
|
1162 purple_xfer_get_remote_user(xfer), xfer); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1163 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1164 if (jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1165 /* should set callbacks here... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1166 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:
23707
diff
changeset
|
1167 jabber_si_xfer_ibb_opened_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1168 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:
23707
diff
changeset
|
1169 jabber_si_xfer_ibb_sent_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1170 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:
23707
diff
changeset
|
1171 jabber_si_xfer_ibb_closed_cb); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1172 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:
23707
diff
changeset
|
1173 jabber_si_xfer_ibb_error_cb); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1174 |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1175 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:
27874
diff
changeset
|
1176 |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1177 jsx->ibb_buffer = |
29612
8f442c566ff2
jabber: Adjust amount of data to send in IBB packets so that at most block-size
Marcus Lundblad <ml@update.uu.se>
parents:
29339
diff
changeset
|
1178 purple_circ_buffer_new(jabber_ibb_session_get_max_data_size(jsx->ibb_session)); |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1179 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1180 /* open the IBB session */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1181 jabber_ibb_session_open(jsx->ibb_session); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1182 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1183 } else { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1184 /* failed to create IBB session */ |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1185 purple_debug_error("jabber", |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1186 "failed to initiate IBB session for file transfer\n"); |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1187 purple_xfer_cancel_local(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1188 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1189 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1190 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
1191 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:
25979
diff
changeset
|
1192 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:
25979
diff
changeset
|
1193 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1194 { |
15822 | 1195 PurpleXfer *xfer = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1196 xmlnode *si, *feature, *x, *field, *value; |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1197 gboolean found_method = FALSE; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1198 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1199 if(!(si = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) { |
15822 | 1200 purple_xfer_cancel_remote(xfer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1201 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1202 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1203 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1204 if(!(feature = xmlnode_get_child_with_namespace(si, "feature", "http://jabber.org/protocol/feature-neg"))) { |
15822 | 1205 purple_xfer_cancel_remote(xfer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1206 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1207 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1208 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1209 if(!(x = xmlnode_get_child_with_namespace(feature, "x", "jabber:x:data"))) { |
15822 | 1210 purple_xfer_cancel_remote(xfer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1211 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1212 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1213 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1214 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
|
1215 const char *var = xmlnode_get_attrib(field, "var"); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1216 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1217 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1218 if(var && !strcmp(var, "stream-method")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1219 if((value = xmlnode_get_child(field, "value"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1220 char *val = xmlnode_get_data(value); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1221 if(val && !strcmp(val, NS_BYTESTREAMS)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1222 jabber_si_xfer_bytestreams_send_init(xfer); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1223 jsx->stream_method |= STREAM_METHOD_BYTESTREAMS; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1224 found_method = TRUE; |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28513
diff
changeset
|
1225 } else if (val && !strcmp(val, NS_IBB)) { |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1226 jsx->stream_method |= STREAM_METHOD_IBB; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1227 if (!found_method) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1228 /* 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:
23707
diff
changeset
|
1229 start IBB right away... */ |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1230 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:
23707
diff
changeset
|
1231 found_method = TRUE; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1232 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1233 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1234 g_free(val); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1235 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1236 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1237 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1238 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1239 if (!found_method) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1240 purple_xfer_cancel_remote(xfer); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1241 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1242 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1243 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1244 |
15822 | 1245 static void jabber_si_xfer_send_request(PurpleXfer *xfer) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1246 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1248 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1249 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
|
1250 char buf[32]; |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1251 #if ENABLE_FT_THUMBNAILS |
29835
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29828
diff
changeset
|
1252 gconstpointer thumb; |
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29828
diff
changeset
|
1253 gsize thumb_size; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1254 |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1255 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:
29835
diff
changeset
|
1256 #endif |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1257 xfer->filename = g_path_get_basename(xfer->local_filename); |
29783
afe5c224f3e9
Add code to generate a thumbnail (only fully works with GDK 2.4+ so far)
Marcus Lundblad <ml@update.uu.se>
parents:
27108
diff
changeset
|
1258 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1259 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
|
1260 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
|
1261 si = xmlnode_new_child(iq->node, "si"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1262 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
|
1263 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
|
1264 xmlnode_set_attrib(si, "id", jsx->stream_id); |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1265 xmlnode_set_attrib(si, "profile", NS_SI_FILE_TRANSFER); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1266 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1267 file = xmlnode_new_child(si, "file"); |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1268 xmlnode_set_namespace(file, NS_SI_FILE_TRANSFER); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1269 xmlnode_set_attrib(file, "name", xfer->filename); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1270 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
|
1271 xmlnode_set_attrib(file, "size", buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1272 /* 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
|
1273 |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1274 #if ENABLE_FT_THUMBNAILS |
29787
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
1275 /* add thumbnail, if appropriate */ |
29835
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29828
diff
changeset
|
1276 if ((thumb = purple_xfer_get_thumbnail(xfer, &thumb_size))) { |
29822
25a53c299713
Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <ml@update.uu.se>
parents:
29817
diff
changeset
|
1277 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:
29817
diff
changeset
|
1278 JabberData *thumbnail_data = |
29835
afc9cec164e4
Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29828
diff
changeset
|
1279 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:
29828
diff
changeset
|
1280 mimetype, TRUE, jsx->js); |
29787
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
1281 xmlnode *thumbnail = xmlnode_new_child(file, "thumbnail"); |
29810
4cfa6d49bee5
Added the "thumbs" namespace to namespaces.h
Marcus Lundblad <ml@update.uu.se>
parents:
29809
diff
changeset
|
1282 xmlnode_set_namespace(thumbnail, NS_THUMBS); |
29787
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
1283 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:
29783
diff
changeset
|
1284 jabber_data_get_cid(thumbnail_data)); |
29822
25a53c299713
Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <ml@update.uu.se>
parents:
29817
diff
changeset
|
1285 xmlnode_set_attrib(thumbnail, "mime-type", mimetype); |
29787
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
1286 /* cache data */ |
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
1287 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:
29783
diff
changeset
|
1288 } |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1289 #endif |
29787
7d8b074feda2
Create the thumbnail data and include the "thumbnail" element in the file
Marcus Lundblad <ml@update.uu.se>
parents:
29783
diff
changeset
|
1290 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1291 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
|
1292 xmlnode_set_namespace(feature, "http://jabber.org/protocol/feature-neg"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1293 x = xmlnode_new_child(feature, "x"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1294 xmlnode_set_namespace(x, "jabber:x:data"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1295 xmlnode_set_attrib(x, "type", "form"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1296 field = xmlnode_new_child(x, "field"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1297 xmlnode_set_attrib(field, "var", "stream-method"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1298 xmlnode_set_attrib(field, "type", "list-single"); |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
1299 /* 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:
25745
diff
changeset
|
1300 behind troublesome firewalls */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1301 option = xmlnode_new_child(field, "option"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 value = xmlnode_new_child(option, "value"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1303 xmlnode_insert_data(value, NS_BYTESTREAMS, -1); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1304 option = xmlnode_new_child(field, "option"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1305 value = xmlnode_new_child(option, "value"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1306 xmlnode_insert_data(value, NS_IBB, -1); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1307 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1308 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
|
1309 |
19676
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
|
1310 /* 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
|
1311 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
|
1312 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
|
1313 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1314 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1315 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1316 |
15822 | 1317 static void jabber_si_xfer_free(PurpleXfer *xfer) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1318 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1319 JabberSIXfer *jsx = xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1320 |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1321 if (jsx) { |
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1322 JabberStream *js = jsx->js; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1323 |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1324 js->file_transfers = g_list_remove(js->file_transfers, xfer); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1325 |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1326 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:
25729
diff
changeset
|
1327 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:
25729
diff
changeset
|
1328 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:
25729
diff
changeset
|
1329 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:
25729
diff
changeset
|
1330 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:
25729
diff
changeset
|
1331 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:
25729
diff
changeset
|
1332 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:
25729
diff
changeset
|
1333 close(jsx->local_streamhost_fd); |
27108
38c4973b5222
Add a function to remove a port mapping (UPnP or NAT-PMP) given a file
Marcus Lundblad <ml@update.uu.se>
parents:
26932
diff
changeset
|
1334 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:
26932
diff
changeset
|
1335 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:
26932
diff
changeset
|
1336 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:
26932
diff
changeset
|
1337 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:
26932
diff
changeset
|
1338 } |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1339 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:
25729
diff
changeset
|
1340 purple_timeout_remove(jsx->connect_timeout); |
25752
2faa374df334
Remove timeout for IBB when receiving an IBB session open from the initiator
Marcus Lundblad <ml@update.uu.se>
parents:
25751
diff
changeset
|
1341 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:
25751
diff
changeset
|
1342 purple_timeout_remove(jsx->ibb_timeout_handle); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1343 |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1344 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:
25729
diff
changeset
|
1345 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:
25729
diff
changeset
|
1346 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:
25729
diff
changeset
|
1347 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1348 |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1349 if (jsx->ibb_session) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1350 purple_debug_info("jabber", |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1351 "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:
25729
diff
changeset
|
1352 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:
25729
diff
changeset
|
1353 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1354 |
27879
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1355 if (jsx->ibb_buffer) { |
b2dd32ce7353
jabber: Migrate IBB to the new code added in the previous commit.
Paul Aurich <paul@darkrain42.org>
parents:
27874
diff
changeset
|
1356 purple_circ_buffer_destroy(jsx->ibb_buffer); |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1357 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1358 |
27800
deecc1d663c4
Don't use pointers (even opaquely) once they're freed. Closes #9822.
Paul Aurich <paul@darkrain42.org>
parents:
27559
diff
changeset
|
1359 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:
27559
diff
changeset
|
1360 |
25730
6e0f1532eb3d
Check don't try to free the JabberSIXfer if it's already been freed.
Marcus Lundblad <ml@update.uu.se>
parents:
25729
diff
changeset
|
1361 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:
25729
diff
changeset
|
1362 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:
25729
diff
changeset
|
1363 /* 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:
25729
diff
changeset
|
1364 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:
25729
diff
changeset
|
1365 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:
25729
diff
changeset
|
1366 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
|
1367 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1368 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1369 |
25757
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1370 /* |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1371 * These four functions should only be called from the PurpleXfer functions |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1372 * (typically purple_xfer_cancel_(remote|local), purple_xfer_end, or |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1373 * purple_xfer_request_denied. |
4b51394fd834
Standardize all the IBB stream cleanup
Paul Aurich <paul@darkrain42.org>
parents:
25756
diff
changeset
|
1374 */ |
15822 | 1375 static void jabber_si_xfer_cancel_send(PurpleXfer *xfer) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1376 { |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1377 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1378 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1379 /* 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:
23707
diff
changeset
|
1380 if (jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1381 jabber_ibb_session_close(jsx->ibb_session); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1382 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1383 jabber_si_xfer_free(xfer); |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28048
diff
changeset
|
1384 purple_debug_info("jabber", "in jabber_si_xfer_cancel_send\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1385 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1386 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1387 |
15822 | 1388 static void jabber_si_xfer_request_denied(PurpleXfer *xfer) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1389 { |
27559
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1390 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1391 JabberStream *js = jsx->js; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1392 |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1393 /* |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1394 * 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:
27558
diff
changeset
|
1395 * might be warranted. |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1396 */ |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1397 if (jsx->iq_id && !jsx->accepted) { |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1398 JabberIq *iq; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1399 xmlnode *error, *child; |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1400 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:
27558
diff
changeset
|
1401 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:
27558
diff
changeset
|
1402 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:
27558
diff
changeset
|
1403 |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1404 error = xmlnode_new_child(iq->node, "error"); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1405 xmlnode_set_attrib(error, "type", "cancel"); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1406 child = xmlnode_new_child(error, "forbidden"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1407 xmlnode_set_namespace(child, NS_XMPP_STANZAS); |
27559
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1408 child = xmlnode_new_child(error, "text"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1409 xmlnode_set_namespace(child, NS_XMPP_STANZAS); |
27559
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1410 xmlnode_insert_data(child, "Offer Declined", -1); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1411 |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1412 jabber_iq_send(iq); |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1413 } |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1414 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1415 jabber_si_xfer_free(xfer); |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28048
diff
changeset
|
1416 purple_debug_info("jabber", "in jabber_si_xfer_request_denied\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1417 } |
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 |
15822 | 1420 static void jabber_si_xfer_cancel_recv(PurpleXfer *xfer) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1421 { |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1422 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1423 /* 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:
23707
diff
changeset
|
1424 if (jsx->ibb_session) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1425 jabber_ibb_session_close(jsx->ibb_session); |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1426 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1427 jabber_si_xfer_free(xfer); |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28048
diff
changeset
|
1428 purple_debug_info("jabber", "in jabber_si_xfer_cancel_recv\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1429 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1430 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1431 |
15822 | 1432 static void jabber_si_xfer_end(PurpleXfer *xfer) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1433 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1434 jabber_si_xfer_free(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1435 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1436 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1437 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1438 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
|
1439 JabberCapabilities capabilities, gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1440 { |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1441 PurpleXfer *xfer = (PurpleXfer *) data; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1442 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1443 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1444 if (capabilities & JABBER_CAP_IBB) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1445 purple_debug_info("jabber", |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1446 "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:
23707
diff
changeset
|
1447 jsx->stream_method |= STREAM_METHOD_IBB; |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1448 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1449 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1450 if (capabilities & JABBER_CAP_SI_FILE_XFER) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1451 jabber_si_xfer_send_request(xfer); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1452 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1453 char *msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who); |
15822 | 1454 purple_notify_error(js->gc, _("File Send Failed"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1455 _("File Send Failed"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1456 g_free(msg); |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1457 purple_xfer_cancel_local(xfer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1458 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1459 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1460 |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1461 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:
15822
diff
changeset
|
1462 { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1463 purple_xfer_cancel_local(xfer); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1464 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1465 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1466 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:
15822
diff
changeset
|
1467 { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1468 JabberSIXfer *jsx = xfer->data; |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1469 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:
15822
diff
changeset
|
1470 char *who; |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1471 JabberBuddy *jb; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1472 JabberBuddyResource *jbr = NULL; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1473 |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1474 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:
27284
diff
changeset
|
1475 if (jb) { |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1476 jbr = jabber_buddy_find_resource(jb, resource); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1477 } |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1478 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1479 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:
15822
diff
changeset
|
1480 g_strfreev(who_v); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1481 g_free(xfer->who); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1482 xfer->who = who; |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1483 |
28781
6921cc1e704b
Use the jabber_resource_know_capabilities function to determine if a buddy
Marcus Lundblad <ml@update.uu.se>
parents:
28779
diff
changeset
|
1484 if (jbr && jabber_resource_know_capabilities(jbr)) { |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1485 char *msg; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1486 |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28513
diff
changeset
|
1487 if (jabber_resource_has_capability(jbr, NS_IBB)) |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1488 jsx->stream_method |= STREAM_METHOD_IBB; |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1489 if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)) { |
27558
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1490 jabber_si_xfer_send_request(xfer); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1491 return; |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1492 } |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1493 |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1494 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:
27284
diff
changeset
|
1495 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:
27284
diff
changeset
|
1496 _("File Send Failed"), msg); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1497 g_free(msg); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1498 purple_xfer_cancel_local(xfer); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1499 } else { |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1500 jabber_disco_info_do(jsx->js, who, |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1501 jabber_si_xfer_send_disco_cb, xfer); |
636c3b6c9cc7
Use Entity Caps for determining file transfer abilities, if possible.
Paul Aurich <paul@darkrain42.org>
parents:
27284
diff
changeset
|
1502 } |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1503 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1504 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1505 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:
15822
diff
changeset
|
1506 { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1507 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:
15822
diff
changeset
|
1508 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:
15822
diff
changeset
|
1509 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:
15822
diff
changeset
|
1510 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1511 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:
15822
diff
changeset
|
1512 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1513 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:
15822
diff
changeset
|
1514 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1515 |
15822 | 1516 static void jabber_si_xfer_init(PurpleXfer *xfer) |
15373
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 JabberSIXfer *jsx = xfer->data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1519 JabberIq *iq; |
15822 | 1520 if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1521 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1522 JabberBuddyResource *jbr = NULL; |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1523 char *resource; |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1524 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:
30169
diff
changeset
|
1525 |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1526 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:
15822
diff
changeset
|
1527 /* 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:
15822
diff
changeset
|
1528 * 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:
15822
diff
changeset
|
1529 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1530 do_transfer_send(xfer, resource); |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1531 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
|
1532 return; |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1533 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1534 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1535 jb = jabber_buddy_find(jsx->js, xfer->who, TRUE); |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1536 |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1537 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:
30169
diff
changeset
|
1538 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:
30169
diff
changeset
|
1539 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1540 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:
30169
diff
changeset
|
1541 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:
30169
diff
changeset
|
1542 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1543 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:
30169
diff
changeset
|
1544 (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:
30169
diff
changeset
|
1545 && (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:
30169
diff
changeset
|
1546 || 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:
30169
diff
changeset
|
1547 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:
30169
diff
changeset
|
1548 } |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1549 } |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1550 } |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1551 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1552 if (!resources) { |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1553 /* 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:
15822
diff
changeset
|
1554 * 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:
15822
diff
changeset
|
1555 * 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:
15822
diff
changeset
|
1556 char *msg; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1557 |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1558 if(!jb) { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1559 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:
15822
diff
changeset
|
1560 } 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:
15822
diff
changeset
|
1561 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:
15822
diff
changeset
|
1562 } else { |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1563 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:
15822
diff
changeset
|
1564 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1565 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1566 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:
15822
diff
changeset
|
1567 g_free(msg); |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1568 } else if (g_list_length(resources) == 1) { |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1569 /* 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:
15822
diff
changeset
|
1570 * so no need to ask who to send to */ |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1571 jbr = resources->data; |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1572 do_transfer_send(xfer, jbr->name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1573 } else { |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1574 /* 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:
15822
diff
changeset
|
1575 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
|
1576 char *msg = g_strdup_printf(_("Please select the resource of %s to which you would like to send a file"), xfer->who); |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1577 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:
15822
diff
changeset
|
1578 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:
15822
diff
changeset
|
1579 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL); |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1580 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1581 for(l = resources; l; l = l->next) { |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1582 jbr = l->data; |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1583 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:
15822
diff
changeset
|
1584 } |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1585 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1586 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:
15822
diff
changeset
|
1587 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1588 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:
15822
diff
changeset
|
1589 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1590 purple_request_fields(jsx->js->gc, _("Select a Resource"), msg, NULL, fields, |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1591 _("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
|
1592 jsx->js->gc->account, xfer->who, NULL, xfer); |
17365
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1593 |
cc1b4d2e5a9b
if there are multiple resources available, ask the user which resource to
Nathan Walp <nwalp@pidgin.im>
parents:
15822
diff
changeset
|
1594 g_free(msg); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1595 } |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1596 |
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1597 g_list_free(resources); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1598 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1599 xmlnode *si, *feature, *x, *field, *value; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1600 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1601 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
|
1602 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
|
1603 if(jsx->iq_id) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1604 jabber_iq_set_id(iq, jsx->iq_id); |
27559
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1605 else |
97eb110550ad
Properly send rejection to initiator if we reject a transfer.
Paul Aurich <paul@darkrain42.org>
parents:
27558
diff
changeset
|
1606 purple_debug_error("jabber", "Sending SI result with new IQ id.\n"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1607 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1608 jsx->accepted = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1609 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1610 si = xmlnode_new_child(iq->node, "si"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1611 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
|
1612 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1613 feature = xmlnode_new_child(si, "feature"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1614 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
|
1615 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1616 x = xmlnode_new_child(feature, "x"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1617 xmlnode_set_namespace(x, "jabber:x:data"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1618 xmlnode_set_attrib(x, "type", "submit"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1619 field = xmlnode_new_child(x, "field"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1620 xmlnode_set_attrib(field, "var", "stream-method"); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1621 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1622 /* 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:
23707
diff
changeset
|
1623 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:
23707
diff
changeset
|
1624 avoid unnessesary timeout */ |
25750
5d65993761c1
Add timeout when receiver waits for initiator to open an IBB session
Marcus Lundblad <ml@update.uu.se>
parents:
25745
diff
changeset
|
1625 /* 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:
25745
diff
changeset
|
1626 for people who know their firewalls are very restrictive */ |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1627 if (jsx->stream_method & STREAM_METHOD_BYTESTREAMS) { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1628 value = xmlnode_new_child(field, "value"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1629 xmlnode_insert_data(value, NS_BYTESTREAMS, -1); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1630 } 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:
23707
diff
changeset
|
1631 value = xmlnode_new_child(field, "value"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1632 xmlnode_insert_data(value, NS_IBB, -1); |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1633 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1634 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1635 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1636 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1637 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1638 |
15822 | 1639 PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1640 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1641 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1642 |
15822 | 1643 PurpleXfer *xfer; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1644 JabberSIXfer *jsx; |
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 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1647 |
15822 | 1648 xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1649 if (xfer) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1650 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1651 xfer->data = jsx = g_new0(JabberSIXfer, 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1652 jsx->js = js; |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
1653 jsx->local_streamhost_fd = -1; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1654 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1655 jsx->ibb_session = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1656 |
15822 | 1657 purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init); |
1658 purple_xfer_set_cancel_send_fnc(xfer, jabber_si_xfer_cancel_send); | |
1659 purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end); | |
15373
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 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
|
1662 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1663 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1664 return xfer; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1665 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1666 |
15822 | 1667 void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1668 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1669 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1670 |
15822 | 1671 PurpleXfer *xfer; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1672 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1673 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1674 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1675 xfer = jabber_si_new_xfer(gc, who); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1676 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1677 if (file) |
15822 | 1678 purple_xfer_request_accepted(xfer, file); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1679 else |
15822 | 1680 purple_xfer_request(xfer); |
15373
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 |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1683 #if ENABLE_FT_THUMBNAILS |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1684 static void |
29827
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
29825
diff
changeset
|
1685 jabber_si_thumbnail_cb(JabberData *data, gchar *alt, gpointer userdata) |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1686 { |
29827
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
29825
diff
changeset
|
1687 PurpleXfer *xfer = (PurpleXfer *) userdata; |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1688 |
29827
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
29825
diff
changeset
|
1689 if (data) { |
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
29825
diff
changeset
|
1690 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:
29825
diff
changeset
|
1691 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:
29825
diff
changeset
|
1692 /* 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:
29825
diff
changeset
|
1693 jabber_data_destroy(data); |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1694 } |
29827
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
29825
diff
changeset
|
1695 |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1696 purple_xfer_request(xfer); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1697 } |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1698 #endif |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1699 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
1700 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:
25433
diff
changeset
|
1701 const char *id, xmlnode *si) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1702 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1703 JabberSIXfer *jsx; |
15822 | 1704 PurpleXfer *xfer; |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1705 xmlnode *file, *feature, *x, *field, *option, *value, *thumbnail; |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
1706 const char *stream_id, *filename, *filesize_c, *profile; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1707 size_t filesize = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1708 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1709 if(!(profile = xmlnode_get_attrib(si, "profile")) || |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30169
diff
changeset
|
1710 strcmp(profile, NS_SI_FILE_TRANSFER)) |
15373
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(!(stream_id = xmlnode_get_attrib(si, "id"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1714 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1715 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1716 if(!(file = xmlnode_get_child(si, "file"))) |
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 if(!(filename = xmlnode_get_attrib(file, "name"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1720 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1721 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1722 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
|
1723 filesize = atoi(filesize_c); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1724 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1725 if(!(feature = xmlnode_get_child(si, "feature"))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1726 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1727 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1728 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
|
1729 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1730 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
1731 if(!from) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1732 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1733 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1734 /* 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
|
1735 * 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
|
1736 * with it */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1737 if((xfer = jabber_si_xfer_find(js, stream_id, from))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1738 return; |
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 jsx = g_new0(JabberSIXfer, 1); |
23027
3c33405fd630
applied changes from 904a276588f7de13ba13b578905c82c0493184ce
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22910
diff
changeset
|
1741 jsx->local_streamhost_fd = -1; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25773
diff
changeset
|
1742 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1743 jsx->ibb_session = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1744 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1745 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
|
1746 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
|
1747 if(var && !strcmp(var, "stream-method")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1748 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
|
1749 option = xmlnode_get_next_twin(option)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1750 if((value = xmlnode_get_child(option, "value"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1751 char *val; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1752 if((val = xmlnode_get_data(value))) { |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1753 if(!strcmp(val, NS_BYTESTREAMS)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1754 jsx->stream_method |= STREAM_METHOD_BYTESTREAMS; |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
1755 } else if(!strcmp(val, NS_IBB)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1756 jsx->stream_method |= STREAM_METHOD_IBB; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1757 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1758 g_free(val); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1759 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1760 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1761 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1762 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1763 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1764 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1765 if(jsx->stream_method == STREAM_METHOD_UNKNOWN) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1766 g_free(jsx); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1767 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1768 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1769 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1770 jsx->js = js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1771 jsx->stream_id = g_strdup(stream_id); |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25433
diff
changeset
|
1772 jsx->iq_id = g_strdup(id); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1773 |
15822 | 1774 xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE, from); |
26227
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25973
diff
changeset
|
1775 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:
25973
diff
changeset
|
1776 |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25973
diff
changeset
|
1777 xfer->data = jsx; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1778 |
26227
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25973
diff
changeset
|
1779 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:
25973
diff
changeset
|
1780 if(filesize > 0) |
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25973
diff
changeset
|
1781 purple_xfer_set_size(xfer, filesize); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1782 |
26227
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25973
diff
changeset
|
1783 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:
25973
diff
changeset
|
1784 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:
25973
diff
changeset
|
1785 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:
25973
diff
changeset
|
1786 purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end); |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1787 |
26227
58daeb191c10
purple_xfer_new only returns NULL if an assertion fails, so we should do
Mark Doliner <mark@kingant.net>
parents:
25973
diff
changeset
|
1788 js->file_transfers = g_list_append(js->file_transfers, xfer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1789 |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1790 #if ENABLE_FT_THUMBNAILS |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1791 /* if there is a thumbnail, we should request it... */ |
29810
4cfa6d49bee5
Added the "thumbs" namespace to namespaces.h
Marcus Lundblad <ml@update.uu.se>
parents:
29809
diff
changeset
|
1792 if ((thumbnail = xmlnode_get_child_with_namespace(file, "thumbnail", |
4cfa6d49bee5
Added the "thumbs" namespace to namespaces.h
Marcus Lundblad <ml@update.uu.se>
parents:
29809
diff
changeset
|
1793 NS_THUMBS))) { |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1794 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:
29787
diff
changeset
|
1795 if (cid) { |
29827
93f6a5d48a46
Updated to use new BoB request functionallity
Marcus Lundblad <ml@update.uu.se>
parents:
29825
diff
changeset
|
1796 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:
29825
diff
changeset
|
1797 NULL, TRUE, jabber_si_thumbnail_cb, xfer); |
29788
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1798 } else { |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1799 purple_xfer_request(xfer); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1800 } |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1801 } else { |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1802 purple_xfer_request(xfer); |
259a331e4de7
Actually request the thumbnail when getting one in an offer.
Marcus Lundblad <ml@update.uu.se>
parents:
29787
diff
changeset
|
1803 } |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1804 #else |
29848
1f5c86f79eeb
Silence a warning.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29841
diff
changeset
|
1805 thumbnail = NULL; /* Silence warning */ |
29841
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1806 purple_xfer_request(xfer); |
f3a573191e43
Disable thumbnails for XMPP (in si.c) by using an #define
Marcus Lundblad <ml@update.uu.se>
parents:
29835
diff
changeset
|
1807 #endif |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1808 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1809 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1810 void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1811 jabber_si_init(void) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1812 { |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26915
diff
changeset
|
1813 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:
26915
diff
changeset
|
1814 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1815 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:
23707
diff
changeset
|
1816 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1817 |
25129
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1818 void |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1819 jabber_si_uninit(void) |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1820 { |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1821 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:
23707
diff
changeset
|
1822 } |
b4ec5481a67a
Implements file transfers using in-band bytestreams for XMPP
Marcus Lundblad <ml@update.uu.se>
parents:
23707
diff
changeset
|
1823 |