Anonymous avatar Anonymous committed 8586ab6 Merge

Automated merge with ssh://team@pocoo.org/werkzeug-main

Comments (0)

Files changed (4)

 Werkzeug Changelog
 ==================
 
-Version 1.0
+Version 0.7
 -----------
-(first 1.0 release, release date to be announced)
+(Last pre 1.0 release, release date to be announced)
 
 - improved func:`url_decode` and :func:`url_encode` performance.
 - fixed an issue where the SharedDataMiddleware could cause an
   generated component contains a colon.
 - :func:`werkzeug.import_string` now works with partially set up
   packages properly.
+- disabled automatic socket swiching for IPv6 on the development
+  server due to problems it caused.
+- Werkzeug no longer overrides the Date header when creating a
+  conditional HTTP response.
 
 Version 0.6.2
 -------------

tests/test_wrappers.py

     response.headers['Content-Length'] = len(response.data)
     assert response.headers['Cache-Control'] == 'must-revalidate, max-age=60'
 
+    assert 'date' not in response.headers
     env = create_environ()
     env.update({
         'REQUEST_METHOD':       'GET',
         'HTTP_IF_NONE_MATCH':   response.get_etag()[0]
     })
     response.make_conditional(env)
+    assert 'date' in response.headers
 
     # after the thing is invoked by the server as wsgi application
     # (we're emulating this here), there must not be any entity
     assert resp.status_code == 304
     assert not 'content-length' in resp.headers
 
+    # make sure date is not overriden
+    response = Response('Hello World')
+    response.date = 1337
+    d = response.date
+    response.make_conditional(env)
+    assert response.date == d
+
 
 def test_etag_response_mixin_freezing():
     """Freeze of the etag response mixin adds etag if mixed first"""

werkzeug/serving.py

 
 def select_ip_version(host, port):
     """Returns AF_INET4 or AF_INET6 depending on where to connect to."""
-    try:
-        info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
-                                  socket.SOCK_STREAM, 0,
-                                  socket.AI_PASSIVE)
-        if info:
-            return info[0][0]
-    except socket.gaierror:
-        pass
+    # disabled due to problems with current ipv6 implementations
+    # and various operating systems.  Probably this code also is
+    # not supposed to work, but I can't come up with any other
+    # ways to implement this.
+    ##try:
+    ##    info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
+    ##                              socket.SOCK_STREAM, 0,
+    ##                              socket.AI_PASSIVE)
+    ##    if info:
+    ##        return info[0][0]
+    ##except socket.gaierror:
+    ##    pass
     if ':' in host and hasattr(socket, 'AF_INET6'):
         return socket.AF_INET6
     return socket.AF_INET

werkzeug/wrappers.py

         """
         environ = _get_environ(request_or_environ)
         if environ['REQUEST_METHOD'] in ('GET', 'HEAD'):
-            self.headers['Date'] = http_date()
+            # if the date is not in the headers, add it now.  We however
+            # will not override an already existing header.  Unfortunately
+            # will this header be overriden by many WSGI servers including
+            # wsgiref.
+            if 'date' not in self.headers:
+                self.headers['Date'] = http_date()
             if 'content-length' in self.headers:
                 self.headers['Content-Length'] = len(self.data)
             if not is_resource_modified(environ, self.headers.get('etag'), None,
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.