[PATCH 02 of 12] hgweb: send Content-Length 0 for zero length response

Mads Kiilerich mads at kiilerich.com
Fri Jan 11 17:32:46 CST 2013


# HG changeset patch
# User Mads Kiilerich <madski at unity3d.com>
# Date 1357947109 -3600
# Node ID 4f58d5f65b70b060df3f76cfe72a6716a69a40b6
# Parent  0a7d8aa24714c134ebdcb06dc1e583e04fd85d10
hgweb: send Content-Length 0 for zero length response

Before, Content-Length wasn't sent for 0 length responses. Now it is.

This could in principle prevent some unnecessary http connection close.

diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -70,7 +70,7 @@
         for s in util.filechunkiter(self.inp, limit=length):
             pass
 
-    def respond(self, status, type=None, filename=None, length=0):
+    def respond(self, status, type=None, filename=None, length=None):
         if self._start_response is not None:
 
             self.httphdr(type, filename, length)
@@ -125,7 +125,7 @@
     def header(self, headers=[('Content-Type','text/html')]):
         self.headers.extend(headers)
 
-    def httphdr(self, type=None, filename=None, length=0, headers={}):
+    def httphdr(self, type=None, filename=None, length=None, headers={}):
         headers = headers.items()
         if type is not None:
             headers.append(('Content-Type', type))
@@ -134,7 +134,7 @@
                         .replace('\\', '\\\\').replace('"', '\\"'))
             headers.append(('Content-Disposition',
                             'inline; filename="%s"' % filename))
-        if length:
+        if length is not None:
             headers.append(('Content-Length', str(length)))
         self.header(headers)
 


More information about the Mercurial-devel mailing list