From 99ee7dfadcf8b6c86a2da8f1f33b552efa22c4c1 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Fri, 12 Nov 2021 07:23:36 +0000 Subject: [PATCH] exit cleanly on SIGTERM and SIGINT --- lib/App/MPD/Feeder.pm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/App/MPD/Feeder.pm b/lib/App/MPD/Feeder.pm index c23b4b4..c495f9c 100644 --- a/lib/App/MPD/Feeder.pm +++ b/lib/App/MPD/Feeder.pm @@ -58,6 +58,26 @@ use constant DEFAULT_CONFIG_FILE => '/etc/mpd-feeder/mpd-feeder.conf'; $mpd = Net::Async::MPD->new(%conn); + $mpd->loop->add( + IO::Async::Signal->new( + name => 'TERM', + on_receipt => sub { + $log->debug("SIGTERM received. Stopping loop"); + $mpd->loop->stop('quit'); + }, + ) + ); + + $mpd->loop->add( + IO::Async::Signal->new( + name => 'INT', + on_receipt => sub { + $log->debug("SIGINT received. Stopping loop"); + $mpd->loop->stop('quit'); + }, + ) + ); + $mpd->loop->add( IO::Async::Signal->new( name => 'HUP', @@ -497,6 +517,12 @@ SQL exec( "$0", '--config', $self->cfg_file, '--skip-db-update' ); } + + if ( 'quit' eq $result ) { + $log->trace("quitting because of 'quit' loop result"); + $self->stop; + exit 0; + } } } } -- 2.39.2