lib/PublicInbox/LEI.pm | 7 +++++-- lib/PublicInbox/LeiXSearch.pm | 7 ------- diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index fd2b722c7bf4c3a3ac4e4b2e6f03d1072be5747a..a8fea16d3aa47077b3f761a37705acf081582c81 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -26,6 +26,7 @@ use Text::Wrap qw(wrap); use File::Path qw(mkpath); use File::Spec; our $quit = \&CORE::exit; +our $current_lei; my ($recv_cmd, $send_cmd); my $GLP = Getopt::Long::Parser->new; $GLP->configure(qw(gnu_getopt no_ignore_case auto_abbrev)); @@ -447,7 +448,7 @@ } sub dispatch { my ($self, $cmd, @argv) = @_; - local $SIG{__WARN__} = sub { err($self, @_) }; + local $current_lei = $self; # for __WARN__ return _help($self, 'no command given') unless defined($cmd); my $func = "lei_$cmd"; $func =~ tr/-/_/; @@ -849,7 +850,9 @@ # STDIN was redirected to /dev/null above, closing STDERR and # STDOUT will cause the calling `lei' client process to finish # reading the <$daemon> pipe. openlog($path, 'pid', 'user'); - local $SIG{__WARN__} = sub { syslog('warning', "@_") }; + local $SIG{__WARN__} = sub { + $current_lei ? err($current_lei, @_) : syslog('warning', "@_"); + }; my $on_destroy = PublicInbox::OnDestroy->new($$, sub { syslog('crit', "$@") if $@; }); diff --git a/lib/PublicInbox/LeiXSearch.pm b/lib/PublicInbox/LeiXSearch.pm index d06b6f1d63ad4a7480a6324949278722fe606ed8..68889e813d89319424ea9907d4b115da8a157652 100644 --- a/lib/PublicInbox/LeiXSearch.pm +++ b/lib/PublicInbox/LeiXSearch.pm @@ -8,7 +8,6 @@ package PublicInbox::LeiXSearch; use strict; use v5.10.1; use parent qw(PublicInbox::LeiSearch PublicInbox::IPC); -use Sys::Syslog qw(syslog); sub new { my ($class) = @_; @@ -185,12 +184,6 @@ $self->wq_close; read($eof_wait, my $buf, 1); # wait for close($lei->{0}) query_done($lei_orig); # may SIGPIPE } -} - -sub ipc_atfork_child { - my ($self) = @_; - $SIG{__WARN__} = sub { syslog('warning', "@_") }; - $self->SUPER::ipc_atfork_child; # PublicInbox::IPC } sub ipc_atfork_prepare {