Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Ticket #541: wsgipatch

Line 
1 Index: cherrypy/_cpwsgiserver.py
2 ===================================================================
3 --- cherrypy/_cpwsgiserver.py   (revision 1204)
4 +++ cherrypy/_cpwsgiserver.py   (working copy)
5 @@ -4,6 +4,7 @@
6  import threading
7  import Queue
8  import mimetools # todo: use email
9 +import os
10  import sys
11  import time
12  import traceback
13 @@ -24,6 +25,7 @@
14  # de-dupe the list
15  socket_errors_to_ignore = dict.fromkeys(socket_errors_to_ignore).keys()
16  
17 +import urlparse
18  
19  class HTTPRequest(object):
20      
21 @@ -59,10 +61,7 @@
22              self.ready = False
23              return
24          method,path,version = request_line.strip().split(" ", 2)
25 -        if "?" in path:
26 -            path, qs = path.split("?", 1)
27 -        else:
28 -            qs = ""
29 +        self.environ['wsgi.url_scheme'], serverloc, path, params, qs, fragment = urlparse.urlparse(path)
30          self.environ["REQUEST_METHOD"] = method
31          
32          for mount_point, wsgi_app in self.server.mount_points:
33 @@ -80,11 +79,13 @@
34                  self.wsgi_app = wsgi_app
35                  break
36          else:
37 +            #TODO: Log something here
38              self.abort("404 Not Found")
39              return
40          
41 -        self.environ["QUERY_STRING"] = qs
42 +        self.environ["QUERY_STRING"] = urlparse.urlunparse(("", "", "", params, qs, fragment))
43          self.environ["SERVER_PROTOCOL"] = version
44 +        #Todo: fix this to use the REQUEST_LOCATION if set above
45          self.environ["SERVER_NAME"] = self.server.server_name
46          if isinstance(self.server.bind_addr, basestring):
47              # AF_UNIX. This isn't really allowed by WSGI, which doesn't

Hosted by WebFaction

Log in as guest/cpguest to create tickets