diff options
author | Eric Wong <e@80x24.org> | 2021-09-09 05:25:00 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-09-09 05:42:55 +0000 |
commit | 91460992d22dcb3fa8c02d245fb480b31a64cb0b (patch) | |
tree | 2699cc314c056da6a354d85dad7693c3d4c39690 | |
parent | be9e047b80f1a91492efcf92bb449d789b20edf5 (diff) | |
download | public-inbox-91460992d22dcb3fa8c02d245fb480b31a64cb0b.tar.gz |
Multiple invocations of mic_new may happen in long-lived processes, so do not let mic_new make irreversible changes to the cached args when using a SOCKS proxy.
-rw-r--r-- | lib/PublicInbox/NetReader.pm | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/PublicInbox/NetReader.pm b/lib/PublicInbox/NetReader.pm index 9faa362c..5199a3a3 100644 --- a/lib/PublicInbox/NetReader.pm +++ b/lib/PublicInbox/NetReader.pm @@ -42,16 +42,16 @@ EOM sub mic_new ($$$$) { my ($self, $mic_arg, $sec, $uri) = @_; - my %socks; + my %mic_arg = %$mic_arg; my $sa = $self->{imap_opt}->{$sec}->{-proxy_cfg} || $self->{-proxy_cli}; if ($sa) { my %opt = %$sa; - $opt{ConnectAddr} = delete $mic_arg->{Server}; - $opt{ConnectPort} = delete $mic_arg->{Port}; - $socks{Socket} = IO::Socket::Socks->new(%opt) or die + $opt{ConnectAddr} = delete $mic_arg{Server}; + $opt{ConnectPort} = delete $mic_arg{Port}; + $mic_arg{Socket} = IO::Socket::Socks->new(%opt) or die "E: <$$uri> ".eval('$IO::Socket::Socks::SOCKS_ERROR'); } - PublicInbox::IMAPClient->new(%$mic_arg, %socks, Keepalive => 1); + PublicInbox::IMAPClient->new(%mic_arg, Keepalive => 1); } sub auth_anon_cb { '' }; # for Mail::IMAPClient::Authcallback |