[Zope-Checkins] CVS: Zope/ZServer - HTTPResponse.py:1.38

Toby Dickenson tdickenson@geminidataloggers.com
Wed, 13 Mar 2002 10:40:05 -0500


Update of /cvs-repository/Zope/ZServer
In directory cvs.zope.org:/tmp/cvs-serv17816/ZServer

Modified Files:
	HTTPResponse.py 
Log Message:
Collector #266: persistent proxy connections

=== Zope/ZServer/HTTPResponse.py 1.37 => 1.38 ===
         self._request.reply_code=response.status
         
+
+is_proxying_match = re.compile(r'[^ ]* [^ \\]*:').match
+proxying_connection_re = re.compile ('Proxy-Connection: (.*)', re.IGNORECASE)
         
 def make_response(request, headers):
     "Simple http response factory"
@@ -303,9 +306,16 @@
     
     response=ZServerHTTPResponse(stdout=ChannelPipe(request), stderr=StringIO())
     response._http_version=request.version
-    response._http_connection=(
-            http_server.get_header(http_server.CONNECTION, request.header)).lower()
+    if request.version=='1.0' and is_proxying_match(request.request):
+        # a request that was made as if this zope was an http 1.0 proxy.
+        # that means we have to use some slightly different http
+        # headers to manage persistent connections.
+        connection_re = proxying_connection_re
+    else:
+        # a normal http request
+        connection_re = http_server.CONNECTION
+    response._http_connection = http_server.get_header(connection_re,
+                                                       request.header).lower()
     response._server_version=request.channel.server.SERVER_IDENT
     return response
-