diff --git a/lib/rack/lint.rb b/lib/rack/lint.rb
index bc5b7f509..16b5feea2 100644
--- a/lib/rack/lint.rb
+++ b/lib/rack/lint.rb
@@ -279,10 +279,10 @@ def check_env(env)
assert("env missing required key #{header}") { env.include? header }
}
- ## The SERVER_PORT must be an integer if set.
- assert("env[SERVER_PORT] is not an integer") do
+ ## The SERVER_PORT must be an Integer if set.
+ assert("env[SERVER_PORT] is not an Integer") do
server_port = env["SERVER_PORT"]
- server_port.nil? || server_port.is_a?(Integer)
+ server_port.nil? || (Integer(server_port) rescue false)
end
## The SERVER_NAME must be a valid authority as defined by RFC7540.