From a172719f946a2e2680a34aca68b3cbfd8c2fcafd Mon Sep 17 00:00:00 2001 From: Allan Saddi Date: Mon, 28 Aug 2006 16:45:05 +0000 Subject: Add support for FastCGI roles other than FCGI_RESPONDER. --- ChangeLog | 5 +++++ flup/server/fcgi.py | 7 ++++--- flup/server/fcgi_base.py | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9385114..3cd8d84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-08-28 Allan Saddi + + * Add support for FastCGI roles other than FCGI_RESPONDER. + Patch provided by Seairth Jacobs. + 2006-08-02 Allan Saddi * Add cookieExpiration keyword to SessionService / diff --git a/flup/server/fcgi.py b/flup/server/fcgi.py index 1b23ddc..9d23051 100644 --- a/flup/server/fcgi.py +++ b/flup/server/fcgi.py @@ -51,7 +51,7 @@ __version__ = '$Revision$' import os -from fcgi_base import BaseFCGIServer +from fcgi_base import BaseFCGIServer, FCGI_RESPONDER from threadedserver import ThreadedServer __all__ = ['WSGIServer'] @@ -64,7 +64,7 @@ class WSGIServer(BaseFCGIServer, ThreadedServer): def __init__(self, application, environ=None, multithreaded=True, multiprocess=False, bindAddress=None, umask=None, multiplexed=False, - debug=True, **kw): + debug=True, roles=(FCGI_RESPONDER,), **kw): """ environ, if present, must be a dictionary-like object. Its contents will be copied into application's environ. Useful @@ -86,7 +86,8 @@ class WSGIServer(BaseFCGIServer, ThreadedServer): bindAddress=bindAddress, umask=umask, multiplexed=multiplexed, - debug=debug) + debug=debug, + roles=roles) for key in ('jobClass', 'jobArgs'): if kw.has_key(key): del kw[key] diff --git a/flup/server/fcgi_base.py b/flup/server/fcgi_base.py index 56fac6b..3109429 100644 --- a/flup/server/fcgi_base.py +++ b/flup/server/fcgi_base.py @@ -898,7 +898,7 @@ class BaseFCGIServer(object): def __init__(self, application, environ=None, multithreaded=True, multiprocess=False, bindAddress=None, umask=None, multiplexed=False, - debug=True): + debug=True, roles=(FCGI_RESPONDER,)): """ bindAddress, if present, must either be a string or a 2-tuple. If present, run() will open its own listening socket. You would use @@ -929,6 +929,7 @@ class BaseFCGIServer(object): self.multithreaded = multithreaded self.multiprocess = multiprocess self.debug = debug + self.roles = roles self._bindAddress = bindAddress self._umask = umask @@ -1022,7 +1023,7 @@ class BaseFCGIServer(object): def handler(self, req): """Special handler for WSGI.""" - if req.role != FCGI_RESPONDER: + if req.role not in self.roles: return FCGI_UNKNOWN_ROLE, 0 # Mostly taken from example CGI gateway. -- cgit v1.2.1