Hello community,

here is the log from the commit of package python3-CherryPy for 
openSUSE:Factory checked in at 2015-12-17 15:54:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-CherryPy (Old)
 and      /work/SRC/openSUSE:Factory/.python3-CherryPy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-CherryPy"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-CherryPy/python3-CherryPy.changes        
2015-07-03 00:18:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-CherryPy.new/python3-CherryPy.changes   
2015-12-17 15:54:47.000000000 +0100
@@ -1,0 +2,6 @@
+Sat Dec  5 22:46:46 UTC 2015 - a...@gmx.de
+
+- update to version 3.8.1:
+  * no changelog available
+
+-------------------------------------------------------------------

Old:
----
  CherryPy-3.8.0.tar.gz

New:
----
  CherryPy-3.8.1.tar.gz

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

Other differences:
------------------
++++++ python3-CherryPy.spec ++++++
--- /var/tmp/diff_new_pack.NpWuvF/_old  2015-12-17 15:54:48.000000000 +0100
+++ /var/tmp/diff_new_pack.NpWuvF/_new  2015-12-17 15:54:48.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           python3-CherryPy
-Version:        3.8.0
+Version:        3.8.1
 Release:        0
 Url:            http://www.cherrypy.org
 Summary:        Object-Oriented HTTP framework

++++++ CherryPy-3.8.0.tar.gz -> CherryPy-3.8.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/CherryPy.egg-info/PKG-INFO 
new/CherryPy-3.8.1/CherryPy.egg-info/PKG-INFO
--- old/CherryPy-3.8.0/CherryPy.egg-info/PKG-INFO       2015-06-26 
17:30:45.000000000 +0200
+++ new/CherryPy-3.8.1/CherryPy.egg-info/PKG-INFO       2015-12-03 
01:13:05.000000000 +0100
@@ -1,37 +1,37 @@
-Metadata-Version: 1.1
-Name: CherryPy
-Version: 3.8.0
-Summary: Object-Oriented HTTP framework
-Home-page: http://www.cherrypy.org
-Author: CherryPy Team
-Author-email: t...@cherrypy.org
-License: BSD
-Description: CherryPy is a pythonic, object-oriented HTTP framework
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Web Environment
-Classifier: Intended Audience :: Developers
-Classifier: License :: Freely Distributable
-Classifier: Operating System :: OS Independent
-Classifier: Framework :: CherryPy
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.3
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: Implementation
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: Jython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Topic :: Internet :: WWW/HTTP
-Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
-Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
-Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
+Metadata-Version: 1.1
+Name: CherryPy
+Version: 3.8.1
+Summary: Object-Oriented HTTP framework
+Home-page: http://www.cherrypy.org
+Author: CherryPy Team
+Author-email: t...@cherrypy.org
+License: BSD
+Description: CherryPy is a pythonic, object-oriented HTTP framework
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: Freely Distributable
+Classifier: Operating System :: OS Independent
+Classifier: Framework :: CherryPy
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.3
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: Implementation
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: Jython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
+Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/CherryPy.egg-info/SOURCES.txt 
new/CherryPy-3.8.1/CherryPy.egg-info/SOURCES.txt
--- old/CherryPy-3.8.0/CherryPy.egg-info/SOURCES.txt    2015-06-26 
17:31:03.000000000 +0200
+++ new/CherryPy-3.8.1/CherryPy.egg-info/SOURCES.txt    2015-12-03 
01:13:06.000000000 +0100
@@ -107,6 +107,7 @@
 cherrypy/test/test_tutorials.py
 cherrypy/test/test_virtualhost.py
 cherrypy/test/test_wsgi_ns.py
+cherrypy/test/test_wsgi_unix_socket.py
 cherrypy/test/test_wsgi_vhost.py
 cherrypy/test/test_wsgiapps.py
 cherrypy/test/test_xmlrpc.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/PKG-INFO new/CherryPy-3.8.1/PKG-INFO
