summaryrefslogtreecommitdiff
path: root/spec/ruby/library/net/http/http
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2021-10-05 19:41:44 +0200
committerBenoit Daloze <eregontp@gmail.com>2021-10-05 19:41:44 +0200
commitb9f34062f00d1d2548ca9b6af61a6447c2d0f8e3 (patch)
tree37c7600088a5e080b2f35794b0923395daf036d0 /spec/ruby/library/net/http/http
parentafcbb501ac17ba2ad5370ada5fd26e8dda9a5aaa (diff)
Update to ruby/spec@ccf0d85
Diffstat (limited to 'spec/ruby/library/net/http/http')
-rw-r--r--spec/ruby/library/net/http/http/fixtures/http_server.rb27
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