Skip to content
Browse files

GetIp#to_s should never return nil. That's icky.

  • Loading branch information...
1 parent c7ab43f commit d743954792ccf5975a11ee88cdd690e8f1915728 @indirect indirect committed Nov 14, 2011
View
5 actionpack/lib/action_dispatch/http/request.rb
@@ -155,10 +155,9 @@ def ip
@ip ||= super
end
- # Originating IP address, usually set by the RemoteIp middleware.
+ # Originating IP address from the RemoteIp middleware.
def remote_ip
- # Coerce the remote_ip object into a string, because to_s could return nil
- @remote_ip ||= @env["action_dispatch.remote_ip"].to_s || ip
+ @remote_ip ||= @env["action_dispatch.remote_ip"]
end
# Returns the unique request id, which is based off either the X-Request-Id header that can
View
9 actionpack/lib/action_dispatch/middleware/remote_ip.rb
@@ -55,7 +55,10 @@ def calculate_ip
"HTTP_X_FORWARDED_FOR=#{@env['HTTP_X_FORWARDED_FOR'].inspect}"
end
- client_ip || forwarded_ips.last || remote_addrs.first
+ not_proxy = client_ip || forwarded_ips.last || remote_addrs.first
+
+ # Return first REMOTE_ADDR if there are no other options
+ not_proxy || ips_from('REMOTE_ADDR', :all).first
end
def to_s
@@ -66,9 +69,9 @@ def to_s
protected
- def ips_from(header)
+ def ips_from(header, allow_proxies = false)
ips = @env[header] ? @env[header].strip.split(/[,\s]+/) : []
- ips.reject{|ip| ip =~ @middleware.proxies }
+ allow_proxies ? ips : ips.reject{|ip| ip =~ @middleware.proxies }
end
end

0 comments on commit d743954

Please sign in to comment.
Something went wrong with that request. Please try again.