File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -102,6 +102,9 @@ def initialize(config={}, default=Config::General)
102
102
@listeners = [ ]
103
103
@shutdown_pipe = @config [ :ShutdownPipe ]
104
104
unless @config [ :DoNotListen ]
105
+ raise ArgumentError , "Port must an integer" unless @config [ :Port ] . to_s == @config [ :Port ] . to_i . to_s
106
+
107
+ @config [ :Port ] = @config [ :Port ] . to_i
105
108
if @config [ :Listen ]
106
109
warn ( ":Listen option is deprecated; use GenericServer#listen" , uplevel : 1 )
107
110
end
Original file line number Diff line number Diff line change @@ -172,4 +172,32 @@ def test_shutdown_pipe
172
172
pipe . last . puts ( '' )
173
173
assert_join_threads ( [ server_thread ] )
174
174
end
175
+
176
+ def test_port_numbers
177
+ config = {
178
+ :BindAddress => '0.0.0.0' ,
179
+ :Logger => WEBrick ::Log . new ( [ ] , WEBrick ::BasicLog ::WARN ) ,
180
+ }
181
+
182
+ ports = [ 0 , "0" ]
183
+
184
+ ports . each do |port |
185
+ config [ :Port ] = port
186
+ server = WEBrick ::GenericServer . new ( config )
187
+ server_thread = Thread . start { server . start }
188
+ client_thread = Thread . start {
189
+ sleep 0.1 until server . status == :Running || !server_thread . status
190
+ server_port = server . listeners [ 0 ] . addr [ 1 ]
191
+ server . stop
192
+ assert_equal server . config [ :Port ] , server_port
193
+ sleep 0.1 until server . status == :Stop || !server_thread . status
194
+ }
195
+ assert_join_threads ( [ client_thread , server_thread ] )
196
+ end
197
+
198
+ assert_raise ( ArgumentError ) do
199
+ config [ :Port ] = "FOO"
200
+ WEBrick ::GenericServer . new ( config )
201
+ end
202
+ end
175
203
end
You can’t perform that action at this time.
0 commit comments