Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- ace208win2087.py/ACEStream//Core/APIImplementation/SingleDownload.py 2013-03-29 19:35:30.923689114 +0200
- +++ ace208_8.py/ACEStream//Core/APIImplementation/SingleDownload.py 2013-05-20 10:47:06.576663100 +0300
- @@ -42,6 +43,7 @@
- self.repexer = None
- self.log_prefix = 'sd::' + binascii.hexlify(self.infohash) + ':'
- self.lock = Lock()
- + self.stopping = False
- self.download_id = binascii.hexlify(self.infohash) + '-' + str(long(time.time())) + '-' + str(random.randint(0, 100000))
- try:
- self.dldoneflag = Event()
- @@ -288,11 +297,20 @@
- else:
- return
- - def shutdown(self):
- + def shutdown(self, blocking = True):
- if DEBUG:
- log(self.log_prefix + 'shutdown: thread', currentThread().getName())
- resumedata = None
- - self.lock.acquire()
- + if self.stopping:
- + if DEBUG:
- + log(self.log_prefix + 'shutdown: already stopping, exit: thread', currentThread().getName())
- + return
- + if DEBUG:
- + log(self.log_prefix + 'shutdown, acquire lock: blocking', blocking, 'thread', currentThread().getName())
- + locked = self.lock.acquire(blocking)
- + if DEBUG:
- + log(self.log_prefix + 'shutdown, got lock: locked', locked, 'thread', currentThread().getName())
- + self.stopping = True
- try:
- if self.dow is not None:
- if self.repexer:
- @@ -314,7 +332,11 @@
- elif DEBUG:
- log(self.log_prefix + 'shutdown: regular shutdown: _getstatsfunc', self._getstatsfunc, 'thread', currentThread().getName())
- finally:
- - self.lock.release()
- + if DEBUG:
- + log(self.log_prefix + 'shutdown, release lock: thread', currentThread().getName())
- + self.stopping = False
- + if locked:
- + self.lock.release()
- return resumedata
- @@ -464,7 +498,7 @@
- else:
- log_exc()
- self.set_error_func(data)
- - self.shutdown()
- + self.shutdown(blocking=False)
- def nonfatalerrorfunc(self, e):
- log(self.log_prefix + 'nonfatalerrorfunc called', e)
- --- ace208win2087.py/ACEStream//Core/BitTornado/BT1/Storage.py 2013-03-29 19:35:14.779609062 +0200
- +++ ace208_8.py/ACEStream//Core/BitTornado/BT1/Storage.py 2013-05-20 10:46:50.448583123 +0300
- @@ -256,8 +259,14 @@
- f.flush()
- self.unlock_file(file, f)
- f.close()
- - self.tops[file] = getsize(file)
- - self.mtimes[file] = getmtime(file)
- + if os.path.isfile(file):
- + self.tops[file] = getsize(file)
- + self.mtimes[file] = getmtime(file)
- + else:
- + if DEBUG:
- + log(self.log_prefix + '_close: missing file', file)
- + self.tops[file] = 0
- + self.mtimes[file] = 0
- else:
- if self.lock_while_reading:
- self.unlock_file(file, f)
- --- ace208win2087.py/ACEStream//Core/BitTornado/BT1/StorageWrapper.py 2013-04-02 12:15:39.367801320 +0300
- +++ ace208_8.py/ACEStream//Core/BitTornado/BT1/StorageWrapper.py 2013-05-20 10:46:57.052615873 +0300
- @@ -855,14 +871,19 @@
- try:
- self.storage.sync()
- except IOError as e:
- + print_exc()
- self.failed('IO Error: ' + str(e))
- except OSError as e:
- + print_exc()
- self.failed('OS Error: ' + str(e))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement