Advertisement
Guest User

Untitled

a guest
May 20th, 2013
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.55 KB | None | 0 0
  1. --- ace208win2087.py/ACEStream//Core/APIImplementation/SingleDownload.py        2013-03-29 19:35:30.923689114 +0200
  2. +++ ace208_8.py/ACEStream//Core/APIImplementation/SingleDownload.py     2013-05-20 10:47:06.576663100 +0300
  3. @@ -42,6 +43,7 @@
  4.          self.repexer = None
  5.          self.log_prefix = 'sd::' + binascii.hexlify(self.infohash) + ':'
  6.          self.lock = Lock()
  7. +        self.stopping = False
  8.          self.download_id = binascii.hexlify(self.infohash) + '-' + str(long(time.time())) + '-' + str(random.randint(0, 100000))
  9.          try:
  10.              self.dldoneflag = Event()
  11. @@ -288,11 +297,20 @@
  12.          else:
  13.              return
  14.  
  15. -    def shutdown(self):
  16. +    def shutdown(self, blocking = True):
  17.          if DEBUG:
  18.              log(self.log_prefix + 'shutdown: thread', currentThread().getName())
  19.          resumedata = None
  20. -        self.lock.acquire()
  21. +        if self.stopping:
  22. +            if DEBUG:
  23. +                log(self.log_prefix + 'shutdown: already stopping, exit: thread', currentThread().getName())
  24. +            return
  25. +        if DEBUG:
  26. +            log(self.log_prefix + 'shutdown, acquire lock: blocking', blocking, 'thread', currentThread().getName())
  27. +        locked = self.lock.acquire(blocking)
  28. +        if DEBUG:
  29. +            log(self.log_prefix + 'shutdown, got lock: locked', locked, 'thread', currentThread().getName())
  30. +        self.stopping = True
  31.          try:
  32.              if self.dow is not None:
  33.                  if self.repexer:
  34. @@ -314,7 +332,11 @@
  35.              elif DEBUG:
  36.                  log(self.log_prefix + 'shutdown: regular shutdown: _getstatsfunc', self._getstatsfunc, 'thread', currentThread().getName())
  37.          finally:
  38. -            self.lock.release()
  39. +            if DEBUG:
  40. +                log(self.log_prefix + 'shutdown, release lock: thread', currentThread().getName())
  41. +            self.stopping = False
  42. +            if locked:
  43. +                self.lock.release()
  44.  
  45.          return resumedata
  46.  
  47. @@ -464,7 +498,7 @@
  48.          else:
  49.              log_exc()
  50.              self.set_error_func(data)
  51. -        self.shutdown()
  52. +        self.shutdown(blocking=False)
  53.  
  54.      def nonfatalerrorfunc(self, e):
  55.          log(self.log_prefix + 'nonfatalerrorfunc called', e)
  56.  
  57. --- ace208win2087.py/ACEStream//Core/BitTornado/BT1/Storage.py  2013-03-29 19:35:14.779609062 +0200
  58. +++ ace208_8.py/ACEStream//Core/BitTornado/BT1/Storage.py       2013-05-20 10:46:50.448583123 +0300
  59.  
  60. @@ -256,8 +259,14 @@
  61.              f.flush()
  62.              self.unlock_file(file, f)
  63.              f.close()
  64. -            self.tops[file] = getsize(file)
  65. -            self.mtimes[file] = getmtime(file)
  66. +            if os.path.isfile(file):
  67. +                self.tops[file] = getsize(file)
  68. +                self.mtimes[file] = getmtime(file)
  69. +            else:
  70. +                if DEBUG:
  71. +                    log(self.log_prefix + '_close: missing file', file)
  72. +                self.tops[file] = 0
  73. +                self.mtimes[file] = 0
  74.          else:
  75.              if self.lock_while_reading:
  76.                  self.unlock_file(file, f)
  77.  
  78. --- ace208win2087.py/ACEStream//Core/BitTornado/BT1/StorageWrapper.py   2013-04-02 12:15:39.367801320 +0300
  79. +++ ace208_8.py/ACEStream//Core/BitTornado/BT1/StorageWrapper.py        2013-05-20 10:46:57.052615873 +0300
  80. @@ -855,14 +871,19 @@
  81.          try:
  82.              self.storage.sync()
  83.          except IOError as e:
  84. +            print_exc()
  85.              self.failed('IO Error: ' + str(e))
  86.          except OSError as e:
  87. +            print_exc()
  88.              self.failed('OS Error: ' + str(e))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement