# File lib/merb-core/rack/handler/mongrel.rb, line 62
        def process(request, response)
          env = {}.replace(request.params)
          env.delete Merb::Const::HTTP_CONTENT_TYPE
          env.delete Merb::Const::HTTP_CONTENT_LENGTH
  
          env[Merb::Const::SCRIPT_NAME] = Merb::Const::EMPTY_STRING if env[Merb::Const::SCRIPT_NAME] == Merb::Const::SLASH
  
          env.update({"rack.version" => [0,1],
                       "rack.input" => request.body || StringIO.new(""),
                       "rack.errors" => STDERR,
  
                       "rack.multithread" => true,
                       "rack.multiprocess" => false, # ???
                       "rack.run_once" => false,
  
                       "rack.url_scheme" => "http"
                     })
          env[Merb::Const::QUERY_STRING] ||= ""
          env.delete Merb::Const::PATH_INFO  if env[Merb::Const::PATH_INFO] == Merb::Const::EMPTY_STRING
  
          status, headers, body = @app.call(env)
  
          begin
            response.status = status.to_i
            response.send_status(nil)

            headers.each { |k, vs|
              vs.split(Merb::Const::NEWLINE).each { |v|
                response.header[k] = v
              }
            }
            response.send_header
            
            body.each { |part|
              response.write(part)
              response.socket.flush
            }
            response.done = true
          ensure
            body.close  if body.respond_to? :close
          end
        end