diff options
author | Eric Wong <e@80x24.org> | 2015-06-06 00:29:00 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-06-06 00:29:00 +0000 |
commit | 5aa6b7ad7d8847a5d191ecf8606919b7886df7c2 (patch) | |
tree | 4bf978d51f6cc4d22ca78c63aa1a7fdc7c4a3127 /lib/unicorn/http_request.rb | |
parent | 44cf14154165c85e8081c51d3d01a6c690cc9e7a (diff) | |
download | unicorn-5aa6b7ad7d8847a5d191ecf8606919b7886df7c2.tar.gz |
This avoids the expensive generic instance variable for @socket and exposes the socket as `env["unicorn.socket"]' to the Rack application. As as nice side-effect, applications may access `env["unicorn.socket"]' as part of the API may be useful for 3rd-party bits such as Raindrops::TCP_Info for reading the tcp_info struct on Linux-based systems. Yes, `env["unicorn.socket"]' is a proprietary API in unicorn! News at 11! But then again, unicorn is not the first Rack server to implement `env["#{servername}.socket"]', either...
Diffstat (limited to 'lib/unicorn/http_request.rb')
-rw-r--r-- | lib/unicorn/http_request.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/unicorn/http_request.rb b/lib/unicorn/http_request.rb index b60e383..f5c6b5b 100644 --- a/lib/unicorn/http_request.rb +++ b/lib/unicorn/http_request.rb @@ -33,6 +33,7 @@ class Unicorn::HttpParser # 2.2+ optimizes hash assignments when used with literal string keys REMOTE_ADDR = 'REMOTE_ADDR'.freeze RACK_INPUT = 'rack.input'.freeze + UNICORN_SOCKET = 'unicorn.socket'.freeze HTTP_RESPONSE_START = [ 'HTTP', '/1.1 '] @@input_class = Unicorn::TeeInput @@check_client_connection = false @@ -99,7 +100,7 @@ class Unicorn::HttpParser NULL_IO : @@input_class.new(socket, self) # for Rack hijacking in Rack 1.5 and later - @socket = socket + e[UNICORN_SOCKET] = socket e[RACK_HIJACK] = self e.merge!(DEFAULTS) @@ -108,7 +109,7 @@ class Unicorn::HttpParser # for rack.hijack, we respond to this method so no extra allocation # of a proc object def call - env[RACK_HIJACK_IO] = @socket + env[RACK_HIJACK_IO] = env[UNICORN_SOCKET] end def hijacked? |