Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #3433: webrick-mutex.diff

File webrick-mutex.diff, 0.9 kB (added by tom@craz8.com, 4 years ago)

WEBrick service method better mutex usage

  • railties/lib/webrick_server.rb

    old new  
    7777  end 
    7878 
    7979  def service(req, res) #:nodoc: 
    80     begin 
    81       unless handle_file(req, res) 
     80    unless handle_file(req, res) 
     81      begin 
    8282        REQUEST_MUTEX.lock unless ActionController::Base.allow_concurrency 
    8383        unless handle_dispatch(req, res) 
    8484          raise WEBrick::HTTPStatus::NotFound, "`#{req.path}' not found." 
    8585        end 
     86      ensure 
     87        unless ActionController::Base.allow_concurrency 
     88          REQUEST_MUTEX.unlock if REQUEST_MUTEX.locked? 
     89        end 
    8690      end 
    87     ensure 
    88       unless ActionController::Base.allow_concurrency 
    89         REQUEST_MUTEX.unlock if REQUEST_MUTEX.locked? 
    90       end 
    9191    end 
    9292  end 
    9393