@@ -34,11 +34,11 @@ def method_missing(m, *args, &block)
3434 if m =~ HTTP_HEADERS_MATCH
3535 # Access headers more easily as underscored methods.
3636 header_name = m . to_s . tr ( UNDERSCORE , DASH )
37- if ( header_value = headers [ header_name ] )
37+ if ( header_value = @ headers[ header_name ] )
3838 # Make future lookups faster.
3939 self . class . class_eval <<-RUBY , __FILE__ , __LINE__
4040 def #{ m }
41- headers["#{ header_name } "]
41+ @ headers["#{ header_name } "]
4242 end
4343 RUBY
4444 end
@@ -167,39 +167,33 @@ def options?
167167 private
168168
169169 IPV6_MATCH = /\A \[ (?<address> .* )\] :(?<port> \d + )\z /x . freeze # string like "[::1]:80"
170- IPV4_MATCH = /\A (?<address > [^:]+ ):(?<port> \d + )\z /x . freeze # string like "127.0.0.1 :80"
170+ HOST_MATCH = /\A (?<host > [^:]+ ):(?<port> \d + )\z /x . freeze # string like "www.example.com :80"
171171
172- def parse_addr ( string )
172+ def parse_host ( uri , host_string )
173173 # Split host and port number from string.
174- case string
174+ case host_string
175175 when IPV6_MATCH
176- address = $~[ :address ]
177- port = $~[ :port ]
178- when IPV4_MATCH
179- address = $~[ :address ]
180- port = $~[ :port ]
176+ uri . host = IPAddr . new ( $~[ :address ] ) . to_s
177+ uri . port = $~[ :port ] . to_i
178+ when HOST_MATCH
179+ uri . host = $~[ :host ]
180+ uri . port = $~[ :port ] . to_i
181181 else # string with no port number
182- address = string
183- port = nil
182+ uri . host = host_string
184183 end
185184
186- # Pass address, port to Addrinfo.tcp. It will raise SocketError if address or port is not valid.
187- [ IPAddr . new ( address ) . to_s , port . to_i ]
185+ uri
188186 end
189187
190188 def build_uri ( uri , headers )
191189 uri = URI ( uri )
190+ uri . port ||= 80
191+ uri . scheme ||= HTTP
192192 if uri . host
193193 return uri
194194 end
195195
196- addr , port = parse_addr ( headers . fetch ( HOST ) )
197-
198- uri . scheme = HTTP
199- uri . host = addr
200- uri . port = port == 0 ? 80 : port
201-
202- uri
196+ parse_host ( uri , headers . fetch ( HOST ) )
203197 end
204198
205199 end # class Request
0 commit comments