plugin XEP-0065: fixed timer cancellation when a profile is receiving a file
This commit is contained in:
parent
7f2d6e56c7
commit
6d1bb065cd
1 changed files with 13 additions and 5 deletions
|
|
@ -324,12 +324,19 @@ class SOCKSv5(protocol.Protocol, FileSender):
|
|||
@property
|
||||
def file_obj(self):
|
||||
if self._file_obj is None:
|
||||
if self.server_mode:
|
||||
self._file_obj = self.factory.getSession(self._session_hash)["file"]
|
||||
else:
|
||||
self._file_obj = self.factory.getSession()['file']
|
||||
self._file_obj = self.getSession()['file']
|
||||
return self._file_obj
|
||||
|
||||
def getSession(self):
|
||||
"""Return session associated with this candidate
|
||||
|
||||
@return (dict): session data
|
||||
"""
|
||||
if self.server_mode:
|
||||
return self.factory.getSession(self._session_hash)
|
||||
else:
|
||||
return self.factory.getSession()
|
||||
|
||||
def _startNegotiation(self):
|
||||
log.debug("starting negotiation (client mode)")
|
||||
self.state = STATE_CLIENT_AUTH
|
||||
|
|
@ -531,6 +538,7 @@ class SOCKSv5(protocol.Protocol, FileSender):
|
|||
self.file_obj.write(buf)
|
||||
if not self.active:
|
||||
self.active = True
|
||||
self.getSession()[TIMER_KEY].cancel()
|
||||
return
|
||||
|
||||
self.buf = self.buf + buf
|
||||
|
|
@ -1151,7 +1159,7 @@ class XEP_0065(object):
|
|||
return client._s5b_sessions[session_hash]
|
||||
|
||||
def registerHash(self, *args, **kwargs):
|
||||
"""like [_registerHash] but resturn the session deferred instead of the whole session
|
||||
"""like [_registerHash] but return the session deferred instead of the whole session
|
||||
session deferred is fired when transfer is finished
|
||||
"""
|
||||
return self._registerHash(*args, **kwargs)[DEFER_KEY]
|
||||
|
|
|
|||
Loading…
Reference in a new issue