Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
1 | /* |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
2 | * purple - Bonjour Protocol Plugin |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
3 | * |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
4 | * Purple is the legal property of its developers, whose names are too numerous |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
6 | * source distribution. |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
7 | * |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
8 | * This program is free software; you can redistribute it and/or modify |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
9 | * it under the terms of the GNU General Public License as published by |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
10 | * the Free Software Foundation; either version 2 of the License, or |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
11 | * (at your option) any later version. |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
12 | * |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
13 | * This program is distributed in the hope that it will be useful, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
16 | * GNU General Public License for more details. |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
17 | * |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
19 | * along with this program; if not, write to the Free Software |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
21 | */ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
22 | #include "internal.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
23 | #include "util.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
24 | #include "debug.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
25 | #include "notify.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
26 | #include "proxy.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
27 | #include "ft.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
28 | #include "buddy.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
29 | #include "bonjour.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
30 | #include "bonjour_ft.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
31 | #include "cipher.h" |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
32 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
33 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
34 | bonjour_bytestreams_init(PurpleXfer *xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
35 | static void |
|
21618
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
36 | bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
37 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
38 | bonjour_xfer_init(PurpleXfer *xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
39 | static void |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
40 | bonjour_xfer_receive(PurpleConnection *pc, const char *id, const char *sid, const char *from, |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
41 | const int filesize, const char *filename, int option); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
42 | static void bonjour_free_xfer(PurpleXfer *xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
43 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
44 | /* Look for specific xfer handle */ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
45 | static unsigned int next_id = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
46 | |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
47 | static void |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
48 | xep_ft_si_reject(BonjourData *bd, const char *id, const char *to, const char *error_code, const char *error_type) |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
49 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
50 | xmlnode *error_node; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
51 | XepIq *iq; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
52 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
53 | g_return_if_fail(error_code != NULL); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
54 | g_return_if_fail(error_type != NULL); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
55 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
56 | if(!to || !id) |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
57 | return; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
58 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
59 | purple_debug_info("bonjour", "xep file transfer stream initialization error.\n"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
60 | iq = xep_iq_new(bd, XEP_IQ_ERROR, to, purple_account_get_username(bd->jabber_data->account), id); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
61 | if(iq == NULL) |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
62 | return; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
63 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
64 | error_node = xmlnode_new_child(iq->node, "error"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
65 | xmlnode_set_attrib(error_node, "code", error_code); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
66 | xmlnode_set_attrib(error_node, "type", error_type); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
67 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
68 | /* TODO: Make this better */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
69 | if (!strcmp(error_code, "403")) { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
70 | xmlnode *tmp_node = xmlnode_new_child(error_node, "forbidden"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
71 | xmlnode_set_namespace(tmp_node, "urn:ietf:params:xml:ns:xmpp-stanzas"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
72 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
73 | tmp_node = xmlnode_new_child(error_node, "text"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
74 | xmlnode_set_namespace(tmp_node, "urn:ietf:params:xml:ns:xmpp-stanzas"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
75 | xmlnode_insert_data(tmp_node, "Offer Declined", -1); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
76 | } else if (!strcmp(error_code, "404")) { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
77 | xmlnode *tmp_node = xmlnode_new_child(error_node, "item-not-found"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
78 | xmlnode_set_namespace(tmp_node, "urn:ietf:params:xml:ns:xmpp-stanzas"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
79 | } |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
80 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
81 | xep_iq_send_and_free(iq); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
82 | } |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
83 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
84 | static void bonjour_xfer_cancel_send(PurpleXfer *xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
85 | { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
86 | purple_debug_info("bonjour", "Bonjour-xfer-cancel-send.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
87 | bonjour_free_xfer(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
88 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
89 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
90 | static void bonjour_xfer_request_denied(PurpleXfer *xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
91 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
92 | XepXfer *xf = xfer->data; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
93 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
94 | purple_debug_info("bonjour", "Bonjour-xfer-request-denied.\n"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
95 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
96 | if(xf) |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
97 | xep_ft_si_reject(xf->data, xf->sid, xfer->who, "403", "cancel"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
98 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
99 | bonjour_free_xfer(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
100 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
101 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
102 | static void bonjour_xfer_cancel_recv(PurpleXfer *xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
103 | { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
104 | purple_debug_info("bonjour", "Bonjour-xfer-cancel-recv.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
105 | bonjour_free_xfer(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
106 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
107 | |
|
21550
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
108 | struct socket_cleanup { |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
109 | int fd; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
110 | guint handle; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
111 | }; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
112 | |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
113 | static void |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
114 | _wait_for_socket_close(gpointer data, gint source, PurpleInputCondition cond) |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
115 | { |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
116 | struct socket_cleanup *sc = data; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
117 | char buf[1]; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
118 | int ret; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
119 | |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
120 | ret = recv(source, buf, 1, 0); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
121 | |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
122 | if (ret == 0 || (ret == -1 && !(errno == EAGAIN || errno == EWOULDBLOCK))) { |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
123 | purple_debug_info("bonjour", "Client completed recieving; closing server socket.\n"); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
124 | purple_input_remove(sc->handle); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
125 | close(sc->fd); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
126 | g_free(sc); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
127 | } |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
128 | } |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
129 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
130 | static void bonjour_xfer_end(PurpleXfer *xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
131 | { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
132 | purple_debug_info("bonjour", "Bonjour-xfer-end.\n"); |
|
21550
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
133 | |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
134 | /* We can't allow the server side to close the connection until the client is complete, |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
135 | * otherwise there is a RST resulting in an error on the client side */ |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
136 | if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && purple_xfer_is_completed(xfer)) { |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
137 | struct socket_cleanup *sc = g_new0(struct socket_cleanup, 1); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
138 | sc->fd = xfer->fd; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
139 | xfer->fd = -1; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
140 | sc->handle = purple_input_add(sc->fd, PURPLE_INPUT_READ, |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
141 | _wait_for_socket_close, sc); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
142 | } |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
143 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
144 | bonjour_free_xfer(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
145 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
146 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
147 | static PurpleXfer* |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
148 | bonjour_si_xfer_find(BonjourData *bd, const char *sid, const char *from) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
149 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
150 | GSList *xfers; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
151 | PurpleXfer *xfer; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
152 | XepXfer *xf; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
153 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
154 | if(!sid || !from || !bd) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
155 | return NULL; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
156 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
157 | purple_debug_info("bonjour", "Look for sid=%s from=%s xferlists.\n", |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
158 | sid, from); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
159 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
160 | for(xfers = bd->xfer_lists; xfers; xfers = xfers->next) { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
161 | xfer = xfers->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
162 | if(xfer == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
163 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
164 | xf = xfer->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
165 | if(xf == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
166 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
167 | if(xf->sid && xfer->who && !strcmp(xf->sid, sid) && |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
168 | !strcmp(xfer->who, from)) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
169 | return xfer; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
170 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
171 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
172 | purple_debug_info("bonjour", "Look for xfer list fail\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
173 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
174 | return NULL; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
175 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
176 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
177 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
178 | xep_ft_si_offer(PurpleXfer *xfer, const gchar *to) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
179 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
180 | xmlnode *si_node, *feature, *field, *file, *x; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
181 | XepIq *iq; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
182 | XepXfer *xf = xfer->data; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
183 | BonjourData *bd = NULL; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
184 | char buf[32]; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
185 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
186 | if(!xf) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
187 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
188 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
189 | bd = xf->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
190 | if(!bd) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
191 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
192 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
193 | purple_debug_info("bonjour", "xep file transfer stream initialization offer-id=%d.\n", next_id); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
194 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
195 | /* Assign stream id. */ |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
196 | g_free(xf->iq_id); |
|
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
197 | xf->iq_id = g_strdup_printf("%u", next_id++); |
|
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
198 | iq = xep_iq_new(xf->data, XEP_IQ_SET, to, purple_account_get_username(bd->jabber_data->account), xf->iq_id); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
199 | if(iq == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
200 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
201 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
202 | /*Construct Stream initialization offer message.*/ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
203 | si_node = xmlnode_new_child(iq->node, "si"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
204 | xmlnode_set_namespace(si_node, "http://jabber.org/protocol/si"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
205 | xmlnode_set_attrib(si_node, "profile", "http://jabber.org/protocol/si/profile/file-transfer"); |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
206 | g_free(xf->sid); |
|
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
207 | xf->sid = g_strdup(xf->iq_id); |
|
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
208 | xmlnode_set_attrib(si_node, "id", xf->sid); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
209 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
210 | file = xmlnode_new_child(si_node, "file"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
211 | xmlnode_set_namespace(file, "http://jabber.org/protocol/si/profile/file-transfer"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
212 | xmlnode_set_attrib(file, "name", xfer->filename); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
213 | g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, xfer->size); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
214 | xmlnode_set_attrib(file, "size", buf); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
215 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
216 | feature = xmlnode_new_child(si_node, "feature"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
217 | xmlnode_set_namespace(feature, "http://jabber.org/protocol/feature-neg"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
218 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
219 | x = xmlnode_new_child(feature, "x"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
220 | xmlnode_set_namespace(x, "jabber:x:data"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
221 | xmlnode_set_attrib(x, "type", "form"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
222 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
223 | field = xmlnode_new_child(x, "field"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
224 | xmlnode_set_attrib(field, "var", "stream-method"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
225 | xmlnode_set_attrib(field, "type", "list-single"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
226 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
227 | if (xf->mode & XEP_BYTESTREAMS) { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
228 | xmlnode *option = xmlnode_new_child(field, "option"); |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
229 | xmlnode *value = xmlnode_new_child(option, "value"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
230 | xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
231 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
232 | if (xf->mode & XEP_IBB) { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
233 | xmlnode *option = xmlnode_new_child(field, "option"); |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
234 | xmlnode *value = xmlnode_new_child(option, "value"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
235 | xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
236 | } |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
237 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
238 | xep_iq_send_and_free(iq); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
239 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
240 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
241 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
242 | xep_ft_si_result(PurpleXfer *xfer, char *to) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
243 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
244 | xmlnode *si_node, *feature, *field, *value, *x; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
245 | XepIq *iq; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
246 | XepXfer *xf; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
247 | BonjourData *bd; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
248 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
249 | if(!to || !xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
250 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
251 | xf = xfer->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
252 | if(!xf) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
253 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
254 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
255 | bd = xf->data; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
256 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
257 | purple_debug_info("bonjour", "xep file transfer stream initialization result.\n"); |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
258 | iq = xep_iq_new(bd, XEP_IQ_RESULT, to, purple_account_get_username(bd->jabber_data->account), xf->iq_id); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
259 | if(iq == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
260 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
261 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
262 | si_node = xmlnode_new_child(iq->node, "si"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
263 | xmlnode_set_namespace(si_node, "http://jabber.org/protocol/si"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
264 | /*xmlnode_set_attrib(si_node, "profile", "http://jabber.org/protocol/si/profile/file-transfer");*/ |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
265 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
266 | feature = xmlnode_new_child(si_node, "feature"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
267 | xmlnode_set_namespace(feature, "http://jabber.org/protocol/feature-neg"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
268 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
269 | x = xmlnode_new_child(feature, "x"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
270 | xmlnode_set_namespace(x, "jabber:x:data"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
271 | xmlnode_set_attrib(x, "type", "submit"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
272 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
273 | field = xmlnode_new_child(x, "field"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
274 | xmlnode_set_attrib(field, "var", "stream-method"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
275 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
276 | value = xmlnode_new_child(field, "value"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
277 | xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
278 | |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
279 | xep_iq_send_and_free(iq); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
280 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
281 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
282 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
283 | bonjour_free_xfer(PurpleXfer *xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
284 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
285 | XepXfer *xf; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
286 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
287 | if(xfer == NULL) { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
288 | purple_debug_info("bonjour", "bonjour-free-xfer-null.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
289 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
290 | } |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
291 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
292 | purple_debug_info("bonjour", "bonjour-free-xfer-%p.\n", xfer); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
293 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
294 | xf = (XepXfer*)xfer->data; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
295 | if(xf != NULL) { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
296 | BonjourData *bd = (BonjourData*)xf->data; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
297 | if(bd != NULL) { |
|
21944
c41d17a1b8d9
This is the second part of the fix to support having multiple presence records in Bonjour (and also supporting multiple presences using the same IP). Incoming conversations are no longer immediately attached to a buddy - we use an algorithm to match a conversation to a buddy based on the IP and, if possible the "from" attribute of the stream or the first tag in the stream. Thanks to Sjoerd Simons from Telepahy Salut for noticing and suggesting the algorithm. Fixes #4187. It'd be good if a few people test this.
Daniel Atallah <datallah@pidgin.im>
parents:
21920
diff
changeset
|
298 | bd->xfer_lists = g_slist_remove(bd->xfer_lists, xfer); |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
299 | purple_debug_info("bonjour", "B free xfer from lists(%p).\n", bd->xfer_lists); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
300 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
301 | if (xf->proxy_connection != NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
302 | purple_proxy_connect_cancel(xf->proxy_connection); |
|
23871
9dbe8580fc23
Fix a double free when connecting to the sender of a bonjour file fails. Also plug a small leak. Fixes #5971. (this time only commit the one file instead of my whole tree)
Daniel Atallah <datallah@pidgin.im>
parents:
23870
diff
changeset
|
303 | if (xf->proxy_info != NULL) |
|
9dbe8580fc23
Fix a double free when connecting to the sender of a bonjour file fails. Also plug a small leak. Fixes #5971. (this time only commit the one file instead of my whole tree)
Daniel Atallah <datallah@pidgin.im>
parents:
23870
diff
changeset
|
304 | purple_proxy_info_destroy(xf->proxy_info); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
305 | if (xf->listen_data != NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
306 | purple_network_listen_cancel(xf->listen_data); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
307 | g_free(xf->iq_id); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
308 | g_free(xf->jid); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
309 | g_free(xf->proxy_host); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
310 | g_free(xf->buddy_ip); |
|
21528
06532211eb62
Leak fix, cleanup and code reuse.
Daniel Atallah <datallah@pidgin.im>
parents:
21527
diff
changeset
|
311 | g_free(xf->sid); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
312 | g_free(xf); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
313 | xfer->data = NULL; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
314 | } |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
315 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
316 | purple_debug_info("bonjour", "Need close socket=%d.\n", xfer->fd); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
317 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
318 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
319 | PurpleXfer * |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
320 | bonjour_new_xfer(PurpleConnection *gc, const char *who) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
321 | { |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
322 | PurpleXfer *xfer; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
323 | XepXfer *xep_xfer; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
324 | BonjourData *bd; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
325 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
326 | if(who == NULL || gc == NULL) |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
327 | return NULL; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
328 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
329 | purple_debug_info("bonjour", "Bonjour-new-xfer to %s.\n", who); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
330 | bd = (BonjourData*) gc->proto_data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
331 | if(bd == NULL) |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
332 | return NULL; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
333 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
334 | /* Build the file transfer handle */ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
335 | xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
336 | xfer->data = xep_xfer = g_new0(XepXfer, 1); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
337 | xep_xfer->data = bd; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
338 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
339 | purple_debug_info("bonjour", "Bonjour-new-xfer bd=%p data=%p.\n", bd, xep_xfer->data); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
340 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
341 | /* We don't support IBB yet */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
342 | /*xep_xfer->mode = XEP_BYTESTREAMS | XEP_IBB;*/ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
343 | xep_xfer->mode = XEP_BYTESTREAMS; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
344 | xep_xfer->sid = NULL; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
345 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
346 | purple_xfer_set_init_fnc(xfer, bonjour_xfer_init); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
347 | purple_xfer_set_cancel_send_fnc(xfer, bonjour_xfer_cancel_send); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
348 | purple_xfer_set_end_fnc(xfer, bonjour_xfer_end); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
349 | |
|
21944
c41d17a1b8d9
This is the second part of the fix to support having multiple presence records in Bonjour (and also supporting multiple presences using the same IP). Incoming conversations are no longer immediately attached to a buddy - we use an algorithm to match a conversation to a buddy based on the IP and, if possible the "from" attribute of the stream or the first tag in the stream. Thanks to Sjoerd Simons from Telepahy Salut for noticing and suggesting the algorithm. Fixes #4187. It'd be good if a few people test this.
Daniel Atallah <datallah@pidgin.im>
parents:
21920
diff
changeset
|
350 | bd->xfer_lists = g_slist_append(bd->xfer_lists, xfer); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
351 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
352 | return xfer; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
353 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
354 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
355 | void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
356 | bonjour_send_file(PurpleConnection *gc, const char *who, const char *file) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
357 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
358 | PurpleXfer *xfer; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
359 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
360 | g_return_if_fail(gc != NULL); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
361 | g_return_if_fail(who != NULL); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
362 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
363 | purple_debug_info("bonjour", "Bonjour-send-file to=%s.\n", who); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
364 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
365 | xfer = bonjour_new_xfer(gc, who); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
366 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
367 | if (file) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
368 | purple_xfer_request_accepted(xfer, file); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
369 | else |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
370 | purple_xfer_request(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
371 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
372 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
373 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
374 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
375 | bonjour_xfer_init(PurpleXfer *xfer) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
376 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
377 | PurpleBuddy *buddy; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
378 | BonjourBuddy *bb; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
379 | XepXfer *xf; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
380 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
381 | xf = (XepXfer*)xfer->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
382 | if(xf == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
383 | return; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
384 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
385 | purple_debug_info("bonjour", "Bonjour-xfer-init.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
386 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
387 | buddy = purple_find_buddy(xfer->account, xfer->who); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
388 | /* this buddy is offline. */ |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
389 | if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL) |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
390 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
391 | |
|
21920
3087a567aedf
Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <datallah@pidgin.im>
parents:
21618
diff
changeset
|
392 | /* Assume it is the first IP. We could do something like keep track of which one is in use or something. */ |
|
3087a567aedf
Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <datallah@pidgin.im>
parents:
21618
diff
changeset
|
393 | if (bb->ips) |
|
3087a567aedf
Update Bonjour prpl to support multiple presence records for the same buddy. Eliminate the Howl backend to avoid having to maintain yet another set of code. References #4187 (more to come to fix the rest of the ticket).
Daniel Atallah <datallah@pidgin.im>
parents:
21618
diff
changeset
|
394 | xf->buddy_ip = g_strdup(bb->ips->data); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
395 | if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
396 | /* initiate file transfer, send SI offer. */ |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
397 | purple_debug_info("bonjour", "Bonjour xfer type is PURPLE_XFER_SEND.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
398 | xep_ft_si_offer(xfer, xfer->who); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
399 | } else { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
400 | /* accept file transfer request, send SI result. */ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
401 | xep_ft_si_result(xfer, xfer->who); |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
402 | purple_debug_info("bonjour", "Bonjour xfer type is PURPLE_XFER_RECEIVE.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
403 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
404 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
405 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
406 | void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
407 | xep_si_parse(PurpleConnection *pc, xmlnode *packet, PurpleBuddy *pb) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
408 | { |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
409 | const char *type, *id; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
410 | BonjourData *bd; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
411 | PurpleXfer *xfer; |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
412 | const gchar *name = NULL; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
413 | |
|
25097
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
414 | g_return_if_fail(pc != NULL); |
|
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
415 | g_return_if_fail(packet != NULL); |
|
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
416 | g_return_if_fail(pb != NULL); |
|
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
417 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
418 | bd = (BonjourData*) pc->proto_data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
419 | if(bd == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
420 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
421 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
422 | purple_debug_info("bonjour", "xep-si-parse.\n"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
423 | |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
424 | name = purple_buddy_get_name(pb); |
|
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
425 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
426 | type = xmlnode_get_attrib(packet, "type"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
427 | id = xmlnode_get_attrib(packet, "id"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
428 | if(type) { |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
429 | if(!strcmp(type, "set")) { |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
430 | const char *profile; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
431 | xmlnode *si; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
432 | gboolean parsed_receive = FALSE; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
433 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
434 | si = xmlnode_get_child(packet, "si"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
435 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
436 | purple_debug_info("bonjour", "si offer Message type - SET.\n"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
437 | if (si && (profile = xmlnode_get_attrib(si, "profile")) |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
438 | && !strcmp(profile, "http://jabber.org/protocol/si/profile/file-transfer")) { |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
439 | const char *filename = NULL, *filesize_str = NULL; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
440 | int filesize = 0; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
441 | xmlnode *file; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
442 | |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
443 | const char *sid = xmlnode_get_attrib(si, "id"); |
|
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
444 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
445 | if ((file = xmlnode_get_child(si, "file"))) { |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
446 | filename = xmlnode_get_attrib(file, "name"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
447 | if((filesize_str = xmlnode_get_attrib(file, "size"))) |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
448 | filesize = atoi(filesize_str); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
449 | } |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
450 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
451 | /* TODO: Make sure that it is advertising a bytestreams transfer */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
452 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24039
diff
changeset
|
453 | bonjour_xfer_receive(pc, id, sid, name, filesize, filename, XEP_BYTESTREAMS); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
454 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
455 | parsed_receive = TRUE; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
456 | } |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
457 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
458 | if (!parsed_receive) { |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
459 | BonjourData *bd = purple_connection_get_protocol_data(pc); |
|
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
460 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
461 | purple_debug_info("bonjour", "rejecting unrecognized si SET offer.\n"); |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
462 | xep_ft_si_reject(bd, id, name, "403", "cancel"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
463 | /*TODO: Send Cancel (501) */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
464 | } |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
465 | } else if(!strcmp(type, "result")) { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
466 | purple_debug_info("bonjour", "si offer Message type - RESULT.\n"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
467 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24039
diff
changeset
|
468 | xfer = bonjour_si_xfer_find(bd, id, name); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
469 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
470 | if(xfer == NULL) { |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
471 | BonjourData *bd = purple_connection_get_protocol_data(pc); |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
472 | purple_debug_info("bonjour", "xfer find fail.\n"); |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
473 | xep_ft_si_reject(bd, id, name, "403", "cancel"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
474 | } else |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
475 | bonjour_bytestreams_init(xfer); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
476 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
477 | } else if(!strcmp(type, "error")) { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
478 | purple_debug_info("bonjour", "si offer Message type - ERROR.\n"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
479 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24039
diff
changeset
|
480 | xfer = bonjour_si_xfer_find(bd, id, name); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
481 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
482 | if(xfer == NULL) |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
483 | purple_debug_info("bonjour", "xfer find fail.\n"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
484 | else |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
485 | purple_xfer_cancel_remote(xfer); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
486 | } else |
|
22622
1ecb840b5101
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents:
21944
diff
changeset
|
487 | purple_debug_info("bonjour", "si offer Message type - Unknown-%s.\n", type); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
488 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
489 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
490 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
491 | void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
492 | xep_bytestreams_parse(PurpleConnection *pc, xmlnode *packet, PurpleBuddy *pb) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
493 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
494 | const char *type, *from; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
495 | xmlnode *query; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
496 | BonjourData *bd; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
497 | |
|
25097
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
498 | g_return_if_fail(pc != NULL); |
|
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
499 | g_return_if_fail(packet != NULL); |
|
c950e59e30bf
Further cleanup to fix CID 373.
Daniel Atallah <datallah@pidgin.im>
parents:
24039
diff
changeset
|
500 | g_return_if_fail(pb != NULL); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
501 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
502 | bd = (BonjourData*) pc->proto_data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
503 | if(bd == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
504 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
505 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
506 | purple_debug_info("bonjour", "xep-bytestreams-parse.\n"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
507 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
508 | type = xmlnode_get_attrib(packet, "type"); |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24039
diff
changeset
|
509 | from = purple_buddy_get_name(pb); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
510 | query = xmlnode_get_child(packet,"query"); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
511 | if(type) { |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
512 | if(!strcmp(type, "set")) { |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
513 | const char *iq_id, *sid; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
514 | gboolean found = FALSE; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
515 | PurpleXfer *xfer; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
516 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
517 | purple_debug_info("bonjour", "bytestream offer Message type - SET.\n"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
518 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
519 | iq_id = xmlnode_get_attrib(packet, "id"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
520 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
521 | sid = xmlnode_get_attrib(query, "sid"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
522 | xfer = bonjour_si_xfer_find(bd, sid, from); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
523 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
524 | if(xfer) { |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
525 | const char *jid, *host, *port; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
526 | xmlnode *streamhost; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
527 | int portnum; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
528 | XepXfer *xf = NULL; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
529 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
530 | xf = (XepXfer*)xfer->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
531 | for(streamhost = xmlnode_get_child(query, "streamhost"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
532 | streamhost; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
533 | streamhost = xmlnode_get_next_twin(streamhost)) { |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
534 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
535 | if((jid = xmlnode_get_attrib(streamhost, "jid")) && |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
536 | (host = xmlnode_get_attrib(streamhost, "host")) && |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
537 | (port = xmlnode_get_attrib(streamhost, "port")) && |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
538 | (portnum = atoi(port))) { |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
539 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
540 | if(!strcmp(host, xf->buddy_ip)) { |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
541 | g_free(xf->iq_id); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
542 | xf->iq_id = g_strdup(iq_id); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
543 | xf->jid = g_strdup(jid); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
544 | xf->proxy_host = g_strdup(host); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
545 | xf->proxy_port = portnum; |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
546 | purple_debug_info("bonjour", "bytestream offer parse" |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
547 | "jid=%s host=%s port=%d.\n", jid, host, portnum); |
|
21618
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
548 | bonjour_bytestreams_connect(xfer, pb); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
549 | found = TRUE; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
550 | break; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
551 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
552 | } else { |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
553 | purple_debug_info("bonjour", "bytestream offer Message parse error.\n"); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
554 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
555 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
556 | } else { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
557 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
558 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
559 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
560 | if (!found) { |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
561 | purple_debug_error("bonjour", "Didn't find an acceptable streamhost.\n"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
562 | |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
563 | if (iq_id && xfer != NULL) |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
564 | xep_ft_si_reject(bd, iq_id, xfer->who, "404", "cancel"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
565 | } |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
566 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
567 | } else { |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
568 | purple_debug_info("bonjour", "bytestream offer Message type - Unknown-%s.\n", type); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
569 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
570 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
571 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
572 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
573 | static void |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
574 | bonjour_xfer_receive(PurpleConnection *pc, const char *id, const char *sid, const char *from, |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
575 | const int filesize, const char *filename, int option) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
576 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
577 | PurpleXfer *xfer; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
578 | XepXfer *xf; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
579 | BonjourData *bd; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
580 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
581 | if(pc == NULL || id == NULL || from == NULL) |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
582 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
583 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
584 | bd = (BonjourData*) pc->proto_data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
585 | if(bd == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
586 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
587 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
588 | purple_debug_info("bonjour", "bonjour-xfer-receive.\n"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
589 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
590 | /* Build the file transfer handle */ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
591 | xfer = purple_xfer_new(pc->account, PURPLE_XFER_RECEIVE, from); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
592 | xfer->data = xf = g_new0(XepXfer, 1); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
593 | xf->data = bd; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
594 | purple_xfer_set_filename(xfer, filename); |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
595 | xf->iq_id = g_strdup(id); |
|
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
596 | xf->sid = g_strdup(sid); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
597 | |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
598 | if(filesize > 0) |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
599 | purple_xfer_set_size(xfer, filesize); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
600 | purple_xfer_set_init_fnc(xfer, bonjour_xfer_init); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
601 | purple_xfer_set_request_denied_fnc(xfer, bonjour_xfer_request_denied); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
602 | purple_xfer_set_cancel_recv_fnc(xfer, bonjour_xfer_cancel_recv); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
603 | purple_xfer_set_end_fnc(xfer, bonjour_xfer_end); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
604 | |
|
21944
c41d17a1b8d9
This is the second part of the fix to support having multiple presence records in Bonjour (and also supporting multiple presences using the same IP). Incoming conversations are no longer immediately attached to a buddy - we use an algorithm to match a conversation to a buddy based on the IP and, if possible the "from" attribute of the stream or the first tag in the stream. Thanks to Sjoerd Simons from Telepahy Salut for noticing and suggesting the algorithm. Fixes #4187. It'd be good if a few people test this.
Daniel Atallah <datallah@pidgin.im>
parents:
21920
diff
changeset
|
605 | bd->xfer_lists = g_slist_append(bd->xfer_lists, xfer); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
606 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
607 | purple_xfer_request(xfer); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
608 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
609 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
610 | static void |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
611 | bonjour_sock5_request_cb(gpointer data, gint source, PurpleInputCondition cond) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
612 | { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
613 | PurpleXfer *xfer = data; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
614 | XepXfer *xf = xfer->data; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
615 | int acceptfd; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
616 | int len = 0; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
617 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
618 | if(xf == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
619 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
620 | |
|
21550
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
621 | purple_debug_info("bonjour", "bonjour_sock5_request_cb - req_state = 0x%x\n", xf->sock5_req_state); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
622 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
623 | switch(xf->sock5_req_state){ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
624 | case 0x00: |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
625 | acceptfd = accept(source, NULL, 0); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
626 | if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) { |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
627 | |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
628 | } else if(acceptfd == -1) { |
|
21612
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
629 | /* This should cancel the ft */ |
|
21616
c46eaa2908c5
Fix some confusion between iq ids and sids. This allows me to send files to Gajim (as long as Gajim has initiated the connection to me - there seems to a bug there where it will try to make a new connection if I've initiated the connection). Also fix a null ptr deref crash.
Daniel Atallah <datallah@pidgin.im>
parents:
21612
diff
changeset
|
630 | purple_debug_error("bonjour", "Error accepting incoming SOCKS5 connection. (%d)\n", errno); |
|
21612
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
631 | |
|
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
632 | purple_input_remove(xfer->watcher); |
|
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
633 | xfer->watcher = 0; |
|
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
634 | close(source); |
|
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
635 | purple_xfer_cancel_remote(xfer); |
|
9fce536735e3
Various bugfixes including using purple_account_remove_buddy() in addition to purple_blist_remove_buddy() to make sure that the buddy gets cleaned up fully when logging out or we go offline.
Daniel Atallah <datallah@pidgin.im>
parents:
21609
diff
changeset
|
636 | return; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
637 | } else { |
|
21550
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
638 | int flags; |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
639 | |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
640 | purple_debug_info("bonjour", "Accepted SOCKS5 ft connection - fd=%d\n", acceptfd); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
641 | |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
642 | flags = fcntl(acceptfd, F_GETFL); |
|
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
643 | fcntl(acceptfd, F_SETFL, flags | O_NONBLOCK); |
|
24039
8173b6258f5a
These fds don't need to be inherited by child processes.
Daniel Atallah <datallah@pidgin.im>
parents:
23871
diff
changeset
|
644 | #ifndef _WIN32 |
|
8173b6258f5a
These fds don't need to be inherited by child processes.
Daniel Atallah <datallah@pidgin.im>
parents:
23871
diff
changeset
|
645 | fcntl(acceptfd, F_SETFD, FD_CLOEXEC); |
|
8173b6258f5a
These fds don't need to be inherited by child processes.
Daniel Atallah <datallah@pidgin.im>
parents:
23871
diff
changeset
|
646 | #endif |
|
21550
a2e5ad387b1e
My changes to disable external port mapping exposed a flaw where the server socket was being closed immediately, before the client had read all the data - this caused the client to receive a RST and consequently error. The solution is to wait for the client to close the connection before closing the server connection. I'm surprised this hasn't been a problem elsewhere - it seems like it would be.
Daniel Atallah <datallah@pidgin.im>
parents:
21549
diff
changeset
|
647 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
648 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
649 | close(source); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
650 | xfer->watcher = purple_input_add(acceptfd, PURPLE_INPUT_READ, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
651 | bonjour_sock5_request_cb, xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
652 | xf->sock5_req_state++; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
653 | xf->rxlen = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
654 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
655 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
656 | case 0x01: |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
657 | xfer->fd = source; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
658 | len = read(source, xf->rx_buf + xf->rxlen, 3); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
659 | if(len < 0 && errno == EAGAIN) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
660 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
661 | else if(len <= 0){ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
662 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
663 | xfer->watcher = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
664 | close(source); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
665 | purple_xfer_cancel_remote(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
666 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
667 | } else { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
668 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
669 | xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
670 | bonjour_sock5_request_cb, xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
671 | xf->sock5_req_state++; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
672 | xf->rxlen = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
673 | bonjour_sock5_request_cb(xfer, source, PURPLE_INPUT_WRITE); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
674 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
675 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
676 | case 0x02: |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
677 | xf->tx_buf[0] = 0x05; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
678 | xf->tx_buf[1] = 0x00; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
679 | len = write(source, xf->tx_buf, 2); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
680 | if (len < 0 && errno == EAGAIN) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
681 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
682 | else if (len < 0) { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
683 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
684 | xfer->watcher = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
685 | close(source); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
686 | purple_xfer_cancel_remote(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
687 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
688 | } else { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
689 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
690 | xfer->watcher = purple_input_add(source, PURPLE_INPUT_READ, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
691 | bonjour_sock5_request_cb, xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
692 | xf->sock5_req_state++; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
693 | xf->rxlen = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
694 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
695 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
696 | case 0x03: |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
697 | len = read(source, xf->rx_buf + xf->rxlen, 20); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
698 | if(len<=0){ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
699 | } else { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
700 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
701 | xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
702 | bonjour_sock5_request_cb, xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
703 | xf->sock5_req_state++; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
704 | xf->rxlen = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
705 | bonjour_sock5_request_cb(xfer, source, PURPLE_INPUT_WRITE); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
706 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
707 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
708 | case 0x04: |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
709 | xf->tx_buf[0] = 0x05; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
710 | xf->tx_buf[1] = 0x00; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
711 | xf->tx_buf[2] = 0x00; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
712 | xf->tx_buf[3] = 0x03; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
713 | xf->tx_buf[4] = strlen(xf->buddy_ip); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
714 | memcpy(xf->tx_buf + 5, xf->buddy_ip, strlen(xf->buddy_ip)); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
715 | xf->tx_buf[5+strlen(xf->buddy_ip)] = 0x00; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
716 | xf->tx_buf[6+strlen(xf->buddy_ip)] = 0x00; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
717 | len = write(source, xf->tx_buf, 7 + strlen(xf->buddy_ip)); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
718 | if (len < 0 && errno == EAGAIN) { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
719 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
720 | } else if (len < 0) { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
721 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
722 | xfer->watcher = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
723 | close(source); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
724 | purple_xfer_cancel_remote(xfer); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
725 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
726 | } else { |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
727 | purple_input_remove(xfer->watcher); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
728 | xfer->watcher = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
729 | xf->rxlen = 0; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
730 | /*close(source);*/ |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
731 | purple_xfer_start(xfer, source, NULL, -1); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
732 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
733 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
734 | default: |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
735 | break; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
736 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
737 | return; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
738 | } |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
739 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
740 | static void |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
741 | bonjour_bytestreams_listen(int sock, gpointer data) |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
742 | { |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
743 | PurpleXfer *xfer = data; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
744 | XepXfer *xf; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
745 | XepIq *iq; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
746 | xmlnode *query, *streamhost; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
747 | gchar *port; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
748 | const char *next_ip, *local_ip; |
|
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
749 | const char token [] = ";"; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
750 | BonjourData *bd; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
751 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
752 | purple_debug_info("bonjour", "Bonjour-bytestreams-listen. sock=%d.\n", sock); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
753 | if (sock < 0 || xfer == NULL) { |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
754 | /*purple_xfer_cancel_local(xfer);*/ |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
755 | return; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
756 | } |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
757 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
758 | xfer->watcher = purple_input_add(sock, PURPLE_INPUT_READ, |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
759 | bonjour_sock5_request_cb, xfer); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
760 | xf = (XepXfer*)xfer->data; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
761 | xf->listen_data = NULL; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
762 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
763 | bd = xf->data; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
764 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
765 | iq = xep_iq_new(bd, XEP_IQ_SET, xfer->who, purple_account_get_username(bd->jabber_data->account), xf->sid); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
766 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
767 | query = xmlnode_new_child(iq->node, "query"); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
768 | xmlnode_set_namespace(query, "http://jabber.org/protocol/bytestreams"); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
769 | xmlnode_set_attrib(query, "sid", xf->sid); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
770 | xmlnode_set_attrib(query, "mode", "tcp"); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
771 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
772 | xfer->local_port = purple_network_get_port_from_fd(sock); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
773 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
774 | local_ip = purple_network_get_my_ip_ext2(sock); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
775 | /* cheat a little here - the intent of the "const" attribute is to make it clear that the string doesn't need to be freed */ |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
776 | next_ip = strtok((char *)local_ip, token); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
777 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
778 | port = g_strdup_printf("%hu", xfer->local_port); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
779 | while(next_ip != NULL) { |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
780 | streamhost = xmlnode_new_child(query, "streamhost"); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
781 | xmlnode_set_attrib(streamhost, "jid", xf->sid); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
782 | xmlnode_set_attrib(streamhost, "host", next_ip); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
783 | xmlnode_set_attrib(streamhost, "port", port); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
784 | next_ip = strtok(NULL, token); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
785 | } |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
786 | g_free(port); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
787 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
788 | xep_iq_send_and_free(iq); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
789 | } |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
790 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
791 | static void |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
792 | bonjour_bytestreams_init(PurpleXfer *xfer) |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
793 | { |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
794 | XepXfer *xf; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
795 | if(xfer == NULL) |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
796 | return; |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
797 | purple_debug_info("bonjour", "Bonjour-bytestreams-init.\n"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
798 | xf = xfer->data; |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
799 | purple_network_listen_map_external(FALSE); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
800 | xf->listen_data = purple_network_listen_range(0, 0, SOCK_STREAM, |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
801 | bonjour_bytestreams_listen, xfer); |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
802 | purple_network_listen_map_external(TRUE); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
803 | if (xf->listen_data == NULL) { |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
804 | purple_xfer_cancel_local(xfer); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
805 | } |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
806 | return; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
807 | } |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
808 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
809 | static void |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
810 | bonjour_bytestreams_connect_cb(gpointer data, gint source, const gchar *error_message) |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
811 | { |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
812 | PurpleXfer *xfer = data; |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
813 | XepXfer *xf = xfer->data; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
814 | XepIq *iq; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
815 | xmlnode *q_node, *tmp_node; |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
816 | BonjourData *bd; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
817 | |
|
23871
9dbe8580fc23
Fix a double free when connecting to the sender of a bonjour file fails. Also plug a small leak. Fixes #5971. (this time only commit the one file instead of my whole tree)
Daniel Atallah <datallah@pidgin.im>
parents:
23870
diff
changeset
|
818 | xf->proxy_connection = NULL; |
|
9dbe8580fc23
Fix a double free when connecting to the sender of a bonjour file fails. Also plug a small leak. Fixes #5971. (this time only commit the one file instead of my whole tree)
Daniel Atallah <datallah@pidgin.im>
parents:
23870
diff
changeset
|
819 | |
|
21618
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
820 | if(source < 0) { |
|
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
821 | purple_debug_error("bonjour", "Error connecting via SOCKS5 - %s\n", |
|
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
822 | error_message ? error_message : "(null)"); |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
823 | xep_ft_si_reject(xf->data, xf->iq_id, xfer->who, "404", "cancel"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
824 | /* Cancel the connection */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
825 | purple_xfer_cancel_local(xfer); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
826 | return; |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
827 | } |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
828 | |
|
21618
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
829 | purple_debug_info("bonjour", "Connected successfully via SOCKS5, starting transfer.\n"); |
|
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
830 | |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
831 | bd = xf->data; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
832 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
833 | /* Here, start the file transfer.*/ |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
834 | |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
835 | /* Notify Initiator of Connection */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
836 | iq = xep_iq_new(bd, XEP_IQ_RESULT, xfer->who, purple_account_get_username(bd->jabber_data->account), xf->iq_id); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
837 | q_node = xmlnode_new_child(iq->node, "query"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
838 | xmlnode_set_namespace(q_node, "http://jabber.org/protocol/bytestreams"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
839 | tmp_node = xmlnode_new_child(q_node, "streamhost-used"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
840 | xmlnode_set_attrib(tmp_node, "jid", xf->jid); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
841 | xep_iq_send_and_free(iq); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
842 | |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
843 | purple_xfer_start(xfer, source, NULL, -1); |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
844 | } |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
845 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
846 | static void |
|
21618
8e23cf987cb1
Fix receiving files from Gajim clients by making the SOCKS5 target hash correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21616
diff
changeset
|
847 | bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb) |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
848 | { |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
849 | PurpleAccount *account = NULL; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
850 | XepXfer *xf; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
851 | char dstaddr[41]; |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
852 | const gchar *name = NULL; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
853 | unsigned char hashval[20]; |
|
23160
0aff8f3882f4
applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
854 | char *p; |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
855 | int i; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
856 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
857 | if(xfer == NULL) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
858 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
859 | |
|
21549
7436059db33b
Don't map the port used for bonjour file transfers externally. This adds a new function that will go away in 3.0.0 when we can modify purple_network_do_listen to take an additional parameter.
Daniel Atallah <datallah@pidgin.im>
parents:
21548
diff
changeset
|
860 | purple_debug_info("bonjour", "bonjour-bytestreams-connect.\n"); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
861 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
862 | xf = (XepXfer*)xfer->data; |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
863 | if(!xf) |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
864 | return; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
865 | |
|
24938
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
866 | name = purple_buddy_get_name(pb); |
|
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
867 | account = purple_buddy_get_account(pb); |
|
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
868 | |
|
fc6952107e1f
Finished moving to api for bonjour
Gary Kramlich <grim@reaperworld.com>
parents:
24039
diff
changeset
|
869 | p = g_strdup_printf("%s%s%s", xf->sid, name, purple_account_get_username(account)); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
870 | purple_cipher_digest_region("sha1", (guchar *)p, strlen(p), |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
871 | sizeof(hashval), hashval, NULL); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
872 | g_free(p); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
873 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
874 | memset(dstaddr, 0, 41); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
875 | p = dstaddr; |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
876 | for(i = 0; i < 20; i++, p += 2) |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
877 | snprintf(p, 3, "%02x", hashval[i]); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
878 | |
|
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
879 | xf->proxy_info = purple_proxy_info_new(); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
880 | purple_proxy_info_set_type(xf->proxy_info, PURPLE_PROXY_SOCKS5); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
881 | purple_proxy_info_set_host(xf->proxy_info, xf->proxy_host); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
882 | purple_proxy_info_set_port(xf->proxy_info, xf->proxy_port); |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
883 | xf->proxy_connection = purple_proxy_connect_socks5(NULL, xf->proxy_info, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
884 | dstaddr, 0, |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
885 | bonjour_bytestreams_connect_cb, xfer); |
|
21548
b19c433f5af2
Cleanup and fix the socks5 proxy connect address to be correct.
Daniel Atallah <datallah@pidgin.im>
parents:
21528
diff
changeset
|
886 | |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
887 | if(xf->proxy_connection == NULL) { |
|
21609
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
888 | xep_ft_si_reject(xf->data, xf->iq_id, xfer->who, "404", "cancel"); |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
889 | /* Cancel the connection */ |
|
30ca7a909e62
Fix a couple bugs in the Bonjour XEP-0065 implementation, mainly related to error handling, but also send a <streamhost-used /> result. Also fix a XEP-0096 bug where the SI profile wasn't being specified. These bring ft with gajim closer to working, but we aren't there yet.
Daniel Atallah <datallah@pidgin.im>
parents:
21550
diff
changeset
|
890 | purple_xfer_cancel_local(xfer); |
|
21527
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
891 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
892 | } |
|
fe89b20df0f7
I thought I was just fixing a leak in this commit, but it turns out I forgot to add the new files in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
diff
changeset
|
893 |