diff options
author | Benoit Daloze <eregontp@gmail.com> | 2021-10-05 19:41:44 +0200 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2021-10-05 19:41:44 +0200 |
commit | b9f34062f00d1d2548ca9b6af61a6447c2d0f8e3 (patch) | |
tree | 37c7600088a5e080b2f35794b0923395daf036d0 /spec/ruby/library/net | |
parent | afcbb501ac17ba2ad5370ada5fd26e8dda9a5aaa (diff) | |
download | ruby-b9f34062f00d1d2548ca9b6af61a6447c2d0f8e3.tar.gz |
Update to ruby/spec@ccf0d85
Diffstat (limited to 'spec/ruby/library/net')
-rw-r--r-- | spec/ruby/library/net/http/http/fixtures/http_server.rb | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/spec/ruby/library/net/http/http/fixtures/http_server.rb b/spec/ruby/library/net/http/http/fixtures/http_server.rb index 63543b46a9..c1cedbfa76 100644 --- a/spec/ruby/library/net/http/http/fixtures/http_server.rb +++ b/spec/ruby/library/net/http/http/fixtures/http_server.rb @@ -11,29 +11,23 @@ module NetHTTPSpecs class SmallHTTPServer def initialize(bind_address) @server = TCPServer.new(bind_address, 0) - @running = Mutex.new @thread = Thread.new { Thread.current.abort_on_exception = true listen } end + def ip + @server.addr[3] + end + def port @server.addr[1] end def listen - loop do - begin - client = @server.accept - rescue IOError => e - if @running.locked? # close - break - else - raise e - end - end - + until @server.closed? + client = @server.accept handle_client(client) end end @@ -43,6 +37,10 @@ module NetHTTPSpecs until client.closed? request = client.gets("\r\n\r\n") break unless request + if request == "CLOSE" + @server.close + break + end handle_request(client, request) end ensure @@ -95,8 +93,9 @@ module NetHTTPSpecs end def close - @running.lock - @server.close + TCPSocket.open(ip, port) do |socket| + socket.write "CLOSE" + end @thread.join end end |