about summary refs log tree commit homepage
path: root/lib/PublicInbox/SpawnPP.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-02-29 01:32:24 +0000
committerEric Wong <e@80x24.org>2016-02-29 01:32:24 +0000
commit83770743503dfab6ac337bf053fb22a961c2cb54 (patch)
treefb4f944f549c37a15e7ad1046f6e823e9663fcbb /lib/PublicInbox/SpawnPP.pm
parentc450d851f8cb466e275097bcc7bf13bfc9365b81 (diff)
downloadpublic-inbox-83770743503dfab6ac337bf053fb22a961c2cb54.tar.gz
We cannot modify %ENV directly under mod_perl (even after forking!),
so use env(1) instead to pass the environment.
Diffstat (limited to 'lib/PublicInbox/SpawnPP.pm')
-rw-r--r--lib/PublicInbox/SpawnPP.pm9
1 files changed, 2 insertions, 7 deletions
diff --git a/lib/PublicInbox/SpawnPP.pm b/lib/PublicInbox/SpawnPP.pm
index 288625d0..dc2ef364 100644
--- a/lib/PublicInbox/SpawnPP.pm
+++ b/lib/PublicInbox/SpawnPP.pm
@@ -19,13 +19,8 @@ sub public_inbox_fork_exec ($$$$$$) {
                 if ($err != 2) {
                         dup2($err, 2) or die "dup2 failed for stderr: $!";
                 }
-                %ENV = ();
-                foreach my $e (@$env) {
-                        my ($k, $v) = split('=', $e, 2);
-                        $ENV{$k} = $v;
-                }
-                exec @$cmd;
-                die "exec $cmd->[0] failed: $!\n";
+                exec qw(env -i), @$env, @$cmd;
+                die "exec env -i ... $cmd->[0] failed: $!\n";
         }
         $pid;
 }