summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Saddi <allan@saddi.com>2006-12-29 18:27:02 +0000
committerAllan Saddi <allan@saddi.com>2006-12-29 18:27:02 +0000
commit6494b543a6f1222631355fd8f2eb68aa6daae6ea (patch)
treef35674c8b261e4e3435b6f750ce6359a6d41a343
parent2c0357f8f3d4cd595c903a71eea1c1ff08e37660 (diff)
downloadflup-6494b543a6f1222631355fd8f2eb68aa6daae6ea.tar.gz
Back out previous commit. PATH_INFO is still not set
correctly by mod_scgi.
-rw-r--r--ChangeLog3
-rw-r--r--flup/server/scgi.py4
-rw-r--r--flup/server/scgi_base.py49
-rw-r--r--flup/server/scgi_fork.py4
4 files changed, 23 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index c9da87a..5a7f795 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2006-12-29 Allan Saddi <allan@saddi.com>
+ * Back out previous commit. PATH_INFO is still not set
+ correctly by mod_scgi.
+
* Deprecate WSGI_SCRIPT_NAME and scriptName in scgi_base.
Modern versions of mod_scgi correctly set SCRIPT_NAME &
PATH_INFO.
diff --git a/flup/server/scgi.py b/flup/server/scgi.py
index ada352e..ee9d769 100644
--- a/flup/server/scgi.py
+++ b/flup/server/scgi.py
@@ -66,7 +66,7 @@ __version__ = '$Revision$'
import logging
import socket
-from flup.server.scgi_base import BaseSCGIServer, Connection, NoDefault
+from flup.server.scgi_base import BaseSCGIServer, Connection
from flup.server.threadedserver import ThreadedServer
__all__ = ['WSGIServer']
@@ -87,7 +87,7 @@ class WSGIServer(BaseSCGIServer, ThreadedServer):
of preforking to be quite superior. So if your application really doesn't
mind running in multiple processes, go use SWAP. ;)
"""
- def __init__(self, application, scriptName=NoDefault, environ=None,
+ def __init__(self, application, scriptName='', environ=None,
multithreaded=True, multiprocess=False,
bindAddress=('localhost', 4000), umask=None,
allowedServers=None,
diff --git a/flup/server/scgi_base.py b/flup/server/scgi_base.py
index 0bcb652..a1d4d86 100644
--- a/flup/server/scgi_base.py
+++ b/flup/server/scgi_base.py
@@ -36,7 +36,6 @@ import cStringIO as StringIO
import signal
import datetime
import os
-import warnings
# Threads are required. If you want a non-threaded (forking) version, look at
# SWAP <http://www.idyll.org/~t/www-tools/wsgi/>.
@@ -274,7 +273,7 @@ class BaseSCGIServer(object):
# What Request class to use.
requestClass = Request
- def __init__(self, application, scriptName=NoDefault, environ=None,
+ def __init__(self, application, scriptName='', environ=None,
multithreaded=True, multiprocess=False,
bindAddress=('localhost', 4000), umask=None,
allowedServers=NoDefault,
@@ -472,45 +471,29 @@ 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'] = ''
-
- # Check WSGI_SCRIPT_NAME
+ # Namely SCRIPT_NAME/PATH_INFO
scriptName = environ.get('WSGI_SCRIPT_NAME')
if scriptName is None:
scriptName = self.scriptName
- else:
- warnings.warn('WSGI_SCRIPT_NAME environment variable for scgi '
- 'servers is deprecated',
- DeprecationWarning)
- if scriptName.lower() == 'none':
- scriptName = None
+ elif scriptName.lower() == 'none':
+ scriptName = None
if scriptName is None:
# Do nothing (most likely coming from cgi2scgi)
return
- if scriptName is NoDefault:
- # 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'] = ''
- else:
- # Configured scriptName
- warnings.warn('Configured SCRIPT_NAME is deprecated\n'
- 'Do not use WSGI_SCRIPT_NAME or the scriptName\n'
- 'keyword parameter -- they will be going away',
- DeprecationWarning)
-
- value = environ['SCRIPT_NAME']
- value += environ.get('PATH_INFO', '')
- if not value.startswith(scriptName):
- self.logger.warning('scriptName does not match request URI')
-
- environ['PATH_INFO'] = value[len(scriptName):]
- environ['SCRIPT_NAME'] = scriptName
+ value = environ['SCRIPT_NAME']
+ # Pull PATH_INFO from environ, if it exists. (cgi2scgi actually
+ # passes it in.)
+ value += environ.get('PATH_INFO', '')
+ if not value.startswith(scriptName):
+ self.logger.warning('scriptName does not match request URI')
+
+ environ['PATH_INFO'] = value[len(scriptName):]
+ environ['SCRIPT_NAME'] = scriptName
+
+ if not environ.has_key('QUERY_STRING'):
+ environ['QUERY_STRING'] = ''
def error(self, request):
"""
diff --git a/flup/server/scgi_fork.py b/flup/server/scgi_fork.py
index ce04899..46cb1e0 100644
--- a/flup/server/scgi_fork.py
+++ b/flup/server/scgi_fork.py
@@ -66,7 +66,7 @@ __version__ = '$Revision$'
import logging
import socket
-from flup.server.scgi_base import BaseSCGIServer, Connection, NoDefault
+from flup.server.scgi_base import BaseSCGIServer, Connection
from flup.server.preforkserver import PreforkServer
__all__ = ['WSGIServer']
@@ -87,7 +87,7 @@ class WSGIServer(BaseSCGIServer, PreforkServer):
of preforking to be quite superior. So if your application really doesn't
mind running in multiple processes, go use SWAP. ;)
"""
- def __init__(self, application, scriptName=NoDefault, environ=None,
+ def __init__(self, application, scriptName='', environ=None,
bindAddress=('localhost', 4000), umask=None,
allowedServers=None,
loggingLevel=logging.INFO, debug=True, **kw):