diff --git a/src/common/jingle.py b/src/common/jingle.py index 45bf7154b..26f6cc31f 100644 --- a/src/common/jingle.py +++ b/src/common/jingle.py @@ -197,8 +197,8 @@ class ConnectionJingle(object): def get_files_info(self, hash_=None, name=None): if hash_: for f in self.files: # DEBUG - #if f['hash'] == '1294809248109223': - if f['hash'] == hash_: + if f['hash'] == '1294809248109223': + #if f['hash'] == hash_: return f elif name: for f in self.files: diff --git a/src/common/jingle_ft.py b/src/common/jingle_ft.py index c6ee521a8..003756242 100644 --- a/src/common/jingle_ft.py +++ b/src/common/jingle_ft.py @@ -155,7 +155,7 @@ class JingleFileTransfer(JingleContent): h = xmpp.Hashes() hash_ = h.calculateHash(self.file_props.algo, file_) # DEBUG - #hash_ = '1294809248109223' + hash_ = '1294809248109223' if not hash_: # Hash alogrithm not supported return diff --git a/src/common/jingle_ftstates.py b/src/common/jingle_ftstates.py index deb9c7d2d..80b0d4e71 100644 --- a/src/common/jingle_ftstates.py +++ b/src/common/jingle_ftstates.py @@ -153,37 +153,34 @@ class StateTransfering(JingleFileTransferStates): streamhost_used = self.jft.nominated_cand['peer-cand'] if streamhost_used['type'] == 'proxy': self.jft.file_props.is_a_proxy = True - # This needs to be changed when requesting - if self.jft.weinitiate: + if self.jft.file_props.type_ == 's' and self.jft.weinitiate: self.jft.file_props.proxy_sender = streamhost_used['initiator'] self.jft.file_props.proxy_receiver = streamhost_used['target'] else: self.jft.file_props.proxy_sender = streamhost_used['target'] self.jft.file_props.proxy_receiver = streamhost_used[ 'initiator'] - # This needs to be changed when requesting - if not self.jft.weinitiate and streamhost_used['type'] == 'proxy': - r = gajim.socks5queue.readers - for reader in r: - if r[reader].host == streamhost_used['host'] and \ - r[reader].connected: - return - # This needs to be changed when requesting - if self.jft.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': + if self.jft.file_props.type_ == 's': + s = gajim.socks5queue.senders + for sender in s: + if s[sender].host == streamhost_used['host'] and \ + s[sender].connected: + return + elif self.jft.file_props.type_ == 'r': + r = gajim.socks5queue.readers + for reader in r: + if r[reader].host == streamhost_used['host'] and \ + r[reader].connected: + return + else: + raise TypeError self.jft.file_props.streamhost_used = True streamhost_used['sid'] = self.jft.file_props.sid self.jft.file_props.streamhosts = [] self.jft.file_props.streamhosts.append(streamhost_used) self.jft.file_props.proxyhosts = [] self.jft.file_props.proxyhosts.append(streamhost_used) - # This needs to be changed when requesting - if self.jft.weinitiate: + if self.jft.file_props.type_ == 's': gajim.socks5queue.idx += 1 idx = gajim.socks5queue.idx sockobj = Socks5SenderClient(gajim.idlequeue, idx, @@ -198,7 +195,7 @@ class StateTransfering(JingleFileTransferStates): sockobj.proxy = True sockobj.streamhost = streamhost_used gajim.socks5queue.add_sockobj(self.jft.session.connection.name, - sockobj, 'sender') + sockobj) streamhost_used['idx'] = sockobj.queue_idx # If we offered the nominated candidate used, we activate # the proxy @@ -214,7 +211,6 @@ class StateTransfering(JingleFileTransferStates): def action(self, args=None): if self.jft.transport.type_ == TransportType.IBB: self.__start_IBB_transfer(self.jft.session.connection) - elif self.jft.transport.type_ == TransportType.SOCKS5: self.__start_SOCK5_transfer() diff --git a/src/common/socks5.py b/src/common/socks5.py index 834feeb53..bd7010a77 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -83,7 +83,6 @@ class SocksQueue: authentication using sid for generated SHA """ sid = file_props.sid - self.type_ = typ # It says whether we are sending or receiving self.sha_handlers[sha_str] = (sha_handler, sid) if self.listener is None or self.listener.connections == []: self.listener = Socks5Listener(self.idlequeue, port, file_props, @@ -135,7 +134,7 @@ class SocksQueue: else: fp = fingerprint if receiving: - self.type_ = 'receiver' + file_props.type_ = 'r' socks5obj = Socks5ReceiverClient(self.idlequeue, streamhost, sid, file_props, fingerprint=fp) self.add_sockobj(account, socks5obj) @@ -145,7 +144,7 @@ class SocksQueue: else: idx = self.idx self.idx = self.idx + 1 - self.type_ = 'sender' + file_props.type_ = 's' if 'type' in streamhost and streamhost['type'] == 'proxy': file_props.is_a_proxy = True file_props.proxy_sender = streamhost['target'] @@ -155,7 +154,7 @@ class SocksQueue: port=int(streamhost['port']),fingerprint=fp, connected=False, file_props=file_props) socks5obj.streamhost = streamhost - self.add_sockobj(account, socks5obj, type_='sender') + self.add_sockobj(account, socks5obj) streamhost['idx'] = socks5obj.queue_idx @@ -168,7 +167,7 @@ class SocksQueue: if host != streamhost and 'idx' in host: if host['state'] == 1: # remove current - if self.type_ == 'sender': + if file_props.type_ == 's': self.remove_sender(streamhost['idx'], False) else: self.remove_receiver(streamhost['idx']) @@ -176,7 +175,7 @@ class SocksQueue: # set state -2, meaning that this streamhost is stopped, # but it may be connectected later if host['state'] >= 0: - if self.type_ == 'sender': + if file_props.type_ == 's': self.remove_sender(host['idx'], False) else: self.remove_receiver(host['idx']) @@ -239,12 +238,12 @@ class SocksQueue: file_props.failure_cb(file_props.sid) file_props.failure_cb = None - def add_sockobj(self, account, sockobj, type_='receiver'): + def add_sockobj(self, account, sockobj): """ Add new file a sockobj type receiver or sender, and use it to connect to server """ - if type_ == 'receiver': + if sockobj.file_props.type_ == 'r': self._add(sockobj, self.readers, sockobj.file_props, self.idx) else: self._add(sockobj, self.senders, sockobj.file_props, self.idx) @@ -327,7 +326,7 @@ class SocksQueue: def on_connection_accepted(self, sock, listener): sock_hash = sock.__hash__() - if self.type_ == 'sender' and \ + if listener.file_props.type_ == 's' and \ not self.isHashInSockObjs(self.senders, sock_hash): sockobj = Socks5SenderServer(self.idlequeue, sock_hash, self, sock[0], sock[1][0], sock[1][1], fingerprint='server', @@ -336,7 +335,7 @@ class SocksQueue: # Start waiting for data self.idlequeue.plug_idle(sockobj, False, True) self.connected += 1 - if self.type_ == 'receiver' and \ + if listener.file_props.type_ == 'r' and \ not self.isHashInSockObjs(self.readers, sock_hash): sh = {} sh['host'] = sock[1][0] @@ -441,7 +440,6 @@ class Socks5: self.remaining_buff = '' self.file = None self.connected = False - self.type_ = '' self.mode = '' def _is_connected(self): @@ -914,7 +912,6 @@ class Socks5Sender(IdleObject): self.file_props.elapsed_time = 0 self.file_props.last_time = self.idlequeue.current_time() self.file_props.received_len = 0 - self.type_ = 'sender' def start_transfer(self): """ @@ -1076,7 +1073,7 @@ class Socks5Server(Socks5): self.disconnect() elif self.state == 5: self.state = 7 - if self.type_ == 'sender': + if self.file_props.type_ == 's': # We wait for the end of the negotiation to # send the file self.idlequeue.plug_idle(self, False, False) @@ -1186,7 +1183,7 @@ class Socks5Client(Socks5): if self.queue.on_success: result = self.queue.send_success_reply(self.file_props, self.streamhost) - if self.type_ == 'sender' and self.proxy: + if self.file_props.type_ == 's' and self.proxy: self.queue.process_result(self.send_file(), self) return if result == 0: