# File lib/puppet/network/http/rack.rb, line 34
34:     def call(env)
35:         request = Rack::Request.new(env)
36:         response = Rack::Response.new()
37:         Puppet.debug 'Handling request: %s %s' % [request.request_method, request.fullpath]
38: 
39:         # if we shall serve XMLRPC, have /RPC2 go to the xmlrpc handler
40:         if @xmlrpc_http_handler and @xmlrpc_path == request.path_info[0, @xmlrpc_path.size]
41:             handler = @xmlrpc_http_handler
42:         else
43:             # everything else is handled by the new REST handler
44:             handler = @rest_http_handler
45:         end
46: 
47:         begin
48:             handler.process(request, response)
49:         rescue => detail
50:             # Send a Status 500 Error on unhandled exceptions.
51:             response.status = 500
52:             response['Content-Type'] = 'text/plain'
53:             response.write 'Internal Server Error: "%s"' % detail.message
54:             # log what happened
55:             Puppet.err "Puppet Server (Rack): Internal Server Error: Unhandled Exception: \"%s\"" % detail.message
56:             Puppet.err "Backtrace:"
57:             detail.backtrace.each { |line| Puppet.err " > %s" % line }
58:         end
59:         response.finish()
60:     end