services: nginx: Don't read PID file when passed a custom config file.

Fixes <https://bugs.gnu.org/32665>.

* gnu/services/web.scm (nginx-shepherd-service): Check whether FILE is
true and don't read the PID file if it is; use 'read-pid-file' instead
of a potentially endless loop.
This commit is contained in:
Ludovic Courtès 2018-09-08 18:48:48 +02:00
parent c665774a1c
commit 985975ae80
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -610,14 +610,12 @@ (define (nginx-shepherd-service config)
(match '#$args (match '#$args
(("-s" . _) #t) (("-s" . _) #t)
(_ (_
(let loop ((duration 0)) ;; When FILE is true, we cannot be sure that PID-FILE will
;; https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864/comments/7 ;; be created, so assume it won't show up. When FILE is
(sleep duration) ;; false, read PID-FILE.
(if (file-exists? #$pid-file) #$(if file
(let ((pid (call-with-input-file #$pid-file read))) #~#t
;; it could be #<eof> #~(read-pid-file #$pid-file))))))))
(if (integer? pid) pid (loop 1)))
(loop 1)))))))))
;; TODO: Add 'reload' action. ;; TODO: Add 'reload' action.
(list (shepherd-service (list (shepherd-service