From 620d3df4c016dfaf8c1d764a0516a73638632280 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sat, 8 Oct 2022 19:40:16 -0700 Subject: [PATCH 1/2] Only delete server client from the sentinel when the client was closed * lisp/server.el (server-sentinel): Only call 'server-delete-client' when closed. --- lisp/server.el | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/lisp/server.el b/lisp/server.el index 3caa335c4e..5034a8e8c6 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -408,21 +408,23 @@ server-sentinel (when (and (eq (process-status proc) 'open) (process-query-on-exit-flag proc)) (set-process-query-on-exit-flag proc nil)) - ;; Delete the associated connection file, if applicable. - ;; Although there's no 100% guarantee that the file is owned by the - ;; running Emacs instance, server-start uses server-running-p to check - ;; for possible servers before doing anything, so it *should* be ours. - (and (process-contact proc :server) - (eq (process-status proc) 'closed) - ;; If this variable is non-nil, the socket was passed in to - ;; Emacs, and not created by Emacs itself (for instance, - ;; created by systemd). In that case, don't delete the socket. - (not internal--daemon-sockname) - (ignore-errors - (delete-file (process-get proc :server-file)))) (server-log (format "Status changed to %s: %s" (process-status proc) msg) proc) - (server-delete-client proc)) + (when (eq (process-status proc) 'closed) + ;; Delete the associated connection file, if applicable. + ;; Although there's no 100% guarantee that the file is owned by + ;; the running Emacs instance, server-start uses server-running-p + ;; to check for possible servers before doing anything, so it + ;; *should* be ours. + (and (process-contact proc :server) + ;; If this variable is non-nil, the socket was passed in to + ;; Emacs, and not created by Emacs itself (for instance, + ;; created by systemd). In that case, don't delete the + ;; socket. + (not internal--daemon-sockname) + (ignore-errors + (delete-file (process-get proc :server-file)))) + (server-delete-client proc))) (defun server--on-display-p (frame display) (and (equal (frame-parameter frame 'display) display) -- 2.25.1