Hello, This is a way that would solve bug #17698[1]. It just reuses the same handler as SIGINT (with a function rename).
This patch works best if it is combined with my previous submission[2]. I can rebase that submission if and when this patch is pulled in. [1]: https://www.postgresql.org/message-id/17698-58a6ab8caec496b0%40postgresql.org [2]: https://www.postgresql.org/message-id/CSSWBAX56CVY.291H6ZNNHK7EO%40c3po -- Tristan Partin Neon (https://neon.tech)
From 42db43794c38341a088570e0033a945cc077a350 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Mon, 22 May 2023 12:12:06 -0500 Subject: [PATCH postgres v1] Handle SIGTERM in fe_utils/cancel.c This is the same handling as SIGINT. This issue was originally reported in https://www.postgresql.org/message-id/17698-58a6ab8caec496b0%40postgresql.org. --- src/fe_utils/cancel.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/fe_utils/cancel.c b/src/fe_utils/cancel.c index 10c0cd4554..b13003d405 100644 --- a/src/fe_utils/cancel.c +++ b/src/fe_utils/cancel.c @@ -150,7 +150,7 @@ ResetCancelConn(void) * is set. */ static void -handle_sigint(SIGNAL_ARGS) +handle_signal(SIGNAL_ARGS) { int save_errno = errno; char errbuf[256]; @@ -180,7 +180,7 @@ handle_sigint(SIGNAL_ARGS) /* * setup_cancel_handler * - * Register query cancellation callback for SIGINT. + * Register query cancellation callback for SIGINT and SIGTERM. */ void setup_cancel_handler(void (*query_cancel_callback) (void)) @@ -189,7 +189,8 @@ setup_cancel_handler(void (*query_cancel_callback) (void)) cancel_sent_msg = _("Cancel request sent\n"); cancel_not_sent_msg = _("Could not send cancel request: "); - pqsignal(SIGINT, handle_sigint); + pqsignal(SIGINT, handle_signal); + pqsignal(SIGTERM, handle_signal); } #else /* WIN32 */ -- -- Tristan Partin Neon (https://neon.tech)