diff options
Diffstat (limited to 'flup/server/fcgi_base.py')
-rw-r--r-- | flup/server/fcgi_base.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/flup/server/fcgi_base.py b/flup/server/fcgi_base.py index 2c68484..34c0fbd 100644 --- a/flup/server/fcgi_base.py +++ b/flup/server/fcgi_base.py @@ -1136,10 +1136,16 @@ class BaseFCGIServer(object): """Ensure certain values are present, if required by WSGI.""" if not environ.has_key('SCRIPT_NAME'): environ['SCRIPT_NAME'] = '' - if not environ.has_key('PATH_INFO'): - environ['PATH_INFO'] = '' - if not environ.has_key('QUERY_STRING'): - environ['QUERY_STRING'] = '' + if not environ.has_key('PATH_INFO') or not environ['PATH_INFO']: + if environ.has_key('REQUEST_URI'): + environ['PATH_INFO'] = environ['REQUEST_URI'].partition('?')[0] + else: + environ['PATH_INFO'] = '' + if not environ.has_key('QUERY_STRING') or not environ['QUERY_STRING']: + if environ.has_key('REQUEST_URI'): + environ['QUERY_STRING'] = environ['REQUEST_URI'].partition('?')[2] + else: + environ['QUERY_STRING'] = '' # If any of these are missing, it probably signifies a broken # server... |