[Zope3-Users] Re: Is this a bug of HTTP response's head handling? (publisherhttpserver.py)

Simon Hang hangzhiyun at gmail.com
Thu Sep 21 19:16:24 EDT 2006


Philipp,
Sorry for being lazy, and thanks for the tips.  Here is my update version.
--- httptask.py.orig    Fri Jan 06 02:15:48 2006
+++ httptask.py Fri Sep 22 09:13:48 2006
@@ -126,6 +126,11 @@
             else:
                 close_it = 1
         elif version == '1.1':
+            #modified by Simon
+            if 'connection: close' in (header.lower() for header in
+                                        self.accumulated_headers):
+                #Close if 'connection: close' found in http response's
header
+                close_it = 1
             if connection == 'close':
                 close_it = 1
             elif 'Transfer-Encoding' in response_headers:
@@ -134,8 +139,13 @@
             elif self.status == '304':
                 # Replying with headers only.
                 pass
+            #modified by simon
             elif not ('Content-Length' in response_headers):
-                close_it = 1
+                if 'content-length' not in (header[:14].lower() for header
in
+                                            self.accumulated_headers):
+                    #Close if 'content-length' not found in
+                    #http response's header and self.response_headers
+                    close_it = 1
         else:
             # Close if unrecognized HTTP version.
             close_it = 1


On 9/21/06, Philipp von Weitershausen <philipp at weitershausen.de> wrote:
>
> Hi Simon,
>
> I have a few comments regarding style. First::
>
>   if thisflag == False:
>       ...
>
> is unnecessarily long. Just write::
>
>   if not thisflag:
>       ...
>
> Also, what is "thisflag"? It'd be better to give it a descriptive name.
>
> > --- httptask.py.orig    Fri Jan 06 02:15:48 2006
> > +++ httptask.py Thu Sep 21 17:31:17 2006
> > @@ -126,6 +126,15 @@
> >              else:
> >                  close_it = 1
> >          elif version == '1.1':
> > +            #modified by Simon
> > +            thisflag = False
> > +            for each in self.accumulated_headers:
> > +                if each.lower() == 'connection: keep-alive':
> > +                    thisflag = True
> > +                    break
> > +            if thisflag == False:
> > +                close_it = 1
> > +
>
> I think you make this a lot simpler::
>
>   if 'connection: keep-alive' not in (header.lower() for header in
>                                       self.accumulated_headers):
>       close_it = 1
>
> (instead of the lines you added)
>
> >              if connection == 'close':
> >                  close_it = 1
> >              elif 'Transfer-Encoding' in response_headers:
> > @@ -134,8 +143,15 @@
> >              elif self.status == '304':
> >                  # Replying with headers only.
> >                  pass
> > +            #modified by simon
> >              elif not ('Content-Length' in response_headers):
> > -                close_it = 1
> > +                thisflag = False
> > +                for each in self.accumulated_headers:
> > +                    if each[:14].lower() == 'content-length':
> > +                        thisflag = True
> > +                        break
> > +                if thisflag == False: #only content_length not exist in
> > accumulated headers too
> > +                    close_it = 1
>
> I don't understand the comment (English grammar not correct), but my
> suggestion would apply here as well, I think.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope3-users/attachments/20060922/29f34d3b/attachment.htm


More information about the Zope3-users mailing list