From c07745d79ca58b526b6d16cefc94b3ff0520df52 Mon Sep 17 00:00:00 2001 From: clinton-hall Date: Fri, 30 Jan 2015 12:30:20 +1030 Subject: [PATCH] use socket to verify if running on Linux. Fixes #638 #588 --- nzbtomedia/__init__.py | 3 ++- nzbtomedia/nzbToMediaUtil.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/nzbtomedia/__init__.py b/nzbtomedia/__init__.py index 2322ee47..fb47a4bf 100644 --- a/nzbtomedia/__init__.py +++ b/nzbtomedia/__init__.py @@ -18,6 +18,7 @@ APP_NAME = os.path.basename(APP_FILENAME) LOG_DIR = os.path.join(PROGRAM_DIR, 'logs') LOG_FILE = os.path.join(LOG_DIR, 'nzbtomedia.log') PID_FILE = os.path.join(LOG_DIR, 'nzbtomedia.pid') +LOCK_SOCKET = None CONFIG_FILE = os.path.join(PROGRAM_DIR, 'autoProcessMedia.cfg') CONFIG_SPEC_FILE = os.path.join(PROGRAM_DIR, 'autoProcessMedia.cfg.spec') CONFIG_MOVIE_FILE = os.path.join(PROGRAM_DIR, 'autoProcessMovie.cfg') @@ -198,7 +199,7 @@ def initialize(section=None): TRANSMISSIONHOST, TRANSMISSIONPORT, TRANSMISSIONPWD, TRANSMISSIONUSR, COMPRESSEDCONTAINER, MEDIACONTAINER, \ METACONTAINER, SECTIONS, ALL_FORKS, TEST_FILE, GENERALOPTS, LOG_GIT, GROUPS, SEVENZIP, CONCAT, VCRF, \ __INITIALIZED__, AUTO_UPDATE, APP_FILENAME, USER_DELAY, APP_NAME, TRANSCODE, DEFAULTS, GIT_PATH, GIT_USER, \ - GIT_BRANCH, GIT_REPO, SYS_ENCODING, NZB_CLIENTAGENT, SABNZBDHOST, SABNZBDPORT, SABNZBDAPIKEY, \ + GIT_BRANCH, GIT_REPO, SYS_ENCODING, NZB_CLIENTAGENT, SABNZBDHOST, SABNZBDPORT, SABNZBDAPIKEY, LOCK_SOCKET, \ DUPLICATE, IGNOREEXTENSIONS, VEXTENSION, OUTPUTVIDEOPATH, PROCESSOUTPUT, VCODEC, VCODEC_ALLOW, VPRESET, \ VFRAMERATE, LOG_DB, VBITRATE, VRESOLUTION, ALANGUAGE, AINCLUDE, ACODEC, ACODEC_ALLOW, ABITRATE, \ ACODEC2, ACODEC2_ALLOW, ABITRATE2, ACODEC3, ACODEC3_ALLOW, ABITRATE3, ALLOWSUBS, SEXTRACT, SEMBED, SLANGUAGES, \ diff --git a/nzbtomedia/nzbToMediaUtil.py b/nzbtomedia/nzbToMediaUtil.py index 151aeb1b..0f21f50b 100644 --- a/nzbtomedia/nzbToMediaUtil.py +++ b/nzbtomedia/nzbToMediaUtil.py @@ -1143,6 +1143,14 @@ class PosixProcess(): self.pidpath = nzbtomedia.PID_FILE def alreadyrunning(self): + try: + nzbtomedia.LOCK_SOCKET = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) + nzbtomedia.LOCK_SOCKET.bind('\0' + 'nzbtomedia') + return False + except socket.error as e: + if "Address already in use" in e: + return True + except AttributeError: pass if os.path.exists(self.pidpath): # Make sure it is not a "stale" pidFile try: