diff options
Diffstat (limited to 'flup/server/scgi_base.py')
-rw-r--r-- | flup/server/scgi_base.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/flup/server/scgi_base.py b/flup/server/scgi_base.py index 0bcb652..8c70ffb 100644 --- a/flup/server/scgi_base.py +++ b/flup/server/scgi_base.py @@ -473,8 +473,11 @@ class BaseSCGIServer(object): def _sanitizeEnv(self, environ): """Fill-in/deduce missing values in environ.""" # Ensure QUERY_STRING exists - if not environ.has_key('QUERY_STRING'): - environ['QUERY_STRING'] = '' + 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'] = '' # Check WSGI_SCRIPT_NAME scriptName = environ.get('WSGI_SCRIPT_NAME') @@ -495,8 +498,11 @@ class BaseSCGIServer(object): # Pull SCRIPT_NAME/PATH_INFO from environment, with empty defaults if not environ.has_key('SCRIPT_NAME'): environ['SCRIPT_INFO'] = '' - if not environ.has_key('PATH_INFO'): - environ['PATH_INFO'] = '' + 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'] = '' else: # Configured scriptName warnings.warn('Configured SCRIPT_NAME is deprecated\n' |