From 9e9d1a5a3a2a877c03a47e7ee1f71568547a4cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulysse=20G=C3=A9rard?= Date: Mon, 13 May 2024 17:11:51 +0200 Subject: [PATCH] [B] Ignore SIGPIPE in the Merlin server process (#1746) from liam923/ignore-sigpipe --- CHANGES.md | 1 + src/frontend/ocamlmerlin/ocamlmerlin_server.ml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 59f1a830f5..475d73380d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ merlin NEXT_VERSION - destruct: Removal of residual patterns (#1737, fixes #1560) - Do not erase fields' names when destructing punned record fields (#1734, fixes #1661) + - Ignore SIGPIPE in the Merlin server process (#1746) merlin 4.14 =========== diff --git a/src/frontend/ocamlmerlin/ocamlmerlin_server.ml b/src/frontend/ocamlmerlin/ocamlmerlin_server.ml index 0cc4cbc29b..56b967a9a4 100644 --- a/src/frontend/ocamlmerlin/ocamlmerlin_server.ml +++ b/src/frontend/ocamlmerlin/ocamlmerlin_server.ml @@ -64,6 +64,8 @@ module Server = struct | None -> Logger.log ~section:"server" ~title:"cannot setup listener" "" | Some server -> + (* If the client closes its connection, don't let it kill us with a SIGPIPE. *) + if Sys.unix then Sys.set_signal Sys.sigpipe Sys.Signal_ignore; loop (File_id.get Sys.executable_name) server; Os_ipc.server_close server end