Hello community,

here is the log from the commit of package python-tornado for openSUSE:Factory 
checked in at 2018-02-15 13:22:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-tornado (Old)
 and      /work/SRC/openSUSE:Factory/.python-tornado.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-tornado"

Thu Feb 15 13:22:15 2018 rev:43 rq:576487 version:4.5.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-tornado/python-tornado.changes    
2018-01-16 09:35:41.052466674 +0100
+++ /work/SRC/openSUSE:Factory/.python-tornado.new/python-tornado.changes       
2018-02-15 13:22:16.275027017 +0100
@@ -1,0 +2,28 @@
+Tue Feb 13 19:19:32 UTC 2018 - [email protected]
+
+- Update to version 4.5.3
+  + tornado.curl_httpclient
+    * Improved debug logging on Python 3.
+  + tornado.httpserver
+    * ``Content-Length`` and ``Transfer-Encoding`` headers are no longer
+      sent with 1xx or 204 responses (this was already true of 304
+      responses).
+    * Reading chunked requests no longer leaves the connection in a broken
+      state.
+  + tornado.iostream
+    * Writing a `memoryview` can no longer result in "BufferError:
+      Existing exports of data: object cannot be re-sized".
+  + tornado.options
+    * Duplicate option names are now detected properly whether they use
+      hyphens or underscores.
+  + tornado.testing
+    * `.AsyncHTTPTestCase.fetch` now uses ``127.0.0.1`` instead of
+      ``localhost``, improving compatibility with systems that have
+      partially-working ipv6 stacks.
+  + tornado.web
+    * It is no longer allowed to send a body with 1xx or 204 responses.
+  + tornado.websocket
+    * Requests with invalid websocket headers now get a response with
+      status code 400 instead of a closed connection.
+
+-------------------------------------------------------------------

Old:
----
  tornado-4.5.2.tar.gz

New:
----
  tornado-4.5.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-tornado.spec ++++++
--- /var/tmp/diff_new_pack.qTNlSg/_old  2018-02-15 13:22:16.939002896 +0100
+++ /var/tmp/diff_new_pack.qTNlSg/_new  2018-02-15 13:22:16.943002751 +0100
@@ -19,7 +19,7 @@
 %bcond_without python2
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-tornado
-Version:        4.5.2
+Version:        4.5.3
 Release:        0
 Summary:        Open source version of scalable, non-blocking web server that 
power FriendFeed
 License:        Apache-2.0

++++++ tornado-4.5.2.tar.gz -> tornado-4.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/PKG-INFO new/tornado-4.5.3/PKG-INFO
--- old/tornado-4.5.2/PKG-INFO  2017-08-27 20:52:23.000000000 +0200
+++ new/tornado-4.5.3/PKG-INFO  2018-01-06 19:09:20.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: tornado
-Version: 4.5.2
+Version: 4.5.3
 Summary: Tornado is a Python web framework and asynchronous networking 
library, originally developed at FriendFeed.
 Home-page: http://www.tornadoweb.org/
 Author: Facebook
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/docs/releases/v4.5.3.rst 
new/tornado-4.5.3/docs/releases/v4.5.3.rst
--- old/tornado-4.5.2/docs/releases/v4.5.3.rst  1970-01-01 01:00:00.000000000 
+0100
+++ new/tornado-4.5.3/docs/releases/v4.5.3.rst  2018-01-06 18:48:49.000000000 
+0100
@@ -0,0 +1,49 @@
+What's new in Tornado 4.5.3
+===========================
+
+Jan 6, 2018
+------------
+
+`tornado.curl_httpclient`
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Improved debug logging on Python 3.
+
+`tornado.httpserver`
+~~~~~~~~~~~~~~~~~~~~
+
+- ``Content-Length`` and ``Transfer-Encoding`` headers are no longer
+  sent with 1xx or 204 responses (this was already true of 304
+  responses).
+- Reading chunked requests no longer leaves the connection in a broken
+  state.
+
+`tornado.iostream`
+~~~~~~~~~~~~~~~~~~
+
+- Writing a `memoryview` can no longer result in "BufferError:
+  Existing exports of data: object cannot be re-sized".
+
+`tornado.options`
+~~~~~~~~~~~~~~~~~
+
+- Duplicate option names are now detected properly whether they use
+  hyphens or underscores.
+
+`tornado.testing`
+~~~~~~~~~~~~~~~~~
+
+- `.AsyncHTTPTestCase.fetch` now uses ``127.0.0.1`` instead of
+  ``localhost``, improving compatibility with systems that have
+  partially-working ipv6 stacks.
+
+`tornado.web`
+~~~~~~~~~~~~~
+
+- It is no longer allowed to send a body with 1xx or 204 responses.
+
+`tornado.websocket`
+~~~~~~~~~~~~~~~~~~~
+
+- Requests with invalid websocket headers now get a response with
+  status code 400 instead of a closed connection.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/docs/releases.rst 
new/tornado-4.5.3/docs/releases.rst
--- old/tornado-4.5.2/docs/releases.rst 2017-08-27 20:50:47.000000000 +0200
+++ new/tornado-4.5.3/docs/releases.rst 2018-01-06 18:47:43.000000000 +0100
@@ -4,6 +4,7 @@
 .. toctree::
    :maxdepth: 2
 
