# File lib/puppet/network/http/rack.rb, line 37
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:     # if we shall serve XMLRPC, have /RPC2 go to the xmlrpc handler
43:     if @xmlrpc_http_handler and @xmlrpc_path == request.path_info[0, @xmlrpc_path.size]
44:       handler = @xmlrpc_http_handler
45:     else
46:       # everything else is handled by the new REST handler
47:       handler = @rest_http_handler
48:     end
49: 
50:     begin
51:       handler.process(request, response)
52:     rescue => detail
53:       # Send a Status 500 Error on unhandled exceptions.
54:       response.status = 500
55:       response['Content-Type'] = 'text/plain'
56:       response.write 'Internal Server Error: "%s"' % detail.message
57:       # log what happened
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