mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/webrick/server.rb: Fix regression bug in WEBrick's
:DoNotReverseLookup config option implementation. [fix GH-731] Patch by @vais * test/webrick/test_do_not_reverse_lookup.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dc37d6daba
commit
7d75a78604
3 changed files with 80 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
Mon Mar 16 17:43:21 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
||||
|
||||
* lib/webrick/server.rb: Fix regression bug in WEBrick's
|
||||
:DoNotReverseLookup config option implementation.
|
||||
[fix GH-731] Patch by @vais
|
||||
* test/webrick/test_do_not_reverse_lookup.rb: ditto.
|
||||
|
||||
Sat Mar 14 20:05:23 2015 Kazuki Tanaka <gogotanaka@ruby-lang.org>
|
||||
|
||||
* math.c (math_gamma): optimization for passed small integer.
|
||||
|
|
|
@ -179,7 +179,9 @@ module WEBrick
|
|||
svrs[0].each{|svr|
|
||||
@tokens.pop # blocks while no token is there.
|
||||
if sock = accept_client(svr)
|
||||
sock.do_not_reverse_lookup = config[:DoNotReverseLookup]
|
||||
unless config[:DoNotReverseLookup].nil?
|
||||
sock.do_not_reverse_lookup = !!config[:DoNotReverseLookup]
|
||||
end
|
||||
th = start_thread(sock, &block)
|
||||
th[:WEBrickThread] = true
|
||||
thgroup.add(th)
|
||||
|
|
70
test/webrick/test_do_not_reverse_lookup.rb
Normal file
70
test/webrick/test_do_not_reverse_lookup.rb
Normal file
|
@ -0,0 +1,70 @@
|
|||
require "test/unit"
|
||||
require "webrick"
|
||||
require_relative "utils"
|
||||
|
||||
class TestDoNotReverseLookup < Test::Unit::TestCase
|
||||
class DNRL < WEBrick::GenericServer
|
||||
def run(sock)
|
||||
sock << sock.do_not_reverse_lookup.to_s
|
||||
end
|
||||
end
|
||||
|
||||
@@original_do_not_reverse_lookup_value = Socket.do_not_reverse_lookup
|
||||
|
||||
def teardown
|
||||
Socket.do_not_reverse_lookup = @@original_do_not_reverse_lookup_value
|
||||
end
|
||||
|
||||
def do_not_reverse_lookup?(config)
|
||||
result = nil
|
||||
TestWEBrick.start_server(DNRL, config) do |server, addr, port, log|
|
||||
TCPSocket.open(addr, port) do |sock|
|
||||
result = {'true' => true, 'false' => false}[sock.gets]
|
||||
end
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
# +--------------------------------------------------------------------------+
|
||||
# | Expected interaction between Socket.do_not_reverse_lookup |
|
||||
# | and WEBrick::Config::General[:DoNotReverseLookup] |
|
||||
# +----------------------------+---------------------------------------------+
|
||||
# | |WEBrick::Config::General[:DoNotReverseLookup]|
|
||||
# +----------------------------+--------------+---------------+--------------+
|
||||
# |Socket.do_not_reverse_lookup| TRUE | FALSE | NIL |
|
||||
# +----------------------------+--------------+---------------+--------------+
|
||||
# | TRUE | true | false | true |
|
||||
# +----------------------------+--------------+---------------+--------------+
|
||||
# | FALSE | true | false | false |
|
||||
# +----------------------------+--------------+---------------+--------------+
|
||||
|
||||
def test_socket_dnrl_true_server_dnrl_true
|
||||
Socket.do_not_reverse_lookup = true
|
||||
assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => true))
|
||||
end
|
||||
|
||||
def test_socket_dnrl_true_server_dnrl_false
|
||||
Socket.do_not_reverse_lookup = true
|
||||
assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => false))
|
||||
end
|
||||
|
||||
def test_socket_dnrl_true_server_dnrl_nil
|
||||
Socket.do_not_reverse_lookup = true
|
||||
assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => nil))
|
||||
end
|
||||
|
||||
def test_socket_dnrl_false_server_dnrl_true
|
||||
Socket.do_not_reverse_lookup = false
|
||||
assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => true))
|
||||
end
|
||||
|
||||
def test_socket_dnrl_false_server_dnrl_false
|
||||
Socket.do_not_reverse_lookup = false
|
||||
assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => false))
|
||||
end
|
||||
|
||||
def test_socket_dnrl_false_server_dnrl_nil
|
||||
Socket.do_not_reverse_lookup = false
|
||||
assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => nil))
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue