tee_input: safer record separator ($/) handling
commitaad1fdfc17e2fe1a6308690daf74456877796f51
authorEric Wong <normalperson@yhbt.net>
Thu, 8 Jul 2010 05:45:22 +0000 (8 05:45 +0000)
committerEric Wong <normalperson@yhbt.net>
Thu, 8 Jul 2010 05:45:22 +0000 (8 05:45 +0000)
tree80b2a73b40e6ecab1b8afd4088c610269e1d9922
parent00e04ecc9fda39fa77e2f7fd11834ea977ba9ee8
tee_input: safer record separator ($/) handling

Different threads may change $/ during execution, so cache it at
function entry to a local variable for safety.  $/ may also be
of a non-binary encoding, so rely on Rack::Utils.bytesize to
portably capture the correct size.

Our string slicing is always safe from 1.9 encoding: both our
socket and backing temporary file are opened in binary mode,
so we'll always be dealing with binary strings in this class
(in accordance to the Rack spec).
(cherry picked from commit 1cd698f8c7938b1f19e9ba091708cb4515187939)
lib/unicorn/tee_input.rb