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 <[EMAIL PROTECTED]> 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.

_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to