+   releases/v4.5.3
    releases/v4.5.2
    releases/v4.5.1
    releases/v4.5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/setup.py new/tornado-4.5.3/setup.py
--- old/tornado-4.5.2/setup.py  2017-08-27 20:50:47.000000000 +0200
+++ new/tornado-4.5.3/setup.py  2018-01-06 18:47:43.000000000 +0100
@@ -103,7 +103,7 @@
 
 kwargs = {}
 
-version = "4.5.2"
+version = "4.5.3"
 
 with open('README.rst') as f:
     kwargs['long_description'] = f.read()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/__init__.py 
new/tornado-4.5.3/tornado/__init__.py
--- old/tornado-4.5.2/tornado/__init__.py       2017-08-27 20:50:47.000000000 
+0200
+++ new/tornado-4.5.3/tornado/__init__.py       2018-01-06 18:47:43.000000000 
+0100
@@ -25,5 +25,5 @@
 # is zero for an official release, positive for a development branch,
 # or negative for a release candidate or beta (after the base version
 # number has been incremented)
-version = "4.5.2"
-version_info = (4, 5, 2, 0)
+version = "4.5.3"
+version_info = (4, 5, 3, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/curl_httpclient.py 
new/tornado-4.5.3/tornado/curl_httpclient.py
--- old/tornado-4.5.2/tornado/curl_httpclient.py        2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/curl_httpclient.py        2018-01-06 
18:47:43.000000000 +0100
@@ -493,6 +493,7 @@
 
     def _curl_debug(self, debug_type, debug_msg):
         debug_types = ('I', '<', '>', '<', '>')
+        debug_msg = native_str(debug_msg)
         if debug_type == 0:
             curl_log.debug('%s', debug_msg.strip())
         elif debug_type in (1, 2):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/http1connection.py 
new/tornado-4.5.3/tornado/http1connection.py
--- old/tornado-4.5.2/tornado/http1connection.py        2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/http1connection.py        2018-01-06 
18:47:43.000000000 +0100
@@ -349,10 +349,11 @@
                 # self._request_start_line.version or
                 # start_line.version?
                 self._request_start_line.version == 'HTTP/1.1' and
-                # 304 responses have no body (not even a zero-length body), 
and so
-                # should not have either Content-Length or Transfer-Encoding.
-                # headers.
+                # 1xx, 204 and 304 responses have no body (not even a 
zero-length
+                # body), and so should not have either Content-Length or
+                # Transfer-Encoding headers.
                 start_line.code not in (204, 304) and
+                (start_line.code < 100 or start_line.code >= 200) and
                 # No need to chunk the output if a Content-Length is specified.
                 'Content-Length' not in headers and
                 # Applications are discouraged from touching Transfer-Encoding,
@@ -592,6 +593,9 @@
             chunk_len = yield self.stream.read_until(b"\r\n", max_bytes=64)
             chunk_len = int(chunk_len.strip(), 16)
             if chunk_len == 0:
+                crlf = yield self.stream.read_bytes(2)
+                if crlf != b'\r\n':
+                    raise httputil.HTTPInputError("improperly terminated 
chunked request")
                 return
             total_size += chunk_len
             if total_size > self._max_body_size:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/iostream.py 
new/tornado-4.5.3/tornado/iostream.py
--- old/tornado-4.5.2/tornado/iostream.py       2017-08-27 20:50:37.000000000 
+0200
+++ new/tornado-4.5.3/tornado/iostream.py       2018-01-06 18:47:43.000000000 
+0100
@@ -1061,7 +1061,12 @@
         return chunk
 
     def write_to_fd(self, data):
-        return self.socket.send(data)
+        try:
+            return self.socket.send(data)
+        finally:
+            # Avoid keeping to data, which can be a memoryview.
+            # See https://github.com/tornadoweb/tornado/pull/2008
+            del data
 
     def connect(self, address, callback=None, server_hostname=None):
         """Connects the socket to a remote address without blocking.
@@ -1471,6 +1476,10 @@
                 # simply return 0 bytes written.
                 return 0
             raise
+        finally:
+            # Avoid keeping to data, which can be a memoryview.
+            # See https://github.com/tornadoweb/tornado/pull/2008
+            del data
 
     def read_from_fd(self):
         if self._ssl_accepting:
@@ -1528,7 +1537,12 @@
         os.close(self.fd)
 
     def write_to_fd(self, data):
-        return os.write(self.fd, data)
+        try:
+            return os.write(self.fd, data)
+        finally:
+            # Avoid keeping to data, which can be a memoryview.
+            # See https://github.com/tornadoweb/tornado/pull/2008
+            del data
 
     def read_from_fd(self):
         try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/options.py 
new/tornado-4.5.3/tornado/options.py
--- old/tornado-4.5.2/tornado/options.py        2017-08-27 20:50:37.000000000 
+0200
+++ new/tornado-4.5.3/tornado/options.py        2018-01-06 18:47:43.000000000 
+0100
@@ -223,9 +223,10 @@
         override options set earlier on the command line, but can be overridden
         by later flags.
         """
-        if name in self._options:
+        normalized = self._normalize_name(name)
+        if normalized in self._options:
             raise Error("Option %r already defined in %s" %
-                        (name, self._options[name].file_name))
+                        (normalized, self._options[normalized].file_name))
         frame = sys._getframe(0)
         options_file = frame.f_code.co_filename
 
@@ -247,7 +248,6 @@
             group_name = group
         else:
             group_name = file_name
-        normalized = self._normalize_name(name)
         option = _Option(name, file_name=file_name,
                          default=default, type=type, help=help,
                          metavar=metavar, multiple=multiple,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/httpserver_test.py 
new/tornado-4.5.3/tornado/test/httpserver_test.py
--- old/tornado-4.5.2/tornado/test/httpserver_test.py   2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/test/httpserver_test.py   2018-01-06 
18:47:43.000000000 +0100
@@ -786,9 +786,12 @@
     def test_keepalive_chunked(self):
         self.http_version = b'HTTP/1.0'
         self.connect()
-        self.stream.write(b'POST / HTTP/1.0\r\nConnection: keep-alive\r\n'
+        self.stream.write(b'POST / HTTP/1.0\r\n'
+                          b'Connection: keep-alive\r\n'
                           b'Transfer-Encoding: chunked\r\n'
-                          b'\r\n0\r\n')
+                          b'\r\n'
+                          b'0\r\n'
+                          b'\r\n')
         self.read_response()
         self.assertEqual(self.headers['Connection'], 'Keep-Alive')
         self.stream.write(b'GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/iostream_test.py 
new/tornado-4.5.3/tornado/test/iostream_test.py
--- old/tornado-4.5.2/tornado/test/iostream_test.py     2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/test/iostream_test.py     2018-01-06 
18:47:43.000000000 +0100
@@ -9,7 +9,7 @@
 from tornado.stack_context import NullContext
 from tornado.tcpserver import TCPServer
 from tornado.testing import AsyncHTTPTestCase, AsyncHTTPSTestCase, 
AsyncTestCase, bind_unused_port, ExpectLog, gen_test
-from tornado.test.util import unittest, skipIfNonUnix, refusing_port
+from tornado.test.util import unittest, skipIfNonUnix, refusing_port, 
skipPypy3V58
 from tornado.web import RequestHandler, Application
 import errno
 import logging
@@ -539,6 +539,7 @@
             client.close()
 
     @skipIfNonUnix
+    @skipPypy3V58
     def test_inline_read_error(self):
         # An error on an inline read is raised without logging (on the
         # assumption that it will eventually be noticed or logged further
@@ -557,6 +558,7 @@
             server.close()
             client.close()
 
+    @skipPypy3V58
     def test_async_read_error_logging(self):
         # Socket errors on asynchronous reads should be logged (but only
         # once).
@@ -993,7 +995,7 @@
         server_future = self.server_start_tls(_server_ssl_options())
         client_future = self.client_start_tls(
             ssl.create_default_context(),
-            server_hostname=b'127.0.0.1')
+            server_hostname='127.0.0.1')
         with ExpectLog(gen_log, "SSL Error"):
             with self.assertRaises(ssl.SSLError):
                 # The client fails to connect with an SSL error.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/options_test.py 
new/tornado-4.5.3/tornado/test/options_test.py
--- old/tornado-4.5.2/tornado/test/options_test.py      2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/test/options_test.py      2018-01-06 
18:47:43.000000000 +0100
@@ -7,7 +7,7 @@
 
 from tornado.options import OptionParser, Error
 from tornado.util import basestring_type, PY3
-from tornado.test.util import unittest
+from tornado.test.util import unittest, subTest
 
 if PY3:
     from io import StringIO
@@ -232,6 +232,24 @@
         self.assertRegexpMatches(str(cm.exception),
                                  'Option.*foo.*already defined')
 
+    def test_error_redefine_underscore(self):
+        # Ensure that the dash/underscore normalization doesn't
+        # interfere with the redefinition error.
+        tests = [
+            ('foo-bar', 'foo-bar'),
+            ('foo_bar', 'foo_bar'),
+            ('foo-bar', 'foo_bar'),
+            ('foo_bar', 'foo-bar'),
+            ]
+        for a, b in tests:
+            with subTest(self, a=a, b=b):
+                options = OptionParser()
+                options.define(a)
+                with self.assertRaises(Error) as cm:
+                    options.define(b)
+                self.assertRegexpMatches(str(cm.exception),
+                                         'Option.*foo.bar.*already defined')
+
     def test_dash_underscore_cli(self):
         # Dashes and underscores should be interchangeable.
         for defined_name in ['foo-bar', 'foo_bar']:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/simple_httpclient_test.py 
new/tornado-4.5.3/tornado/test/simple_httpclient_test.py
--- old/tornado-4.5.2/tornado/test/simple_httpclient_test.py    2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/test/simple_httpclient_test.py    2018-01-06 
18:47:43.000000000 +0100
@@ -272,16 +272,9 @@
 
     @skipIfNoIPv6
     def test_ipv6(self):
-        try:
-            [sock] = bind_sockets(None, '::1', family=socket.AF_INET6)
-            port = sock.getsockname()[1]
-            self.http_server.add_socket(sock)
-        except socket.gaierror as e:
-            if e.args[0] == socket.EAI_ADDRFAMILY:
-                # python supports ipv6, but it's not configured on the network
-                # interface, so skip this test.
-                return
-            raise
+        [sock] = bind_sockets(None, '::1', family=socket.AF_INET6)
+        port = sock.getsockname()[1]
+        self.http_server.add_socket(sock)
         url = '%s://[::1]:%d/hello' % (self.get_protocol(), port)
 
         # ipv6 is currently enabled by default but can be disabled
@@ -327,7 +320,7 @@
         self.assertNotIn("Content-Length", response.headers)
 
     def test_host_header(self):
-        host_re = re.compile(b"^localhost:[0-9]+$")
+        host_re = re.compile(b"^127.0.0.1:[0-9]+$")
         response = self.fetch("/host_echo")
         self.assertTrue(host_re.match(response.body))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/util.py 
new/tornado-4.5.3/tornado/test/util.py
--- old/tornado-4.5.2/tornado/test/util.py      2017-08-27 20:50:37.000000000 
+0200
+++ new/tornado-4.5.3/tornado/test/util.py      2018-01-06 18:47:43.000000000 
+0100
@@ -1,5 +1,6 @@
 from __future__ import absolute_import, division, print_function
 
+import contextlib
 import os
 import platform
 import socket
@@ -34,14 +35,39 @@
 skipIfNoNetwork = unittest.skipIf('NO_NETWORK' in os.environ,
                                   'network access disabled')
 
-skipIfNoIPv6 = unittest.skipIf(not socket.has_ipv6, 'ipv6 support not present')
-
-
 skipBefore33 = unittest.skipIf(sys.version_info < (3, 3), 'PEP 380 (yield 
from) not available')
 skipBefore35 = unittest.skipIf(sys.version_info < (3, 5), 'PEP 492 
(async/await) not available')
 skipNotCPython = unittest.skipIf(platform.python_implementation() != 'CPython',
                                  'Not CPython implementation')
 
+# Used for tests affected by
+# https://bitbucket.org/pypy/pypy/issues/2616/incomplete-error-handling-in
+# TODO: remove this after pypy3 5.8 is obsolete.
+skipPypy3V58 = unittest.skipIf(platform.python_implementation() == 'PyPy' and
+                               sys.version_info > (3,) and
+                               sys.pypy_version_info < (5, 9),
+                               'pypy3 5.8 has buggy ssl module')
+
+
+def _detect_ipv6():
+    if not socket.has_ipv6:
+        # socket.has_ipv6 check reports whether ipv6 was present at compile
+        # time. It's usually true even when ipv6 doesn't work for other 
reasons.
+        return False
+    sock = None
+    try:
+        sock = socket.socket(socket.AF_INET6)
+        sock.bind(('::1', 0))
+    except socket.error:
+        return False
+    finally:
+        if sock is not None:
+            sock.close()
+    return True
+
+
+skipIfNoIPv6 = unittest.skipIf(not _detect_ipv6(), 'ipv6 support not present')
+
 
 def refusing_port():
     """Returns a local port number that will refuse all connections.
@@ -94,3 +120,15 @@
         except AttributeError:
             return False
     return mod.startswith('coverage')
+
+
+def subTest(test, *args, **kwargs):
+    """Compatibility shim for unittest.TestCase.subTest.
+
+    Usage: ``with tornado.test.util.subTest(self, x=x):``
+    """
+    try:
+        subTest = test.subTest  # py34+
+    except AttributeError:
+        subTest = contextlib.contextmanager(lambda *a, **kw: (yield))
+    return subTest(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/web_test.py 
new/tornado-4.5.3/tornado/test/web_test.py
--- old/tornado-4.5.2/tornado/test/web_test.py  2017-08-27 20:50:37.000000000 
+0200
+++ new/tornado-4.5.3/tornado/test/web_test.py  2018-01-06 18:47:43.000000000 
+0100
@@ -356,7 +356,7 @@
         response = self.wait()
         self.assertEqual(response.code, 302)
         self.assertTrue(re.match(
-            
'http://example.com/login\?next=http%3A%2F%2Flocalhost%3A[0-9]+%2Fabsolute',
+            
'http://example.com/login\?next=http%3A%2F%2F127.0.0.1%3A[0-9]+%2Fabsolute',
             response.headers['Location']), response.headers['Location'])
 
 
@@ -2134,7 +2134,7 @@
         stream.write(b"4\r\nqwer\r\n")
         data = yield self.data
         self.assertEquals(data, b"qwer")
-        stream.write(b"0\r\n")
+        stream.write(b"0\r\n\r\n")
         yield self.finished
         data = yield gen.Task(stream.read_until_close)
         # This would ideally use an HTTP1Connection to read the response.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/test/websocket_test.py 
new/tornado-4.5.3/tornado/test/websocket_test.py
--- old/tornado-4.5.2/tornado/test/websocket_test.py    2017-08-27 
20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/test/websocket_test.py    2018-01-06 
18:47:43.000000000 +0100
@@ -189,6 +189,13 @@
         response = self.fetch('/echo')
         self.assertEqual(response.code, 400)
 
+    def test_missing_websocket_key(self):
+        response = self.fetch('/echo',
+                              headers={'Connection': 'Upgrade',
+                                       'Upgrade': 'WebSocket',
+                                       'Sec-WebSocket-Version': '13'})
+        self.assertEqual(response.code, 400)
+
     def test_bad_websocket_version(self):
         response = self.fetch('/echo',
                               headers={'Connection': 'Upgrade',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/testing.py 
new/tornado-4.5.3/tornado/testing.py
--- old/tornado-4.5.2/tornado/testing.py        2017-08-27 20:50:37.000000000 
+0200
+++ new/tornado-4.5.3/tornado/testing.py        2018-01-06 18:47:43.000000000 
+0100
@@ -423,7 +423,7 @@
 
     def get_url(self, path):
         """Returns an absolute url for the given path on the test server."""
-        return '%s://localhost:%s%s' % (self.get_protocol(),
+        return '%s://127.0.0.1:%s%s' % (self.get_protocol(),
                                         self.get_http_port(), path)
 
     def tearDown(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/web.py 
new/tornado-4.5.3/tornado/web.py
--- old/tornado-4.5.2/tornado/web.py    2017-08-27 20:50:37.000000000 +0200
+++ new/tornado-4.5.3/tornado/web.py    2018-01-06 18:47:43.000000000 +0100
@@ -974,7 +974,8 @@
                 if self.check_etag_header():
                     self._write_buffer = []
                     self.set_status(304)
-            if self._status_code in (204, 304):
+            if (self._status_code in (204, 304) or
+                (self._status_code >= 100 and self._status_code < 200)):
                 assert not self._write_buffer, "Cannot send body with %s" % 
self._status_code
                 self._clear_headers_for_304()
             elif "Content-Length" not in self._headers:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado/websocket.py 
new/tornado-4.5.3/tornado/websocket.py
--- old/tornado-4.5.2/tornado/websocket.py      2017-08-27 20:50:37.000000000 
+0200
+++ new/tornado-4.5.3/tornado/websocket.py      2018-01-06 18:47:43.000000000 
+0100
@@ -616,6 +616,14 @@
     def accept_connection(self):
         try:
             self._handle_websocket_headers()
+        except ValueError:
+            self.handler.set_status(400)
+            log_msg = "Missing/Invalid WebSocket headers"
+            self.handler.finish(log_msg)
+            gen_log.debug(log_msg)
+            return
+
+        try:
             self._accept_connection()
         except ValueError:
             gen_log.debug("Malformed WebSocket request received",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado.egg-info/PKG-INFO 
new/tornado-4.5.3/tornado.egg-info/PKG-INFO
--- old/tornado-4.5.2/tornado.egg-info/PKG-INFO 2017-08-27 20:52:22.000000000 
+0200
+++ new/tornado-4.5.3/tornado.egg-info/PKG-INFO 2018-01-06 19:09:18.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: tornado
-Version: 4.5.2
+Version: 4.5.3
 Summary: Tornado is a Python web framework and asynchronous networking 
library, originally developed at FriendFeed.
 Home-page: http://www.tornadoweb.org/
 Author: Facebook
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado.egg-info/SOURCES.txt 
new/tornado-4.5.3/tornado.egg-info/SOURCES.txt
--- old/tornado-4.5.2/tornado.egg-info/SOURCES.txt      2017-08-27 
20:52:22.000000000 +0200
+++ new/tornado-4.5.3/tornado.egg-info/SOURCES.txt      2018-01-06 
19:09:19.000000000 +0100
@@ -147,6 +147,7 @@
 docs/releases/v4.5.0.rst
 docs/releases/v4.5.1.rst
 docs/releases/v4.5.2.rst
+docs/releases/v4.5.3.rst
 tornado/__init__.py
 tornado/_locale_data.py
 tornado/auth.py
@@ -184,7 +185,6 @@
 tornado.egg-info/PKG-INFO
 tornado.egg-info/SOURCES.txt
 tornado.egg-info/dependency_links.txt
-tornado.egg-info/requires.txt
 tornado.egg-info/top_level.txt
 tornado/platform/__init__.py
 tornado/platform/asyncio.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tornado-4.5.2/tornado.egg-info/requires.txt 
new/tornado-4.5.3/tornado.egg-info/requires.txt
--- old/tornado-4.5.2/tornado.egg-info/requires.txt     2017-08-27 
20:52:22.000000000 +0200
+++ new/tornado-4.5.3/tornado.egg-info/requires.txt     1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-singledispatch
-certifi
-backports_abc>=0.4


Reply via email to