From a1d21a7a2152ca7d229fa182bd9546f78433679c Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 15 May 2025 13:25:18 -0400 Subject: [PATCH] Bug 39911: Trap DIE signals in SIP server At some point our SIP server stopped logging fatal errors to either logs or standard error. We should restore this vital functionality. Test Plan: 1) Apply the first patch which will cause the patron information request to fail 2) Stop the SIP server 3) Start it again with: perl /kohadevbox/koha/C4/SIP/SIPServer.pm /etc/koha/sites/kohadev/SIPconfig.xml 4) Trigger the failure with the following command: ./misc/sip_cli_emulator.pl -a 127.0.0.1 -p 6001 -su koha -sp koha -l MPL --patron koha -m patron_information 5) Note "THIS IS A TEST" is not found in logs or stderr 6) Apply the second patch 7) Repeat steps 2-4 8) Note the error message is now visible from stderr at the command line and also in the SIP log Signed-off-by: Magnus Enger --- C4/SIP/Trapper.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/C4/SIP/Trapper.pm b/C4/SIP/Trapper.pm index cfbfd2aff0..ce1be20e97 100644 --- a/C4/SIP/Trapper.pm +++ b/C4/SIP/Trapper.pm @@ -56,4 +56,12 @@ sub BINMODE { binmode( STDOUT, $mode ); } +$SIG{__DIE__} = sub { + my $msg = shift; + my $logger = Koha::Logger->get( { interface => 'sip', category => 'STDERR' } ); + $logger->error($msg) if $logger; + warn $msg; # die doesn't output the message, warn before dying + die $msg; +}; + 1; -- 2.34.1