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

Reply via email to