From cb2952f7f383f688c49f4f993706e88376e998f3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 10 Jan 2024 11:18:54 +0000 Subject: lei+net_reader: show NNTP message in more failures Showing absolutely nothing when hitting a server requiring authentication is a very bad user experience. While we're at it, use Net::Cmd->message in more places where we experience failure, too. --- lib/PublicInbox/LeiLsMailSource.pm | 6 +++++- lib/PublicInbox/NetReader.pm | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/LeiLsMailSource.pm b/lib/PublicInbox/LeiLsMailSource.pm index 4b427b26..ab6c1e60 100644 --- a/lib/PublicInbox/LeiLsMailSource.pm +++ b/lib/PublicInbox/LeiLsMailSource.pm @@ -42,7 +42,11 @@ sub input_path_url { # overrides LeiInput version my $uri = PublicInbox::URInntps->new($url); my $nn = $lei->{net}->nn_get($uri) or return $lei->err("E: $uri"); - my $l = $nn->newsgroups($uri->group); # name => description + # $l = name => description + my $l = $nn->newsgroups($uri->group) // return $lei->err(<{net}->ndump($nn->message))} +E: login may be required, try adding `-c nntp.debug' to your command +EOM my $sec = $lei->{net}->can('uri_section')->($uri); if ($json) { my $all = $nn->list; diff --git a/lib/PublicInbox/NetReader.pm b/lib/PublicInbox/NetReader.pm index 751043e9..ec18818b 100644 --- a/lib/PublicInbox/NetReader.pm +++ b/lib/PublicInbox/NetReader.pm @@ -14,7 +14,7 @@ our @EXPORT = qw(uri_section imap_uri nntp_uri); sub ndump { require Data::Dumper; - Data::Dumper->new(\@_)->Useqq(1)->Terse(1)->Dump; + Data::Dumper->new([ $_[-1] ])->Useqq(1)->Terse(1)->Dump; } # returns the git config section name, e.g [imap "imaps://user@example.com"] @@ -240,19 +240,19 @@ sub nn_new ($$$$) { try_starttls($nn_arg->{Host})) { # soft fail by default $nn->starttls or warn <<""; -W: <$uri> STARTTLS tried and failed (not requested) +W: <$uri> STARTTLS tried and failed (not requested): ${\(ndump($nn->message))} } elsif ($nntp_cfg->{starttls}) { # hard fail if explicitly configured $nn->starttls or die <<""; -E: <$uri> STARTTLS requested and failed +E: <$uri> STARTTLS requested and failed: ${\(ndump($nn->message))} } } elsif ($nntp_cfg->{starttls}) { $nn->can('starttls') or die "E: <$uri> Net::NNTP too old for STARTTLS\n"; $nn->starttls or die <<""; -E: <$uri> STARTTLS requested and failed +E: <$uri> STARTTLS requested and failed: ${\(ndump($nn->message))} } $nn; @@ -298,18 +298,21 @@ sub nn_for ($$$$) { # nn = Net::NNTP if ($nn->authinfo($u, $p)) { push @{$nntp_cfg->{-postconn}}, [ 'authinfo', $u, $p ]; } else { - warn "E: <$uri> AUTHINFO $u XXXX failed\n"; + warn < AUTHINFO $u XXXX: ${\(ndump($nn->message))} +EOM $nn = undef; } } - - if ($nntp_cfg->{compress}) { + if ($nn && $nntp_cfg->{compress}) { # https://rt.cpan.org/Ticket/Display.html?id=129967 if ($nn->can('compress')) { if ($nn->compress) { push @{$nntp_cfg->{-postconn}}, [ 'compress' ]; } else { - warn "W: <$uri> COMPRESS failed\n"; + warn < COMPRESS: ${\(ndump($nn->message))} +EOM } } else { delete $nntp_cfg->{compress}; -- cgit v1.2.3-24-ge0c7