about summary refs log tree commit homepage
path: root/lib/PublicInbox
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-09-09 05:25:00 +0000
committerEric Wong <e@80x24.org>2021-09-09 05:42:55 +0000
commit91460992d22dcb3fa8c02d245fb480b31a64cb0b (patch)
tree2699cc314c056da6a354d85dad7693c3d4c39690 /lib/PublicInbox
parentbe9e047b80f1a91492efcf92bb449d789b20edf5 (diff)
downloadpublic-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.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r--lib/PublicInbox/NetReader.pm10
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