summaryrefslogtreecommitdiffstats
path: root/deluge/ui/gtkui/ipcinterface.py
diff options
context:
space:
mode:
Diffstat (limited to 'deluge/ui/gtkui/ipcinterface.py')
-rw-r--r--deluge/ui/gtkui/ipcinterface.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/deluge/ui/gtkui/ipcinterface.py b/deluge/ui/gtkui/ipcinterface.py
index 222001c09..9b79bb990 100644
--- a/deluge/ui/gtkui/ipcinterface.py
+++ b/deluge/ui/gtkui/ipcinterface.py
@@ -120,24 +120,28 @@ class IPCInterface(component.Component):
sys.exit(0)
else:
# Find and remove any restart tempfiles
- old_tempfile = glob(os.path.join(ipc_dir, 'tmp*deluge'))
- for f in old_tempfile:
+ restart_tempfile = glob(os.path.join(ipc_dir, 'tmp*deluge'))
+ for f in restart_tempfile:
os.remove(f)
lockfile = socket + ".lock"
log.debug("Checking if lockfile exists: %s", lockfile)
- if os.path.lexists(lockfile) or os.path.lexists(socket):
- try:
- os.kill(int(os.readlink(lockfile)), 0)
- except OSError:
+ if os.path.lexists(lockfile):
+ def delete_lockfile():
log.debug("Removing lockfile since it's stale.")
try:
os.remove(lockfile)
- except OSError, ex:
- log.error("Failed to delete IPC lockfile file: %s", ex)
- try:
os.remove(socket)
- except OSError, ex:
- log.error("Failed to delete IPC socket file: %s", ex)
+ except OSError as ex:
+ log.error("Failed to delete lockfile: %s", ex)
+
+ try:
+ os.kill(int(os.readlink(lockfile)), 0)
+ except OSError:
+ delete_lockfile()
+ else:
+ if restart_tempfile:
+ log.warning("Found running PID but it is not a Deluge process, removing lockfile...")
+ delete_lockfile()
try:
self.factory = Factory()
self.factory.protocol = IPCProtocolServer
@@ -154,7 +158,7 @@ class IPCInterface(component.Component):
gtk.gdk.notify_startup_complete()
sys.exit(0)
else:
- if old_tempfile:
+ if restart_tempfile:
log.error("Deluge restart failed: %s", e)
sys.exit(1)
else: