diff options
Diffstat (limited to 'lib/webrick/httpserver.rb')
| -rw-r--r-- | lib/webrick/httpserver.rb | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/lib/webrick/httpserver.rb b/lib/webrick/httpserver.rb index e85d059319..7a7b931dad 100644 --- a/lib/webrick/httpserver.rb +++ b/lib/webrick/httpserver.rb @@ -1,4 +1,3 @@ -# frozen_string_literal: false # # httpserver.rb -- HTTPServer Class # @@ -9,14 +8,13 @@ # # $IPR: httpserver.rb,v 1.63 2002/10/01 17:16:32 gotoyuzo Exp $ -require 'io/wait' -require_relative 'server' -require_relative 'httputils' -require_relative 'httpstatus' -require_relative 'httprequest' -require_relative 'httpresponse' -require_relative 'httpservlet' -require_relative 'accesslog' +require 'webrick/server' +require 'webrick/httputils' +require 'webrick/httpstatus' +require 'webrick/httprequest' +require 'webrick/httpresponse' +require 'webrick/httpservlet' +require 'webrick/accesslog' module WEBrick class HTTPServerError < ServerError; end @@ -68,17 +66,17 @@ module WEBrick def run(sock) while true - req = create_request(@config) - res = create_response(@config) + res = HTTPResponse.new(@config) + req = HTTPRequest.new(@config) server = self begin timeout = @config[:RequestTimeout] while timeout > 0 - break if sock.to_io.wait_readable(0.5) - break if @status != :Running + break if IO.select([sock], nil, nil, 0.5) + timeout = 0 if @status != :Running timeout -= 0.5 end - raise HTTPStatus::EOFError if timeout <= 0 || @status != :Running + raise HTTPStatus::EOFError if timeout <= 0 raise HTTPStatus::EOFError if sock.eof? req.parse(sock) res.request_method = req.request_method @@ -225,20 +223,6 @@ module WEBrick end ## - # Creates the HTTPRequest used when handling the HTTP - # request. Can be overridden by subclasses. - def create_request(with_webrick_config) - HTTPRequest.new(with_webrick_config) - end - - ## - # Creates the HTTPResponse used when handling the HTTP - # request. Can be overridden by subclasses. - def create_response(with_webrick_config) - HTTPResponse.new(with_webrick_config) - end - - ## # Mount table for the path a servlet is mounted on in the directory space # of the server. Users of WEBrick can only access this indirectly via # WEBrick::HTTPServer#mount, WEBrick::HTTPServer#unmount and @@ -281,12 +265,12 @@ module WEBrick k.sort! k.reverse! k.collect!{|path| Regexp.escape(path) } - @scanner = Regexp.new("\\A(" + k.join("|") +")(?=/|\\z)") + @scanner = Regexp.new("^(" + k.join("|") +")(?=/|$)") end def normalize(dir) ret = dir ? dir.dup : "" - ret.sub!(%r|/+\z|, "") + ret.sub!(%r|/+$|, "") ret end end |
