    # File lib/action_controller/cgi_process.rb, line 21
        def self.dispatch_cgi(app, cgi, out = $stdout)
          env = cgi.__send__(:env_table)
          env.delete "HTTP_CONTENT_LENGTH"

          cgi.stdinput.extend ProperStream

          env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"

          env.update({
            "rack.version" => [0,1],
            "rack.input" => cgi.stdinput,
            "rack.errors" => $stderr,
            "rack.multithread" => false,
            "rack.multiprocess" => true,
            "rack.run_once" => false,
            "rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
          })

          env["QUERY_STRING"] ||= ""
          env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
          env["REQUEST_PATH"] ||= "/"
          env.delete "PATH_INFO" if env["PATH_INFO"] == ""

          status, headers, body = app.call(env)
          begin
            out.binmode if out.respond_to?(:binmode)
            out.sync = false if out.respond_to?(:sync=)

            headers['Status'] = status.to_s

            if headers.include?('Set-Cookie')
              headers['cookie'] = headers.delete('Set-Cookie').split("\n")
            end

            out.write(cgi.header(headers))

            body.each { |part|
              out.write part
              out.flush if out.respond_to?(:flush)
            }
          ensure
            body.close if body.respond_to?(:close)
          end
        end