# File lib/packet/packet_mongrel.rb, line 108
    def process_http_request(params,linebuffer,client)
      if not params[Const::REQUEST_PATH]
        uri = URI.parse(params[Const::REQUEST_URI])
        params[Const::REQUEST_PATH] = uri.request_uri
      end

      raise "No REQUEST PATH" if not params[Const::REQUEST_PATH]

      script_name, path_info, handlers = @classifier.resolve(params[Const::REQUEST_PATH])

      if handlers
        notifiers = handlers.select { |h| h.request_notify }
        request = HttpRequest.new(params, linebuffer, notifiers)

        # request is good so far, continue processing the response
        response = HttpResponse.new(client)

        # Process each handler in registered order until we run out or one finalizes the response.
        dispatch_to_handlers(handlers,request,response)

        # And finally, if nobody closed the response off, we finalize it.
        unless response.done
          response.finished
        else
          response.close_connection
        end
      else
        # Didn't find it, return a stock 404 response.
        client.send_data(Const::ERROR_404_RESPONSE)
        client.close_connection
      end
    end