diff -ru Quixote-2.3/publish.py Quixote-2.3_request_mod/publish.py --- Quixote-2.3/publish.py 2005-09-22 15:18:03.000000000 +0100 +++ Quixote-2.3_request_mod/publish.py 2005-10-24 15:55:02.000000000 +0100 @@ -13,6 +13,7 @@ from quixote import util from quixote.config import Config from quixote.http_response import HTTPResponse +from quixote.http_request import HTTPRequest from quixote.logger import DefaultLogger # Error message to dispay when DISPLAY_EXCEPTIONS in config file is not @@ -71,7 +72,7 @@ """ def __init__(self, root_directory, logger=None, session_manager=None, - config=None, **kwargs): + config=None, request_class = HTTPRequest, **kwargs): global _publisher if config is None: self.config = Config(**kwargs) @@ -102,6 +103,7 @@ root_directory) self.root_directory = root_directory self._request = None + self._request_class = request_class def set_session_manager(self, session_manager): self.session_manager = session_manager @@ -109,6 +111,11 @@ def log(self, msg): self.logger.log(msg) + def create_request(self, stdin, environ): + """Create a request object + """ + return self._request_class(stdin, environ) + def parse_request(self, request): """Parse the request information waiting in 'request'. """ diff -ru Quixote-2.3/server/cgi_server.py Quixote-2.3_request_mod/server/cgi_server.py --- Quixote-2.3/server/cgi_server.py 2004-11-10 22:37:39.000000000 +0000 +++ Quixote-2.3_request_mod/server/cgi_server.py 2005-10-24 16:01:31.000000000 +0100 @@ -14,7 +14,7 @@ msvcrt.setmode(sys.__stdin__.fileno(), os.O_BINARY) msvcrt.setmode(sys.__stdout__.fileno(), os.O_BINARY) publisher = create_publisher() - request = HTTPRequest(sys.__stdin__, os.environ) + request = publisher.create_request(sys.__stdin__, os.environ) response = publisher.process_request(request) try: response.write(sys.__stdout__) diff -ru Quixote-2.3/server/fastcgi_server.py Quixote-2.3_request_mod/server/fastcgi_server.py --- Quixote-2.3/server/fastcgi_server.py 2004-10-28 23:52:11.000000000 +0100 +++ Quixote-2.3_request_mod/server/fastcgi_server.py 2005-10-24 16:01:06.000000000 +0100 @@ -14,7 +14,7 @@ publisher = create_publisher() while _fcgi.isFCGI(): f = _fcgi.FCGI() - request = HTTPRequest(f.inp, f.env) + request = publisher.create_request(f.inp, f.env) response = publisher.process_request(request) try: response.write(f.out) diff -ru Quixote-2.3/server/medusa_server.py Quixote-2.3_request_mod/server/medusa_server.py --- Quixote-2.3/server/medusa_server.py 2004-11-11 21:13:42.000000000 +0000 +++ Quixote-2.3_request_mod/server/medusa_server.py 2005-10-24 16:00:28.000000000 +0100 @@ -86,7 +86,7 @@ environ[envname] = header stdin = StringIO(data) - qrequest = HTTPRequest(stdin, environ) + qrequest = self.publisher.create_request(stdin, environ) qresponse = self.publisher.process_request(qrequest) # Copy headers from Quixote's HTTP response diff -ru Quixote-2.3/server/mod_python_handler.py Quixote-2.3_request_mod/server/mod_python_handler.py --- Quixote-2.3/server/mod_python_handler.py 2005-01-19 14:26:25.000000000 +0000 +++ Quixote-2.3_request_mod/server/mod_python_handler.py 2005-10-24 15:59:42.000000000 +0100 @@ -81,8 +81,7 @@ name2publisher = {} def run(publisher, req): - from quixote.http_request import HTTPRequest - request = HTTPRequest(apache.CGIStdin(req), apache.build_cgi_env(req)) + request = publisher.create_request(apache.CGIStdin(req), apache.build_cgi_env(req)) response = publisher.process_request(request) try: response.write(apache.CGIStdout(req)) diff -ru Quixote-2.3/server/scgi_server.py Quixote-2.3_request_mod/server/scgi_server.py --- Quixote-2.3/server/scgi_server.py 2005-08-10 21:33:41.000000000 +0100 +++ Quixote-2.3_request_mod/server/scgi_server.py 2005-10-24 15:59:00.000000000 +0100 @@ -28,7 +28,7 @@ env['SCRIPT_NAME'] = prefix env['PATH_INFO'] = path[len(prefix):] + env.get('PATH_INFO', '') - request = HTTPRequest(input, env) + request = self.publisher.create_request(input, env) response = self.publisher.process_request(request) try: response.write(output) diff -ru Quixote-2.3/server/simple_server.py Quixote-2.3_request_mod/server/simple_server.py --- Quixote-2.3/server/simple_server.py 2005-09-06 17:58:49.000000000 +0100 +++ Quixote-2.3_request_mod/server/simple_server.py 2005-10-24 15:58:16.000000000 +0100 @@ -53,8 +53,9 @@ return env def process(self, env, include_body=True): - request = HTTPRequest(self.rfile, env) - response = get_publisher().process_request(request) + publisher = get_publisher() + response = publisher.process_request( + publisher.create_request(self.rfile, env)) try: self.send_response(response.get_status_code(), response.get_reason_phrase()) diff -ru Quixote-2.3/server/twisted_server.py Quixote-2.3_request_mod/server/twisted_server.py --- Quixote-2.3/server/twisted_server.py 2004-12-08 20:46:16.000000000 +0000 +++ Quixote-2.3_request_mod/server/twisted_server.py 2005-10-24 15:56:06.000000000 +0100 @@ -30,7 +30,7 @@ # this seek is important, it doesn't work without it (it doesn't # matter for GETs, but POSTs will not work properly without it.) self.content.seek(0, 0) - qxrequest = HTTPRequest(self.content, environ) + qxrequest = self.channel.factory.publisher.create_request(self.content, environ) qxresponse = self.channel.factory.publisher.process_request(qxrequest) self.setResponseCode(qxresponse.status_code) for name, value in qxresponse.generate_headers():