about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2023-10-03 06:43:45 +0000
committerEric Wong <e@80x24.org>2023-10-03 10:16:04 +0000
commit699eeb49a23399671f8ed0fa142d6cdaa0593b60 (patch)
tree54e6e7fc88de600ddac698b9b142b13b67d34aff /lib
parent299aac294ec359a2f069e0e881ef82f55a101def (diff)
downloadpublic-inbox-699eeb49a23399671f8ed0fa142d6cdaa0593b60.tar.gz
It takes some effort to get Net::NNTP and IO::Socket::Socks
to place nice together, but we don't want the setsockopt
call to fail on an undefined value.  So die with an error
that tries to show various possible error sources.

$SOCKS_ERROR is a special variable, so even using `//'
(defined-or) operator isn't enough to squelch warnings
about using it in its uninitialized state.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/NetNNTPSocks.pm10
-rw-r--r--lib/PublicInbox/NetReader.pm3
2 files changed, 7 insertions, 6 deletions
diff --git a/lib/PublicInbox/NetNNTPSocks.pm b/lib/PublicInbox/NetNNTPSocks.pm
index fcd2e580..5b15dd59 100644
--- a/lib/PublicInbox/NetNNTPSocks.pm
+++ b/lib/PublicInbox/NetNNTPSocks.pm
@@ -17,16 +17,18 @@ sub new_socks {
         local %OPT = map {;
                 defined($opt{$_}) ? ($_ => $opt{$_}) : ()
         } @SOCKS_KEYS;
-        Net::NNTP->new(%opt); # this calls our new() below:
+        no warnings 'uninitialized'; # needed for $SOCKS_ERROR
+        Net::NNTP->new(%opt) // die "errors: \$!=$! SOCKS=",
+                                eval('$IO::Socket::Socks::SOCKS_ERROR // ""'),
+                                ', SSL=',
+                                (eval('IO::Socket::SSL->errstr')  // ''), "\n";
 }
 
 # called by Net::NNTP->new
 sub new {
         my ($self, %opt) = @_;
         @OPT{qw(ConnectAddr ConnectPort)} = @opt{qw(PeerAddr PeerPort)};
-        my $ret = $self->SUPER::new(%OPT) or
-                die 'SOCKS error: '.eval('$IO::Socket::Socks::SOCKS_ERROR');
-        $ret;
+        $self->SUPER::new(%OPT);
 }
 
 1;
diff --git a/lib/PublicInbox/NetReader.pm b/lib/PublicInbox/NetReader.pm
index 6802fa72..32e4c20f 100644
--- a/lib/PublicInbox/NetReader.pm
+++ b/lib/PublicInbox/NetReader.pm
@@ -180,8 +180,7 @@ sub nn_new ($$$) {
         if (defined $nn_arg->{ProxyAddr}) {
                 require PublicInbox::NetNNTPSocks;
                 $nn_arg->{SocksDebug} = 1 if $nn_arg->{Debug};
-                eval { $nn = PublicInbox::NetNNTPSocks->new_socks(%$nn_arg) };
-                die "E: <$uri> $@\n" if $@;
+                $nn = PublicInbox::NetNNTPSocks->new_socks(%$nn_arg) or return;
         } else {
                 $nn = Net::NNTP->new(%$nn_arg) or return;
         }