# HG changeset patch # User Goffi # Date 1454951167 -3600 # Node ID 2bde6fc7aabd6738338694e093171386a4efbdfc # Parent 489b968b37238b94272084caa79d1ae05fb0b52a plugin XEP-0065: fixed timer cancellation when a profile is receiving a file diff -r 489b968b3723 -r 2bde6fc7aabd src/plugins/plugin_xep_0065.py --- a/src/plugins/plugin_xep_0065.py Thu Feb 04 18:56:53 2016 +0100 +++ b/src/plugins/plugin_xep_0065.py Mon Feb 08 18:06:07 2016 +0100 @@ -324,12 +324,19 @@ @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 @@ 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 @@ 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]