Support case when torrent2http has accidentally crashed
parent
3a0502ffbd
commit
cf2e371cf8
|
@ -150,6 +150,7 @@ class Engine:
|
||||||
self.uri = uri
|
self.uri = uri
|
||||||
self.logpipe = None
|
self.logpipe = None
|
||||||
self.process = None
|
self.process = None
|
||||||
|
self.started = False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _validate_save_path(path):
|
def _validate_save_path(path):
|
||||||
|
@ -246,6 +247,7 @@ class Engine:
|
||||||
raise Error("Can't start torrent2http: %r" % e, Error.POPEN_ERROR)
|
raise Error("Can't start torrent2http: %r" % e, Error.POPEN_ERROR)
|
||||||
|
|
||||||
start = time.time()
|
start = time.time()
|
||||||
|
self.started = True
|
||||||
initialized = False
|
initialized = False
|
||||||
while (time.time() - start) < self.startup_timeout:
|
while (time.time() - start) < self.startup_timeout:
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
@ -259,6 +261,7 @@ class Engine:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if not initialized:
|
if not initialized:
|
||||||
|
self.started = False
|
||||||
raise Error("Can't start torrent2http, time is out", Error.TIMEOUT)
|
raise Error("Can't start torrent2http, time is out", Error.TIMEOUT)
|
||||||
self._log("torrent2http successfully started.")
|
self._log("torrent2http successfully started.")
|
||||||
|
|
||||||
|
@ -323,7 +326,7 @@ class Engine:
|
||||||
raise Error("Can't decode response from torrent2http: %r" % e, Error.REQUEST_ERROR)
|
raise Error("Can't decode response from torrent2http: %r" % e, Error.REQUEST_ERROR)
|
||||||
|
|
||||||
def _request(self, cmd, timeout=None):
|
def _request(self, cmd, timeout=None):
|
||||||
if not self.is_alive():
|
if not self.started:
|
||||||
raise Error("torrent2http is not started", Error.REQUEST_ERROR)
|
raise Error("torrent2http is not started", Error.REQUEST_ERROR)
|
||||||
try:
|
try:
|
||||||
url = "http://%s:%s/%s" % (self.bind_host, self.bind_port, cmd)
|
url = "http://%s:%s/%s" % (self.bind_host, self.bind_port, cmd)
|
||||||
|
@ -334,6 +337,8 @@ class Engine:
|
||||||
except urllib2.URLError as e:
|
except urllib2.URLError as e:
|
||||||
if isinstance(e.reason, socket.timeout):
|
if isinstance(e.reason, socket.timeout):
|
||||||
raise Error("Timeout occurred while sending command '%s' to torrent2http" % cmd, Error.TIMEOUT)
|
raise Error("Timeout occurred while sending command '%s' to torrent2http" % cmd, Error.TIMEOUT)
|
||||||
|
elif not self.is_alive() and self.started:
|
||||||
|
raise Error("torrent2http has crashed.", Error.CRASHED)
|
||||||
else:
|
else:
|
||||||
raise Error("Can't send command '%s' to torrent2http: %r" % (cmd, e), Error.REQUEST_ERROR)
|
raise Error("Can't send command '%s' to torrent2http: %r" % (cmd, e), Error.REQUEST_ERROR)
|
||||||
except socket.error as e:
|
except socket.error as e:
|
||||||
|
@ -364,5 +369,6 @@ class Engine:
|
||||||
else:
|
else:
|
||||||
self._log("torrent2http successfully shut down.")
|
self._log("torrent2http successfully shut down.")
|
||||||
self.wait_on_close_timeout = None
|
self.wait_on_close_timeout = None
|
||||||
|
self.started = False
|
||||||
self.logpipe = None
|
self.logpipe = None
|
||||||
self.process = None
|
self.process = None
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
class Error(Exception):
|
class Error(Exception):
|
||||||
TORRENT_ERROR = 12
|
TORRENT_ERROR = 12
|
||||||
|
CRASHED = 13
|
||||||
UNKNOWN_PLATFORM = 1
|
UNKNOWN_PLATFORM = 1
|
||||||
XBMC_HOME_NOT_DEFINED = 2
|
XBMC_HOME_NOT_DEFINED = 2
|
||||||
NOEXEC_FILESYSTEM = 3
|
NOEXEC_FILESYSTEM = 3
|
||||||
|
|
Loading…
Reference in New Issue