about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2024-01-10 11:18:54 +0000
committerEric Wong <e@80x24.org>2024-01-11 03:00:14 +0000
commitcb2952f7f383f688c49f4f993706e88376e998f3 (patch)
tree65516343b918c114cfbb0dad96cb883bf0bd83bf
parentb2daac64423db99db12bd77afe4da813c26ee1b6 (diff)
downloadpublic-inbox-cb2952f7f383f688c49f4f993706e88376e998f3.tar.gz
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.
-rw-r--r--lib/PublicInbox/LeiLsMailSource.pm6
-rw-r--r--lib/PublicInbox/NetReader.pm19
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(<<EOM);
+E: $uri LIST NEWSGROUPS: ${\($lei->{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 <<EOM;
+E: <$uri> 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 <<EOM;
+W: <$uri> COMPRESS: ${\(ndump($nn->message))}
+EOM
                         }
                 } else {
                         delete $nntp_cfg->{compress};