--- old/CherryPy-3.8.0/PKG-INFO 2015-06-26 17:31:07.000000000 +0200
+++ new/CherryPy-3.8.1/PKG-INFO 2015-12-03 01:13:06.000000000 +0100
@@ -1,37 +1,37 @@
-Metadata-Version: 1.1
-Name: CherryPy
-Version: 3.8.0
-Summary: Object-Oriented HTTP framework
-Home-page: http://www.cherrypy.org
-Author: CherryPy Team
-Author-email: t...@cherrypy.org
-License: BSD
-Description: CherryPy is a pythonic, object-oriented HTTP framework
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Web Environment
-Classifier: Intended Audience :: Developers
-Classifier: License :: Freely Distributable
-Classifier: Operating System :: OS Independent
-Classifier: Framework :: CherryPy
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.3
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: Implementation
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: Jython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Topic :: Internet :: WWW/HTTP
-Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
-Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
-Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
+Metadata-Version: 1.1
+Name: CherryPy
+Version: 3.8.1
+Summary: Object-Oriented HTTP framework
+Home-page: http://www.cherrypy.org
+Author: CherryPy Team
+Author-email: t...@cherrypy.org
+License: BSD
+Description: CherryPy is a pythonic, object-oriented HTTP framework
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: Freely Distributable
+Classifier: Operating System :: OS Independent
+Classifier: Framework :: CherryPy
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.3
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: Implementation
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: Jython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
+Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/__init__.py 
new/CherryPy-3.8.1/cherrypy/__init__.py
--- old/CherryPy-3.8.0/cherrypy/__init__.py     2015-06-26 16:40:38.000000000 
+0200
+++ new/CherryPy-3.8.1/cherrypy/__init__.py     2015-11-25 07:01:28.000000000 
+0100
@@ -56,7 +56,7 @@
 These API's are described in the `CherryPy specification 
<https://bitbucket.org/cherrypy/cherrypy/wiki/CherryPySpec>`_.
 """
 
-__version__ = "3.8.0"
+__version__ = "3.8.1"
 
 from cherrypy._cpcompat import urljoin as _urljoin, urlencode as _urlencode
 from cherrypy._cpcompat import basestring, unicodestr, set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/_cpcompat_subprocess.py 
new/CherryPy-3.8.1/cherrypy/_cpcompat_subprocess.py
--- old/CherryPy-3.8.0/cherrypy/_cpcompat_subprocess.py 2014-06-27 
22:32:38.000000000 +0200
+++ new/CherryPy-3.8.1/cherrypy/_cpcompat_subprocess.py 2015-11-25 
07:01:28.000000000 +0100
@@ -883,7 +883,7 @@
                 startupinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW
                 startupinfo.wShowWindow = _subprocess.SW_HIDE
                 comspec = os.environ.get("COMSPEC", "cmd.exe")
-                args = '{} /c "{}"'.format(comspec, args)
+                args = '{0} /c "{1}"'.format(comspec, args)
                 if (_subprocess.GetVersion() >= 0x80000000 or
                         os.path.basename(comspec).lower() == "command.com"):
                     # Win9x, or using command.com on NT. We need to
@@ -1029,7 +1029,7 @@
             elif sig == signal.CTRL_BREAK_EVENT:
                 os.kill(self.pid, signal.CTRL_BREAK_EVENT)
             else:
-                raise ValueError("Unsupported signal: {}".format(sig))
+                raise ValueError("Unsupported signal: {0}".format(sig))
 
         def terminate(self):
             """Terminates the process
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/_cpwsgi.py 
new/CherryPy-3.8.1/cherrypy/_cpwsgi.py
--- old/CherryPy-3.8.0/cherrypy/_cpwsgi.py      2014-06-27 22:32:38.000000000 
+0200
+++ new/CherryPy-3.8.1/cherrypy/_cpwsgi.py      2015-11-25 07:01:28.000000000 
+0100
@@ -296,7 +296,8 @@
         """Create a Request object using environ."""
         env = self.environ.get
 
