Using equal? provides consistent results of equality between 1.8, 1.9, and 2.0 when comparing Tempfile objects. In 1.8, == will change the position of the Tempfile. In 1.9+, == compares Tempfiles correctly. In 1.8, eql? compares Tempfiles correctly In 1.9+, t.eql?(t) always returns false
A race condition can arise when two servers are started simultaneously. Both instances may complete the check for an existing pidfile before either one writes it. Now the pidfile is opened with ::File::EXCL, which raises an error if the file already exists. This error is handled by retrying the check and the write.
* 'lint-headerhash' of git://bogomips.org/rack: lint: avoid TypeError on non-Hash-like response headers
According to SPEC (and check_headers), Response headers need only respond to #each. Thus, check_hijack_response should rely on Rack::Utils::HeaderHash if it wishes to access the headers in a hash-like fashion.