diff options
author | sersut <serdar@opscode.com> | 2013-04-17 13:39:19 -0700 |
---|---|---|
committer | sersut <serdar@opscode.com> | 2013-04-17 14:01:39 -0700 |
commit | 63fc09ef93131e0ca3f22258deecae6d385ef231 (patch) | |
tree | e18b6121e754a0af7264d02c4f01143de9e43cea /lib/mixlib/shellout/unix.rb | |
parent | 4ebae1d2c8e3fa110e6c58ee65d2ffc40cf07be9 (diff) | |
download | mixlib-shellout-63fc09ef93131e0ca3f22258deecae6d385ef231.tar.gz |
More robust pipe checks and tests.
Diffstat (limited to 'lib/mixlib/shellout/unix.rb')
-rw-r--r-- | lib/mixlib/shellout/unix.rb | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/mixlib/shellout/unix.rb b/lib/mixlib/shellout/unix.rb index d7082e1..bd20ffb 100644 --- a/lib/mixlib/shellout/unix.rb +++ b/lib/mixlib/shellout/unix.rb @@ -189,11 +189,13 @@ module Mixlib # the ulimit based on platform. def clean_parent_file_descriptors # Don't clean $stdin, $stdout, $stderr, process_status_pipe. - # Also 3 & 4 is reserved by RubyVM - 5.upto(256) do |n| - fd = File.for_fd(n) rescue nil - if fd && process_status_pipe.last.to_i != n - fd.close + 3.upto(256) do |n| + # We are checking the fd for error pipe before attempting to + # create a file because error pipe will auto close when we + # try to create a file since it's set to CLOEXEC. + if n != @process_status_pipe.last.to_i + fd = File.for_fd(n) rescue nil + fd.close if fd end end end |