37: def call(env)
38: request = Rack::Request.new(env)
39: response = Rack::Response.new
40: Puppet.debug 'Handling request: %s %s' % [request.request_method, request.fullpath]
41:
42:
43: if @xmlrpc_http_handler and @xmlrpc_path == request.path_info[0, @xmlrpc_path.size]
44: handler = @xmlrpc_http_handler
45: else
46:
47: handler = @rest_http_handler
48: end
49:
50: begin
51: handler.process(request, response)
52: rescue => detail
53:
54: response.status = 500
55: response['Content-Type'] = 'text/plain'
56: response.write 'Internal Server Error: "%s"' % detail.message
57:
58: Puppet.err "Puppet Server (Rack): Internal Server Error: Unhandled Exception: \"%s\"" % detail.message
59: Puppet.err "Backtrace:"
60: detail.backtrace.each { |line| Puppet.err " > #{line}" }
61: end
62: response.finish
63: end