| 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 |
|---|