-        local = httputil.Host('', int(env('SERVER_PORT', 80)),
+        local = httputil.Host('',
+                              int(env('SERVER_PORT', 80) or -1),
                               env('SERVER_NAME', ''))
         remote = httputil.Host(env('REMOTE_ADDR', ''),
                                int(env('REMOTE_PORT', -1) or -1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/lib/cpstats.py 
new/CherryPy-3.8.1/cherrypy/lib/cpstats.py
--- old/CherryPy-3.8.0/cherrypy/lib/cpstats.py  2014-06-27 22:32:38.000000000 
+0200
+++ new/CherryPy-3.8.1/cherrypy/lib/cpstats.py  2015-12-03 00:31:04.000000000 
+0100
@@ -210,6 +210,7 @@
 
 # -------------------- CherryPy Applications Statistics --------------------- #
 
+import sys
 import threading
 import time
 
@@ -294,6 +295,11 @@
 average_uriset_time = lambda s: s['Count'] and (s['Sum'] / s['Count']) or 0
 
 
+def _get_threading_ident():
+    if sys.version_info >= (3, 3):
+        return threading.get_ident()
+    return threading._get_ident()
+
 class StatsTool(cherrypy.Tool):
 
     """Record various information about the current request."""
@@ -322,7 +328,7 @@
 
         appstats['Current Requests'] += 1
         appstats['Total Requests'] += 1
-        appstats['Requests'][threading._get_ident()] = {
+        appstats['Requests'][_get_threading_ident()] = {
             'Bytes Read': None,
             'Bytes Written': None,
             # Use a lambda so the ip gets updated by tools.proxy later
@@ -339,7 +345,7 @@
             debug=False, **kwargs):
         """Record the end of a request."""
         resp = cherrypy.serving.response
-        w = appstats['Requests'][threading._get_ident()]
+        w = appstats['Requests'][_get_threading_ident()]
 
         r = cherrypy.request.rfile.bytes_read
         w['Bytes Read'] = r
@@ -605,7 +611,13 @@
         """Return ([headers], [rows]) for the given collection."""
         # E.g., the 'Requests' dict.
         headers = []
-        for record in v.itervalues():
+        try:
+            # python2
+            vals = v.itervalues()
+        except AttributeError:
+            # python3
+            vals = v.values()
+        for record in vals:
             for k3 in record:
                 format = formatting.get(k3, missing)
                 if format is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/lib/profiler.py 
new/CherryPy-3.8.1/cherrypy/lib/profiler.py
--- old/CherryPy-3.8.0/cherrypy/lib/profiler.py 2014-06-27 22:32:38.000000000 
+0200
+++ new/CherryPy-3.8.1/cherrypy/lib/profiler.py 2015-11-25 07:01:28.000000000 
+0100
@@ -8,7 +8,7 @@
     from cherrypy.lib import profiler
 
     class Root:
-        p = profile.Profiler("/path/to/profile/dir")
+        p = profiler.Profiler("/path/to/profile/dir")
 
         def index(self):
             self.p.run(self._index)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/test/test_logging.py 
new/CherryPy-3.8.1/cherrypy/test/test_logging.py
--- old/CherryPy-3.8.0/cherrypy/test/test_logging.py    2015-02-02 
14:57:45.000000000 +0100
+++ new/CherryPy-3.8.1/cherrypy/test/test_logging.py    2015-11-25 
07:01:28.000000000 +0100
@@ -169,7 +169,8 @@
         try:
             self.getPage("/error")
             self.assertInBody("raise ValueError()")
-            self.assertLog(0, 'HTTP Traceback (most recent call last):')
-            self.assertLog(-3, 'raise ValueError()')
+            self.assertLog(0, 'HTTP')
+            self.assertLog(1, 'Traceback (most recent call last):')
+            self.assertLog(-2, 'raise ValueError()')
         finally:
             ignore.pop()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/test/test_request_obj.py 
new/CherryPy-3.8.1/cherrypy/test/test_request_obj.py
--- old/CherryPy-3.8.0/cherrypy/test/test_request_obj.py        2014-06-27 
22:32:38.000000000 +0200
+++ new/CherryPy-3.8.1/cherrypy/test/test_request_obj.py        2015-11-25 
07:01:28.000000000 +0100
@@ -377,15 +377,27 @@
             self.getPage(uri)
             self.assertStatus(200)
 
-        # query string parameters are part of the URI, so if they are wrong
-        # for a particular handler, the status MUST be a 404.
         error_msgs = [
             'Missing parameters',
             'Nothing matches the given URI',
             'Multiple values for parameters',
             'Unexpected query string parameters',
             'Unexpected body parameters',
+            'Invalid path in Request-URI',
+            'Illegal #fragment in Request-URI',
         ]
+
+        # uri should be tested for valid absolute path, the status must be 400.
+        for uri, error_idx in (
+            ('invalid/path/without/leading/slash', 5),
+            ('/valid/path#invalid=fragment', 6),
+        ):
+            self.getPage(uri)
+            self.assertStatus(400)
+            self.assertInBody(error_msgs[error_idx])
+
+        # query string parameters are part of the URI, so if they are wrong
+        # for a particular handler, the status MUST be a 404.
         for uri, msg in (
             ('/paramerrors/one_positional', error_msgs[0]),
             ('/paramerrors/one_positional?foo=foo', error_msgs[0]),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/CherryPy-3.8.0/cherrypy/test/test_wsgi_unix_socket.py 
new/CherryPy-3.8.1/cherrypy/test/test_wsgi_unix_socket.py
--- old/CherryPy-3.8.0/cherrypy/test/test_wsgi_unix_socket.py   1970-01-01 
01:00:00.000000000 +0100
+++ new/CherryPy-3.8.1/cherrypy/test/test_wsgi_unix_socket.py   2015-11-25 
07:01:28.000000000 +0100
@@ -0,0 +1,104 @@
+import os
+import sys
+import socket
+import atexit
+
+import cherrypy
+from cherrypy.test import helper
+from cherrypy._cpcompat import HTTPConnection
+
+
+USOCKET_PATH = os.path.join(
+    os.path.dirname(os.path.realpath(__file__)),
+    'cp_test.sock'
+)
+
+
+class USocketHTTPConnection(HTTPConnection):
+    """
+    HTTPConnection over a unix socket.
+    """
+
+    def __init__(self, path):
+        HTTPConnection.__init__(self, 'localhost')
+        self.path = path
+
+    def __call__(self, *args, **kwargs):
+        """
+        Catch-all method just to present itself as a constructor for the
+        HTTPConnection.
+        """
+        return self
+
+    def connect(self):
+        """
+        Override the connect method and assign a unix socket as a transport.
+        """
+        sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+        sock.connect(self.path)
+        self.sock = sock
+        atexit.register(lambda: os.remove(self.path))
+
+
+def skip_on_windows(method):
+    """
+    Decorator to skip the method call if the test is executing on Windows.
+    """
+    def wrapper(self):
+        if sys.platform == "win32":
+            return self.skip("No UNIX Socket support in Windows.")
+        else:
+            return method(self)
+    wrapper.__doc__ = method.__doc__
+    wrapper.__name__ = method.__name__
+    return wrapper
+
+
+
+class WSGI_UnixSocket_Test(helper.CPWebCase):
+    """
+    Test basic behavior on a cherrypy wsgi server listening
+    on a unix socket.
+
+    It exercises the config option `server.socket_file`.
+    """
+    HTTP_CONN = USocketHTTPConnection(USOCKET_PATH)
+
+
+    @staticmethod
+    def setup_server():
+        class Root(object):
+
+            @cherrypy.expose
+            def index(self):
+                return "Test OK"
+
+            @cherrypy.expose
+            def error(self):
+                raise Exception("Invalid page")
+
+        config = {
+            'server.socket_file': USOCKET_PATH
+        }
+        cherrypy.config.update(config)
+        cherrypy.tree.mount(Root())
+
+    def tearDown(self):
+        cherrypy.config.update({'server.socket_file': None})
+
+    @skip_on_windows
+    def test_simple_request(self):
+        self.getPage("/")
+        self.assertStatus("200 OK")
+        self.assertInBody("Test OK")
+
+    @skip_on_windows
+    def test_not_found(self):
+        self.getPage("/invalid_path")
+        self.assertStatus("404 Not Found")
+
+    @skip_on_windows
+    def test_internal_error(self):
+        self.getPage("/error")
+        self.assertStatus("500 Internal Server Error")
+        self.assertInBody("Invalid page")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/wsgiserver/wsgiserver2.py 
new/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver2.py
--- old/CherryPy-3.8.0/cherrypy/wsgiserver/wsgiserver2.py       2015-06-26 
16:40:38.000000000 +0200
+++ new/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver2.py       2015-11-25 
07:01:28.000000000 +0100
@@ -75,7 +75,8 @@
            'WorkerThread', 'ThreadPool', 'SSLAdapter',
            'CherryPyWSGIServer',
            'Gateway', 'WSGIGateway', 'WSGIGateway_10', 'WSGIGateway_u0',
-           'WSGIPathInfoDispatcher', 'get_ssl_adapter_class']
+           'WSGIPathInfoDispatcher', 'get_ssl_adapter_class',
+           'socket_errors_to_ignore']
 
 import os
 try:
@@ -674,6 +675,10 @@
 
         # uri may be an abs_path (including "http://host.domain.tld";);
         scheme, authority, path = self.parse_request_uri(uri)
+        if path is None:
+            self.simple_response("400 Bad Request",
+                                 "Invalid path in Request-URI.")
+            return False
         if NUMBER_SIGN in path:
             self.simple_response("400 Bad Request",
                                  "Illegal #fragment in Request-URI.")
@@ -1757,7 +1762,7 @@
     timeout = 10
     """The timeout in seconds for accepted connections (default 10)."""
 
-    version = "CherryPy/3.8.0"
+    version = "CherryPy/3.8.1"
     """A version string for the HTTPServer."""
 
     software = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/cherrypy/wsgiserver/wsgiserver3.py 
new/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver3.py
--- old/CherryPy-3.8.0/cherrypy/wsgiserver/wsgiserver3.py       2015-06-26 
16:40:38.000000000 +0200
+++ new/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver3.py       2015-11-25 
07:01:28.000000000 +0100
@@ -75,7 +75,8 @@
            'WorkerThread', 'ThreadPool', 'SSLAdapter',
            'CherryPyWSGIServer',
            'Gateway', 'WSGIGateway', 'WSGIGateway_10', 'WSGIGateway_u0',
-           'WSGIPathInfoDispatcher', 'get_ssl_adapter_class']
+           'WSGIPathInfoDispatcher', 'get_ssl_adapter_class',
+           'socket_errors_to_ignore']
 
 import os
 try:
@@ -650,6 +651,10 @@
 
         # uri may be an abs_path (including "http://host.domain.tld";);
         scheme, authority, path = self.parse_request_uri(uri)
+        if path is None:
+            self.simple_response("400 Bad Request",
+                                 "Invalid path in Request-URI.")
+            return False
         if NUMBER_SIGN in path:
             self.simple_response("400 Bad Request",
                                  "Illegal #fragment in Request-URI.")
@@ -1468,7 +1473,7 @@
     timeout = 10
     """The timeout in seconds for accepted connections (default 10)."""
 
-    version = "CherryPy/3.8.0"
+    version = "CherryPy/3.8.1"
     """A version string for the HTTPServer."""
 
     software = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/setup.cfg new/CherryPy-3.8.1/setup.cfg
--- old/CherryPy-3.8.0/setup.cfg        2015-06-26 17:31:08.000000000 +0200
+++ new/CherryPy-3.8.1/setup.cfg        2015-12-03 01:13:06.000000000 +0100
@@ -1,14 +1,14 @@
-[sdist]
-formats = gztar,zip
-
-[nosetests]
-where = cherrypy
-logging-filter = cherrypy
-verbosity = 2
-nocapture = True
-
-[egg_info]
-tag_svn_revision = 0
-tag_date = 0
-tag_build = 
-
+[sdist]
+formats = gztar,zip
+
+[nosetests]
+where = cherrypy
+logging-filter = cherrypy
+verbosity = 2
+nocapture = True
+
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.0/setup.py new/CherryPy-3.8.1/setup.py
--- old/CherryPy-3.8.0/setup.py 2015-06-26 16:40:38.000000000 +0200
+++ new/CherryPy-3.8.1/setup.py 2015-11-25 07:01:28.000000000 +0100
@@ -36,7 +36,7 @@
 # arguments for the setup command
 ###############################################################################
 name = "CherryPy"
-version = "3.8.0"
+version = "3.8.1"
 desc = "Object-Oriented HTTP framework"
 long_desc = "CherryPy is a pythonic, object-oriented HTTP framework"
 classifiers = [


Reply via email to