]> git.ktnx.net Git - mpd-feeder.git/blobdiff - lib/App/MPD/Feeder.pm
show command line upon re-exec (log_level=trace)
[mpd-feeder.git] / lib / App / MPD / Feeder.pm
index c23b4b465bf6c3c4590b96a549a14000d004d9cc..dfb83c7b200e478dddf4405894d4c2f0477b4299 100644 (file)
@@ -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',
@@ -495,7 +515,18 @@ SQL
                 $log->notice("disconnecting");
                 $self->stop;
 
-                exec( "$0", '--config', $self->cfg_file, '--skip-db-update' );
+                my @exec = ( $0, '--config', $self->cfg_file, '--skip-db-update' );
+                if ( $log->is_trace ) {
+                    $log->trace( 'exec '
+                            . join( ' ', map { /\s/ ? "'$_'" : $_ } @exec ) );
+                }
+                exec(@exec);
+            }
+
+            if ( 'quit' eq $result ) {
+                $log->trace("quitting because of 'quit' loop result");
+                $self->stop;
+                exit 0;
             }
         }
     }