diff options
author | Allan Saddi <allan@saddi.com> | 2008-07-22 07:43:45 -0700 |
---|---|---|
committer | Allan Saddi <allan@saddi.com> | 2008-07-22 07:43:45 -0700 |
commit | 80ef6eecad7b42dffdb38fa510d71ebe3a012581 (patch) | |
tree | 86b65c43996e3d74a394cf32445476ae39845f73 /flup | |
parent | cbe792618a1e6b1aeddd8d751dbeefe6a981ba23 (diff) | |
download | flup-80ef6eecad7b42dffdb38fa510d71ebe3a012581.tar.gz |
Attempt to deduce missing PATH_INFO and/or QUERY_STRING from
REQUEST_URI, if present.
Diffstat (limited to 'flup')
-rw-r--r-- | flup/server/ajp_base.py | 7 | ||||
-rw-r--r-- | flup/server/fcgi_base.py | 14 | ||||
-rw-r--r-- | flup/server/scgi_base.py | 14 |
3 files changed, 25 insertions, 10 deletions
diff --git a/flup/server/ajp_base.py b/flup/server/ajp_base.py index b9dfa0f..fd560c2 100644 --- a/flup/server/ajp_base.py +++ b/flup/server/ajp_base.py @@ -924,8 +924,11 @@ class BaseAJPServer(object): environ['PATH_INFO'] = value[len(scriptName):] environ['SCRIPT_NAME'] = scriptName - 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'] = '' def error(self, request): """ 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... 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' |