| Bring back the --pid functionality of 3.x, needed for our init script. |
| |
| Patch contributed by Nikita Kozlov (klnikita / klnikita_ on IRC). |
| |
| Slight adjustments made to use --pid instead of --pidfile and reordered --help. |
| |
| URL: https://dpaste.org/Menvq/ |
| BUG: https://bugs.gentoo.org/show_bug.cgi?id=472422 |
| |
| --- a/fiber.py |
| +++ b/fiber.py |
| @@ -136,11 +136,13 @@ |
| self.__stdout.flush() |
| self.__newline = string.endswith( '\n' ) |
| |
| |
| -def fork( output ): |
| +def fork( output, pidfile ): |
| |
| try: |
| + if pidfile: |
| + pidout = open(pidfile, 'w') # open pid file for writing |
| log = open( output, 'w' ) |
| nul = open( '/dev/null', 'r' ) |
| pid = os.fork() |
| except IOError, e: |
| @@ -166,17 +168,20 @@ |
| print 'error:', e |
| sys.exit( 1 ) |
| |
| if pid: |
| + if pidfile: |
| + pidout.write(str(pid)) |
| + pidout.close() |
| print pid |
| sys.exit( 0 ) |
| |
| os.dup2( log.fileno(), sys.stdout.fileno() ) |
| os.dup2( log.fileno(), sys.stderr.fileno() ) |
| os.dup2( nul.fileno(), sys.stdin.fileno() ) |
| |
| |
| -def spawn( generator, port, debug, log ): |
| +def spawn( generator, port, debug, log, pidfile ): |
| |
| try: |
| listener = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) |
| listener.setblocking( 0 ) |
| @@ -187,9 +192,9 @@ |
| print 'error: failed to create socket:', e |
| sys.exit( 1 ) |
| |
| if log: |
| - fork( log ) |
| + fork( log, pidfile ) |
| |
| if debug: |
| myFiber = DebugFiber |
| else: |
| --- a/http-replicator |
| +++ b/http-replicator |
| @@ -59,5 +59,5 @@ |
| |
| print 'Transaction successfully completed' |
| |
| |
| -fiber.spawn( Replicator, Params.PORT, Params.DEBUG, Params.LOG ) |
| +fiber.spawn( Replicator, Params.PORT, Params.DEBUG, Params.LOG, Params.PIDFILE ) |
| --- a/Params.py |
| +++ b/Params.py |
| @@ -6,8 +6,9 @@ |
| PORT = 8080 |
| ROOT = os.getcwd() + os.sep |
| VERBOSE = 0 |
| TIMEOUT = 15 |
| +PIDFILE = False |
| FAMILY = socket.AF_INET |
| FLAT = False |
| STATIC = False |
| ONLINE = True |
| @@ -21,8 +22,9 @@ |
| |
| options: |
| + --pid FILE write process ID to FILE |
| -h --help show this help message and exit |
| -p --port PORT listen on this port for incoming connections, default %(PORT)i |
| -r --root DIR set cache root directory, default current: %(ROOT)s |
| -v --verbose show http headers and other info |
| -t --timeout SEC break connection after so many seconds of inactivity, default %(TIMEOUT)i |
| -6 --ipv6 try ipv6 addresses if available |
| @@ -74,8 +76,10 @@ |
| except: |
| sys.exit( 'Error: %s requires a numerical argument' % _arg ) |
| elif _arg == '--daemon': |
| LOG = _args.next() |
| + elif _arg == '--pid': |
| + PIDFILE = _args.next() |
| elif _arg == '--debug': |
| DEBUG = True |
| else: |
| sys.exit( 'Error: invalid option %r' % _arg ) |