def process(request, response)
if response.socket.closed?
return
end
path_info = request.params[Mongrel::Const::PATH_INFO]
page_cached = path_info + ".html"
get_or_head = @@file_only_methods.include? request.params[Mongrel::Const::REQUEST_METHOD]
if get_or_head and @files.can_serve(path_info)
@files.process(request,response)
elsif get_or_head and @files.can_serve(page_cached)
request.params[Mongrel::Const::PATH_INFO] = page_cached
@files.process(request,response)
else
begin
cgi = Mongrel::CGIWrapper.new(request, response)
cgi.handler = self
cgi.default_really_final = false
log_threads_waiting_for(request.params["PATH_INFO"]) if $mongrel_debug_client
@guard.synchronize(:EX) {
Dispatcher.dispatch(cgi, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, response.body)
}
cgi.out("text/html",true) {""}
rescue Errno::EPIPE
response.socket.close
rescue Object => rails_error
STDERR.puts "#{Time.now}: Error calling Dispatcher.dispatch #{rails_error.inspect}"
STDERR.puts rails_error.backtrace.join("\n")
end
end
end