19: def process(request, response)
20: env = {}.replace(request.params)
21: env.delete "HTTP_CONTENT_TYPE"
22: env.delete "HTTP_CONTENT_LENGTH"
23:
24: env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
25:
26: env.update({"rack.version" => [0,1],
27: "rack.input" => request.body || StringIO.new(""),
28: "rack.errors" => STDERR,
29:
30: "rack.multithread" => true,
31: "rack.multiprocess" => false,
32: "rack.run_once" => false,
33:
34: "rack.url_scheme" => "http",
35: })
36: env["QUERY_STRING"] ||= ""
37: env.delete "PATH_INFO" if env["PATH_INFO"] == ""
38:
39: status, headers, body = @app.call(env)
40:
41: begin
42: response.status = status.to_i
43: headers.each { |k, vs|
44: vs.each { |v|
45: response.header[k] = v
46: }
47: }
48: body.each { |part|
49: response.body << part
50: }
51: response.finished
52: ensure
53: body.close if body.respond_to? :close
54: end
55: end