changeset 47e6370604a1 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=47e6370604a1
description: make jingleFT work when receiver's proxy is used
diffstat:
src/common/jingle_ft.py | 29 +++++++++++++++++++++++------
src/common/jingle_transport.py | 3 ---
src/common/socks5.py | 6 +++++-
3 files changed, 28 insertions(+), 10 deletions(-)
diffs (96 lines):
diff -r 8b2fa4dbe31e -r 47e6370604a1 src/common/jingle_ft.py
--- a/src/common/jingle_ft.py Sat Oct 29 14:31:06 2011 -0400
+++ b/src/common/jingle_ft.py Wed Nov 02 00:09:33 2011 +0100
@@ -387,6 +387,12 @@
if streamhost_used['type'] == 'proxy':
self.file_props['is_a_proxy'] = True
+ if self.weinitiate:
+ self.file_props['proxy_sender'] = streamhost_used['initiator']
+ self.file_props['proxy_receiver'] = streamhost_used['target']
+ else:
+ self.file_props['proxy_sender'] = streamhost_used['target']
+ self.file_props['proxy_receiver'] =
streamhost_used['initiator']
if not self.weinitiate and streamhost_used['type'] == 'proxy':
r = gajim.socks5queue.readers
@@ -394,7 +400,14 @@
if r[reader].host == streamhost_used['host'] and \
r[reader].connected:
return
-
+
+ if self.weinitiate and streamhost_used['type'] == 'proxy':
+ s = gajim.socks5queue.senders
+ for sender in s:
+ if s[sender].host == streamhost_used['host'] and \
+ s[sender].connected:
+ return
+
if streamhost_used['type'] == 'proxy':
self.file_props['streamhost-used'] = True
streamhost_used['sid'] = self.file_props['sid']
@@ -402,11 +415,11 @@
self.file_props['streamhosts'].append(streamhost_used)
self.file_props['proxyhosts'] = []
self.file_props['proxyhosts'].append(streamhost_used)
- self.file_props['is_a_proxy'] = True
-
- gajim.socks5queue.idx += 1
- idx = gajim.socks5queue.idx
- sockobj = Socks5Sender(gajim.idlequeue, idx,
+
+ if self.weinitiate:
+ gajim.socks5queue.idx += 1
+ idx = gajim.socks5queue.idx
+ sockobj = Socks5Sender(gajim.idlequeue, idx,
gajim.socks5queue,
mode='client',
_sock=None,
@@ -415,6 +428,10 @@
fingerprint=None,
connected=False,
file_props=self.file_props)
+ else:
+ sockobj = Socks5Receiver(gajim.idlequeue, streamhost_used,
+ sid=self.file_props['sid'], mode='client',
+ file_props=self.file_props, fingerprint=None)
sockobj.proxy = True
sockobj.streamhost = streamhost_used
gajim.socks5queue.add_sockobj(self.session.connection.name,
diff -r 8b2fa4dbe31e -r 47e6370604a1 src/common/jingle_transport.py
--- a/src/common/jingle_transport.py Sat Oct 29 14:31:06 2011 -0400
+++ b/src/common/jingle_transport.py Wed Nov 02 00:09:33 2011 +0100
@@ -223,9 +223,6 @@
proxyhosts =
socks5conn._get_file_transfer_proxies_from_config(self.file_props)
if proxyhosts:
- self.file_props['proxy_receiver'] = unicode(
- self.file_props['receiver'])
- self.file_props['proxy_sender'] =
unicode(self.file_props['sender'])
self.file_props['proxyhosts'] = proxyhosts
for proxyhost in proxyhosts:
diff -r 8b2fa4dbe31e -r 47e6370604a1 src/common/socks5.py
--- a/src/common/socks5.py Sat Oct 29 14:31:06 2011 -0400
+++ b/src/common/socks5.py Wed Nov 02 00:09:33 2011 +0100
@@ -115,7 +115,7 @@
for proxy in file_props['proxyhosts']:
if proxy['host'] == streamhost['host']:
self.on_success[file_props['sid']](proxy)
- return 2
+ return 1
return 0
if 'streamhosts' in file_props:
for host in file_props['streamhosts']:
@@ -154,6 +154,10 @@
idx = self.idx
self.idx = self.idx + 1
self.type = 'sender'
+ if 'type' in streamhost and streamhost['type'] == 'proxy':
+ file_props['is_a_proxy'] = True
+ file_props['proxy_sender'] = streamhost['target']
+ file_props['proxy_receiver'] = streamhost['initiator']
socks5obj = Socks5Sender(self.idlequeue, idx,
self, mode='client' , _sock=None,
host=str(streamhost['host']), port=int(streamhost['port']),
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits