]> git.eshelyaron.com Git - emacs.git/commitdiff
Shut down jsonrpc server more gracefully
authorDaniel Pettersson <daniel@dpettersson.net>
Tue, 23 Apr 2024 16:58:06 +0000 (18:58 +0200)
committerEshel Yaron <me@eshelyaron.com>
Mon, 29 Apr 2024 15:04:47 +0000 (17:04 +0200)
* lisp/jsonrpc.el (jsonrpc-running-p): Avoid unnecessarily killing
the server process.  Suggested by Aaron Zeng <azeng@janestreet.com>.
(Bug#70522)

(cherry picked from commit 3aed4400257a6762de96be37fa95357b5836363c)

lisp/jsonrpc.el

index 5037d8c5b2baab39855723d72632b4ccf1f6f3e8..111e58cefe2a77df9015a4e0ba3042557303fd03 100644 (file)
@@ -591,15 +591,18 @@ connection object, called when the process dies.")
 (cl-defmethod jsonrpc-shutdown ((conn jsonrpc-process-connection)
                                 &optional cleanup)
   "Wait for JSONRPC connection CONN to shutdown.
-With optional CLEANUP, kill any associated buffers."
+With optional CLEANUP, kill any associated buffers.
+If CONN is not shutdown within an reasonable amount of time, warn
+and delete process."
   (unwind-protect
       (cl-loop
        with proc = (jsonrpc--process conn) for i from 0
        while (not (process-get proc 'jsonrpc-sentinel-cleanup-started))
        unless (zerop i) do
        (jsonrpc--warn "Sentinel for %s still hasn't run, deleting it!" proc)
-       do
        (delete-process proc)
+       do
+       ;; Let sentinel have a chance to run
        (accept-process-output nil 0.1))
     (when cleanup
       (kill-buffer (process-buffer (jsonrpc--process conn)))