From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 8D49B1F54E for ; Wed, 10 Aug 2022 15:58:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1660147081; bh=nNVs2fMKpNosuFiQ9I6UMV66ht8gP+dvkkw0eYfDknE=; h=From:To:Subject:Date:From; b=M+WjHUGPky0eoFhqwaSBPZMNbnplVtvnCqWy6NZcFY5sMcE53u0nu/SuEi29Ykc5j 4nA+yRbberWDAcgCjoHwnYn9//wjw+Wa5VbA+pWdMVjjOtlH98qGPw4wlYYSxnOrGZ E6PrYp/7gLDfXtN4rsDfeSUMyjjdPYmVONCEwQxk= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] daemon: rely on $SIG{__WARN__} for error output Date: Wed, 10 Aug 2022 15:58:01 +0000 Message-Id: <20220810155801.3329683-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: warn/carp usage is unavoidable given Perl itself and standard libraries, so just rely on localized $SIG{__WARN__} from 60d262483a4d6ddf (daemon: use per-listener SIG{__WARN__} callbacks, 2022-08-08) for all error reporting. While we're in the area, make some of the error handling more consistent between IMAP/NNTP/POP3. --- lib/PublicInbox/DS.pm | 4 ++-- lib/PublicInbox/DSdeflate.pm | 2 +- lib/PublicInbox/IMAP.pm | 12 +++--------- lib/PublicInbox/NNTP.pm | 10 ++-------- lib/PublicInbox/POP3.pm | 9 ++------- 5 files changed, 10 insertions(+), 27 deletions(-) diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 5e8a6a66..26840662 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -660,8 +660,8 @@ sub long_step { if ($@ || !$self->{sock}) { # something bad happened... delete $self->{long_cb}; my $elapsed = now() - $t0; - $@ and $self->err("%s during long response[$fd] - %0.6f", - $@, $elapsed); + $@ and warn("$@ during long response[$fd] - ", + sprintf('%0.6f', $elapsed),"\n"); $self->out(" deferred[$fd] aborted - %0.6f", $elapsed); $self->close; } elsif ($more) { # $self->{wbuf}: diff --git a/lib/PublicInbox/DSdeflate.pm b/lib/PublicInbox/DSdeflate.pm index 639690e2..539adf0f 100644 --- a/lib/PublicInbox/DSdeflate.pm +++ b/lib/PublicInbox/DSdeflate.pm @@ -46,7 +46,7 @@ sub enable { my ($class, $self) = @_; my ($in, $err) = Compress::Raw::Zlib::Inflate->new(%IN_OPT); if ($err != Z_OK) { - $self->err("Inflate->new failed: $err"); + warn("Inflate->new failed: $err\n"); return; } bless $self, $class; diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index 2be1b763..0a65d87c 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -1165,17 +1165,11 @@ sub process_line ($$) { my $err = $@; if ($err && $self->{sock}) { $l =~ s/\r?\n//s; - err($self, 'error from: %s (%s)', $l, $err); + warn("error from: $l ($err)\n"); $tag //= '*'; - $res = "$tag BAD program fault - command not performed\r\n"; + $res = \"$tag BAD program fault - command not performed\r\n"; } - return 0 unless defined $res; - $self->write($res); -} - -sub err ($$;@) { - my ($self, $fmt, @args) = @_; - printf { $self->{imapd}->{err} } $fmt."\n", @args; + defined($res) ? $self->write($res) : 0; } sub out ($$;@) { diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index ef01f448..ceaf05f6 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -72,9 +72,8 @@ sub process_line ($$) { my $res = eval { $req->($self, @args) }; my $err = $@; if ($err && $self->{sock}) { - local $/ = "\n"; - chomp($l); - err($self, 'error from: %s (%s)', $l, $err); + $l =~ s/\r?\n//s; + warn("error from: $l ($err)\n"); $res = \"503 program fault - command not performed\r\n"; } defined($res) ? $self->write($res) : 0; @@ -945,11 +944,6 @@ sub cmd_xpath ($$) { '223 '.join(' ', sort(@paths))."\r\n"; } -sub err ($$;@) { - my ($self, $fmt, @args) = @_; - printf { $self->{nntpd}->{err} } $fmt."\n", @args; -} - sub out ($$;@) { my ($self, $fmt, @args) = @_; printf { $self->{nntpd}->{out} } $fmt."\n", @args; diff --git a/lib/PublicInbox/POP3.pm b/lib/PublicInbox/POP3.pm index c993e558..82df257c 100644 --- a/lib/PublicInbox/POP3.pm +++ b/lib/PublicInbox/POP3.pm @@ -45,11 +45,6 @@ use constant { # XXX FIXME: duplicated stuff from NNTP.pm and IMAP.pm -sub err ($$;@) { - my ($self, $fmt, @args) = @_; - printf { $self->{pop3d}->{err} } $fmt."\n", @args; -} - sub out ($$;@) { my ($self, $fmt, @args) = @_; printf { $self->{pop3d}->{out} } $fmt."\n", @args; @@ -364,8 +359,8 @@ sub process_line ($$) { \"-ERR command not recognized\r\n"; my $err = $@; if ($err && $self->{sock}) { - chomp($l); - err($self, 'error from: %s (%s)', $l, $err); + $l =~ s/\r?\n//s; + warn("error from: $l ($err)\n"); $res = \"-ERR program fault - command not performed\r\n"; } defined($res) ? $self->write($res) : 0;