durusmail: quixote-users: Patch for missing header values
Patch for missing header values
2004-11-02
Patch for missing header values
A.M. Kuchling
2004-11-02
Today I realized that the twisted server records a None value if
there's no corresponding header.  This means that
..get_environ('HTTP_REFERER', 'default') never returns 'default',
because there's always a key for HTTP_REFERER.  I think this behaviour
is unexpected; certainly I was expecting there to be no key at all if
a certain header wasn't present.

--amk


diff -C2 -r Quixote-1.2-orig/server/twisted_http.py
Quixote-1.2/server/twisted_http.py
*** Quixote-1.2-orig/server/twisted_http.py     Thu Sep 30 13:36:19 2004
--- Quixote-1.2/server/twisted_http.py  Tue Nov  2 10:47:40 2004
***************
*** 89,100 ****
                 "REQUEST_URI":       self.uri,
                 "HTTPS":             (self.isSecure() and 'on') or 'off',
-                "ACCEPT_ENCODING":   self.getHeader('Accept-encoding'),
-                'CONTENT_TYPE':      self.getHeader('Content-type'),
-                'HTTP_COOKIE':       self.getHeader('Cookie'),
-                'HTTP_REFERER':      self.getHeader('Referer'),
-                'HTTP_USER_AGENT':   self.getHeader('User-agent'),
                 'SERVER_PROTOCOL':   'HTTP/1.1',
          }

          client = self.getClient()
          if client is not None:
--- 89,104 ----
                 "REQUEST_URI":       self.uri,
                 "HTTPS":             (self.isSecure() and 'on') or 'off',
                 'SERVER_PROTOCOL':   'HTTP/1.1',
          }

+       for env_var, header in [('ACCEPT_ENCODING', 'Accept-encoding'),
+                               ('CONTENT_TYPE', 'Content-type'),
+                               ('HTTP_COOKIE', 'Cookie'),
+                               ('HTTP_REFERER', 'Referer'),
+                               ('HTTP_USER_AGENT', 'User-agent')]:
+           value = self.getHeader(header)
+           if value is not None:
+               env[env_var] = value
+
          client = self.getClient()
          if client is not None:


reply