Skip to content

Commit be0cd9b

Browse files
committed
set server_name and server_port based on routed request. closes postrank-labs#13.
1 parent 42d6427 commit be0cd9b

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

lib/goliath/request.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ def parse_header(h, parser)
5151
@env[name] = @env.delete("HTTP_#{name}") if @env["HTTP_#{name}"]
5252
end
5353

54+
if @env['HTTP_HOST']
55+
name, port = @env['HTTP_HOST'].split(':')
56+
@env[SERVER_NAME] = name if name
57+
@env[SERVER_PORT] = port if port
58+
end
59+
5460
@env[REQUEST_METHOD] = parser.http_method
5561
@env[REQUEST_URI] = parser.request_url
5662
@env[QUERY_STRING] = parser.query_string

spec/unit/request_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,13 @@
6666
@r.parse_header({'Content-Length' => 42}, parser)
6767
@r.env['CONTENT_LENGTH'].should == 42
6868
end
69+
70+
it 'sets server_name and server_port correctly' do
71+
parser = mock('parser').as_null_object
72+
73+
@r.parse_header({'Host' => 'myhost.com:3000'}, parser)
74+
@r.env['SERVER_NAME'].should == 'myhost.com'
75+
@r.env['SERVER_PORT'].should == '3000'
76+
end
6977
end
7078
end

0 commit comments

Comments
 (0)