Hello community,

here is the log from the commit of package python3-gunicorn for 
openSUSE:Factory checked in at 2016-01-15 10:41:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-gunicorn (Old)
 and      /work/SRC/openSUSE:Factory/.python3-gunicorn.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-gunicorn"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-gunicorn/python3-gunicorn.changes        
2015-12-03 13:32:13.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-gunicorn.new/python3-gunicorn.changes   
2016-01-15 10:41:53.000000000 +0100
@@ -1,0 +2,27 @@
+Tue Jan 12 22:20:58 UTC 2016 - [email protected]
+
+- update to version 19.4.5:
+  * fix: NameError fileno in gunicorn.http.wsgi (issue 1178)
+
+- changes from version 19.4.4:
+  * fix: check if a fileobject can be used with sendfile(2) (issue
+    1174)
+  * doc: be more descriptive in errorlog option (issue 1173)
+
+- changes from version 19.4.3:
+  * fix: don’t check if a file is writable using os.stat with SELINUX
+    (issue 1171)
+
+- changes from version 19.4.2:
+  * improvement: handle HaltServer in manage_workers (issue 1095)
+  * fix: Do not rely on sendfile sending requested count (issue 1155)
+  * fix: claridy –no-sendfile default (issue 1156)
+  * fix: LoggingCatch sendfile failure from no file descriptor (issue
+    1160)
+  * fix: Always send access log to syslog if syslog is on
+  * fix: check auth before trying to own a file (issue 1157)
+  * fix: Fix Slowloris broken link. (issue 1142)
+  * Tweak markup in faq.rst
+  * fix: gaiohttp test (issue 1164)
+
+-------------------------------------------------------------------

Old:
----
  gunicorn-19.4.1.tar.gz

New:
----
  gunicorn-19.4.5.tar.gz

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

Other differences:
------------------
++++++ python3-gunicorn.spec ++++++
--- /var/tmp/diff_new_pack.lWEII4/_old  2016-01-15 10:41:54.000000000 +0100
+++ /var/tmp/diff_new_pack.lWEII4/_new  2016-01-15 10:41:54.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python3-gunicorn
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           python3-gunicorn
-Version:        19.4.1
+Version:        19.4.5
 Release:        0
 Summary:        WSGI HTTP Server for UNIX
 License:        MIT

++++++ gunicorn-19.4.1.tar.gz -> gunicorn-19.4.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/LICENSE new/gunicorn-19.4.5/LICENSE
--- old/gunicorn-19.4.1/LICENSE 2015-11-23 09:12:35.000000000 +0100
+++ new/gunicorn-19.4.5/LICENSE 2016-01-04 10:37:00.000000000 +0100
@@ -1,4 +1,4 @@
-2009-2015 (c) Benoît Chesneau <[email protected]>
+2009-2016 (c) Benoît Chesneau <[email protected]>
 2009-2015 (c) Paul J. Davis <[email protected]>
 
 Permission is hereby granted, free of charge, to any person
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/NOTICE new/gunicorn-19.4.5/NOTICE
--- old/gunicorn-19.4.1/NOTICE  2015-11-23 09:12:35.000000000 +0100
+++ new/gunicorn-19.4.5/NOTICE  2016-01-04 10:35:07.000000000 +0100
@@ -1,6 +1,6 @@
 Gunicorn
 
-2009-2015 (c) Benoît Chesneau <[email protected]>
+2009-2016 (c) Benoît Chesneau <[email protected]>
 2009-2015 (c) Paul J. Davis <[email protected]>
 
 Gunicorn is released under the MIT license. See the LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/PKG-INFO new/gunicorn-19.4.5/PKG-INFO
--- old/gunicorn-19.4.1/PKG-INFO        2015-11-25 17:07:05.000000000 +0100
+++ new/gunicorn-19.4.5/PKG-INFO        2016-01-05 01:11:58.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: gunicorn
-Version: 19.4.1
+Version: 19.4.5
 Summary: WSGI HTTP Server for UNIX
 Home-page: http://gunicorn.org
 Author: Benoit Chesneau
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/site/index.html 
new/gunicorn-19.4.5/docs/site/index.html
--- old/gunicorn-19.4.1/docs/site/index.html    2015-11-25 16:25:38.000000000 
+0100
+++ new/gunicorn-19.4.5/docs/site/index.html    2015-12-24 09:52:59.000000000 
+0100
@@ -16,7 +16,7 @@
     <div class="logo-div">
       <div class="latest">
         Latest version: <strong><a
-            
href="http://docs.gunicorn.org/en/19.4/news.html#id1";>19.4</a></strong>
+            href="http://docs.gunicorn.org/en/stable";>19.4</a></strong>
       </div>
 
       <div class="logo"><img src="images/logo.jpg" ></div>
@@ -83,7 +83,7 @@
   (tutorial) $ cat myapp.py
 
   def app(environ, start_response):
-      data = "Hello, World!\n"
+      data = b"Hello, World!\n"
       start_response("200 OK", [
           ("Content-Type", "text/plain"),
           ("Content-Length", str(len(data)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/source/2015-news.rst 
new/gunicorn-19.4.5/docs/source/2015-news.rst
--- old/gunicorn-19.4.1/docs/source/2015-news.rst       2015-11-25 
17:06:44.000000000 +0100
+++ new/gunicorn-19.4.5/docs/source/2015-news.rst       2016-01-04 
11:00:09.000000000 +0100
@@ -6,6 +6,40 @@
 
    Please see :doc:`news` for the latest changes.
 
+19.4.3 / 2015/12/30
+===================
+
+- fix: don't check if a file is writable using os.stat with SELINUX 
(:issue:`1171`)
+
+19.4.2 / 2015/12/29
+===================
+
+Core
+++++
+
+- improvement: handle HaltServer in manage_workers (:issue:`1095`)
+- fix: Do not rely on sendfile sending requested count (:issue:`1155`)
+- fix: claridy --no-sendfile default (:issue:`1156`)
+- fix: LoggingCatch sendfile failure from no file descriptor (:issue:`1160`)
+
+Logging
++++++++
+
+- fix: Always send access log to syslog if syslog is on
+- fix: check auth before trying to own a file (:issue:`1157`)
+
+
+Documentation
++++++++++++++
+
+- fix: Fix Slowloris broken link. (:issue:`1142`)
+- Tweak markup in faq.rst
+
+Testing
++++++++
+
+- fix: gaiohttp test (:issue:`1164`)
+
 19.4.1 / 2015/11/25
 ===================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/source/2016-news.rst 
new/gunicorn-19.4.5/docs/source/2016-news.rst
--- old/gunicorn-19.4.1/docs/source/2016-news.rst       1970-01-01 
01:00:00.000000000 +0100
+++ new/gunicorn-19.4.5/docs/source/2016-news.rst       2016-01-05 
01:06:12.000000000 +0100
@@ -0,0 +1,18 @@
+================
+Changelog - 2016
+================
+
+.. note::
+
+   Please see :doc:`news` for the latest changes55
+
+19.4.5 / 2016/01/05
+===================
+
+- fix: NameError fileno in gunicorn.http.wsgi (:issue:`1178`)
+
+19.4.4 / 2016/01/04
+===================
+
+- fix: check if a fileobject can be used with sendfile(2) (:issue:`1174`)
+- doc: be more descriptive in errorlog option (:issue:`1173`)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/source/deploy.rst 
new/gunicorn-19.4.5/docs/source/deploy.rst
--- old/gunicorn-19.4.1/docs/source/deploy.rst  2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/docs/source/deploy.rst  2015-12-24 09:52:59.000000000 
+0100
@@ -11,7 +11,7 @@
 use Nginx_. If you choose another proxy server you need to make sure that it
 buffers slow clients when you use default Gunicorn workers. Without this
 buffering Gunicorn will be easily susceptible to denial-of-service attacks.
-You can use slowloris_ to check if your proxy is behaving properly.
+You can use Boom_ to check if your proxy is behaving properly.
 
 An `example configuration`_ file for fast clients with Nginx_:
 
@@ -266,7 +266,7 @@
     kill -USR1 $(cat /var/run/gunicorn.pid)
 
 .. _Nginx: http://www.nginx.org
-.. _slowloris: http://ha.ckers.org/slowloris/
+.. _Boom: https://github.com/rakyll/boom
 .. _`example configuration`: 
http://github.com/benoitc/gunicorn/blob/master/examples/nginx.conf
 .. _runit: http://smarden.org/runit/
 .. _`example service`: 
http://github.com/benoitc/gunicorn/blob/master/examples/gunicorn_rc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/source/design.rst 
new/gunicorn-19.4.5/docs/source/design.rst
--- old/gunicorn-19.4.1/docs/source/design.rst  2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/docs/source/design.rst  2015-12-24 09:52:59.000000000 
+0100
@@ -75,7 +75,7 @@
 This resource bound assumption is why we require a buffering proxy in front of 
a
 default configuration Gunicorn. If you exposed synchronous workers to the
 internet, a DOS attack would be trivial by creating a load that trickles data 
to
-the servers. For the curious, Slowloris_ is an example of this type of load.
+the servers. For the curious, Boom_ is an example of this type of load.
 
 Some examples of behavior requiring asynchronous workers:
 
@@ -126,5 +126,5 @@
 .. _Greenlets: https://github.com/python-greenlet/greenlet
 .. _Eventlet: http://eventlet.net
 .. _Gevent: http://gevent.org
-.. _Slowloris: http://ha.ckers.org/slowloris/
+.. _Boom: http://ha.ckers.org/slowloris/
 .. _aiohttp: https://github.com/KeepSafe/aiohttp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/source/faq.rst 
new/gunicorn-19.4.5/docs/source/faq.rst
--- old/gunicorn-19.4.1/docs/source/faq.rst     2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/docs/source/faq.rst     2015-12-24 09:52:59.000000000 
+0100
@@ -27,8 +27,12 @@
 How might I test a proxy configuration?
 ---------------------------------------
 
-The Slowloris_ script is a great way to test that your proxy is correctly
-buffering responses for the synchronous workers.
+The Boom_ program is a great way to test that your proxy is correctly
+buffering responses for the synchronous workers::
+
+    $ boom -n 10000 -c 100 http://127.0.0.1:5000/
+
+This runs a benchmark of 10000 requests with 100 running concurrently.
 
 How can I name processes?
 -------------------------
@@ -47,7 +51,7 @@
 handle unbuffered requests (ie, serving requests directly from the internet)
 you should use one of the async workers.
 
-.. _slowloris: http://ha.ckers.org/slowloris/
+.. _Boom: https://github.com/rakyll/boom
 .. _setproctitle: http://pypi.python.org/pypi/setproctitle
 .. _proc_name: settings.html#proc-name
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/docs/source/news.rst 
new/gunicorn-19.4.5/docs/source/news.rst
--- old/gunicorn-19.4.1/docs/source/news.rst    2015-11-25 17:06:44.000000000 
+0100
+++ new/gunicorn-19.4.5/docs/source/news.rst    2016-01-05 01:06:32.000000000 
+0100
@@ -2,6 +2,52 @@
 Changelog
 =========
 
+19.4.5 / 2016/01/05
+===================
+
+- fix: NameError fileno in gunicorn.http.wsgi (:issue:`1178`)
+
+19.4.4 / 2016/01/04
+===================
+
+- fix: check if a fileobject can be used with sendfile(2) (:issue:`1174`)
+- doc: be more descriptive in errorlog option (:issue:`1173`)
+
+19.4.3 / 2015/12/30
+===================
+
+- fix: don't check if a file is writable using os.stat with SELINUX 
(:issue:`1171`)
+
+19.4.2 / 2015/12/29
+===================
+
+Core
+++++
+
+- improvement: handle HaltServer in manage_workers (:issue:`1095`)
+- fix: Do not rely on sendfile sending requested count (:issue:`1155`)
+- fix: claridy --no-sendfile default (:issue:`1156`)
+- fix: LoggingCatch sendfile failure from no file descriptor (:issue:`1160`)
+
+Logging
++++++++
+
+- fix: Always send access log to syslog if syslog is on
+- fix: check auth before trying to own a file (:issue:`1157`)
+
+
+Documentation
++++++++++++++
+
+- fix: Fix Slowloris broken link. (:issue:`1142`)
+- Tweak markup in faq.rst
+
+Testing
++++++++
+
+- fix: gaiohttp test (:issue:`1164`)
+
+
 19.4.1 / 2015/11/25
 ===================
 
@@ -97,106 +143,13 @@
 - fix: reloader should survive SyntaxError (:issue:`994`)
 - fix: expose the reloader class to the worker.
 
-
-19.3.0 / 2015/03/06
-===================
-
-Changes
--------
-
-Core
-++++
-
-- fix: :issue:`978` make sure a listener is inheritable
-- add `check_config` class method to workers
-- fix: :issue:`983` fix select timeout in sync worker with multiple
-  connections
-- allows workers to access to the reloader. close :issue:`984`
-- raise TypeError instead of AssertionError
-
-Logging
-+++++++
-
-- make Logger.loglevel a class attribute
-
-Documentation
-+++++++++++++
-
-- fix: :issue:`988` fix syntax errors in examples/gunicorn_rc
-
-19.2.1 / 2015/02/4
-==================
-
-Changes
--------
-
-Logging
-+++++++
-
-- expose loglevel in the Logger class
-
-AsyncIO worker (gaiohttp)
-+++++++++++++++++++++++++
-
-- fix :issue:`977` fix initial crash
-
-Documentation
-+++++++++++++
-
-- document security mailing-list in the contributing page.
-
-
-19.2 / 2015/01/30
-=================
-
-Changes
--------
-
-Core
-++++
-
-- optimize the sync workers when listening on a single interface
-- add `--sendfile` settings to enable/disable sendfile. fix :issue:`856` .
-- add the selectors module to the code base. :issue:`886`
-- fix :pr:`862` add `--max-requests-jitter` setting to set the maximum jitter 
to add to the
-  max-requests setting.
-- fix :issue:`899` propagate proxy_protocol_info to keep-alive requests
-- fix :issue:`863` worker timeout: dynamic timeout has been removed, fix a race
-  condition error
-- fix: Avoid world writable file
-- fix :issue:`917`: the deprecated ``--debug`` option has been removed.
-
-Logging
-+++++++
-
-- fix :issue:`941`  set logconfig default to paster more trivially
-- add statsd-prefix config setting: set the prefix to use when emitting statsd
-  metrics
-- :issue:`832` log to console by default
-- fix :issue:`845`: set the gunicorn loggers from the paste config
-
-Thread Worker
-+++++++++++++
-
-- fix :issue:`908` make sure the worker can continue to accept requests
-
-Eventlet Worker
-+++++++++++++++
-
-- fix :issue:`867` Fix eventlet shutdown to actively shut down the workers.
-
-Documentation
-+++++++++++++
-
-Many improvements and fixes have been done, see the detailed changelog for
-more information.
-
 History
 =======
 
 .. toctree::
    :titlesonly:
 
+   2016-news
    2015-news
    2014-news
    2013-news
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn/__init__.py 
new/gunicorn-19.4.5/gunicorn/__init__.py
--- old/gunicorn-19.4.1/gunicorn/__init__.py    2015-11-25 17:06:44.000000000 
+0100
+++ new/gunicorn-19.4.5/gunicorn/__init__.py    2016-01-05 01:02:07.000000000 
+0100
@@ -3,6 +3,6 @@
 # This file is part of gunicorn released under the MIT license.
 # See the NOTICE for more information.
 
-version_info = (19, 4, 1)
+version_info = (19, 4, 5)
 __version__ = ".".join([str(v) for v in version_info])
 SERVER_SOFTWARE = "gunicorn/%s" % __version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn/arbiter.py 
new/gunicorn-19.4.5/gunicorn/arbiter.py
--- old/gunicorn-19.4.1/gunicorn/arbiter.py     2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/gunicorn/arbiter.py     2015-12-31 14:40:51.000000000 
+0100
@@ -176,9 +176,9 @@
         self.start()
         util._setproctitle("master [%s]" % self.proc_name)
 
-        self.manage_workers()
-        while True:
-            try:
+        try:
+            self.manage_workers()
+            while True:
                 sig = self.SIG_QUEUE.pop(0) if len(self.SIG_QUEUE) else None
                 if sig is None:
                     self.sleep()
@@ -198,21 +198,21 @@
                 self.log.info("Handling signal: %s", signame)
                 handler()
                 self.wakeup()
-            except StopIteration:
-                self.halt()
-            except KeyboardInterrupt:
-                self.halt()
-            except HaltServer as inst:
-                self.halt(reason=inst.reason, exit_status=inst.exit_status)
-            except SystemExit:
-                raise
-            except Exception:
-                self.log.info("Unhandled exception in main loop:\n%s",
-                              traceback.format_exc())
-                self.stop(False)
-                if self.pidfile is not None:
-                    self.pidfile.unlink()
-                sys.exit(-1)
+        except StopIteration:
+            self.halt()
+        except KeyboardInterrupt:
+            self.halt()
+        except HaltServer as inst:
+            self.halt(reason=inst.reason, exit_status=inst.exit_status)
+        except SystemExit:
+            raise
+        except Exception:
+            self.log.info("Unhandled exception in main loop:\n%s",
+                          traceback.format_exc())
+            self.stop(False)
+            if self.pidfile is not None:
+                self.pidfile.unlink()
+            sys.exit(-1)
 
     def handle_chld(self, sig, frame):
         "SIGCHLD handling"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn/config.py 
new/gunicorn-19.4.5/gunicorn/config.py
--- old/gunicorn-19.4.1/gunicorn/config.py      2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/gunicorn/config.py      2016-01-04 10:22:32.000000000 
+0100
@@ -281,6 +281,9 @@
 
 
 def validate_bool(val):
+    if val is None:
+        return
+
     if isinstance(val, bool):
         return val
     if not isinstance(val, six.string_types):
@@ -681,8 +684,8 @@
     desc = """\
         Timeout for graceful workers restart.
 
-        After receiving a restart signal, workers have this much time to 
finish 
-        serving requests. Workers still alive after the timeout (starting from 
+        After receiving a restart signal, workers have this much time to finish
+        serving requests. Workers still alive after the timeout (starting from
         the receipt of the restart signal) are force killed.
         """
 
@@ -821,13 +824,14 @@
         restarting workers.
         """
 
+
 class Sendfile(Setting):
     name = "sendfile"
     section = "Server Mechanics"
     cli = ["--no-sendfile"]
     validator = validate_bool
-    action = "store_false"
-    default = True
+    action = "store_const"
+    const = False
     desc = """\
         Disables the use of ``sendfile()``.
 
@@ -837,6 +841,7 @@
            disabling.
         """
 
+
 class Chdir(Setting):
     name = "chdir"
     section = "Server Mechanics"
@@ -1081,7 +1086,7 @@
     desc = """\
         The Error log file to write to.
 
-        ``'-'`` means log to stderr.
+        Using ``'-'`` for FILE makes gunicorn log to stderr.
 
         .. versionchanged:: 19.2
            Log to stderr by default.
@@ -1692,6 +1697,7 @@
     Whether to perform SSL handshake on socket connect (see stdlib ssl 
module's)
     """
 
+
 if sys.version_info >= (2, 7):
     class Ciphers(Setting):
         name = "ciphers"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn/glogging.py 
new/gunicorn-19.4.5/gunicorn/glogging.py
--- old/gunicorn-19.4.1/gunicorn/glogging.py    2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/gunicorn/glogging.py    2015-12-31 14:40:51.000000000 
+0100
@@ -278,7 +278,7 @@
         for format details
         """
 
-        if not self.cfg.accesslog and not self.cfg.logconfig:
+        if not (self.cfg.accesslog or self.cfg.logconfig or self.cfg.syslog):
             return
 
         # wrap atoms:
@@ -338,7 +338,12 @@
                 util.check_is_writeable(output)
                 h = logging.FileHandler(output)
                 # make sure the user can reopen the file
-                os.chown(h.baseFilename, self.cfg.user, self.cfg.group)
+                try:
+                    os.chown(h.baseFilename, self.cfg.user, self.cfg.group)
+                except OSError:
+                    # it's probably OK there, we assume the user has given
+                    # /dev/null as a parameter.
+                    pass
 
             h.setFormatter(fmt)
             h._gunicorn = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn/http/wsgi.py 
new/gunicorn-19.4.5/gunicorn/http/wsgi.py
--- old/gunicorn-19.4.1/gunicorn/http/wsgi.py   2015-11-25 13:29:46.000000000 
+0100
+++ new/gunicorn-19.4.5/gunicorn/http/wsgi.py   2016-01-05 01:09:58.000000000 
+0100
@@ -347,14 +347,17 @@
         util.write(self.sock, arg, self.chunked)
 
     def can_sendfile(self):
-        return self.cfg.sendfile and sendfile is not None
+        return self.cfg.sendfile is not False and sendfile is not None
 
     def sendfile(self, respiter):
         if self.cfg.is_ssl or not self.can_sendfile():
             return False
 
+        if not util.has_fileno(respiter.filelike):
+            return False
+
+        fileno = respiter.filelike.fileno()
         try:
-            fileno = respiter.filelike.fileno()
             offset = os.lseek(fileno, 0, os.SEEK_CUR)
             if self.response_length is None:
                 filesize = os.fstat(fileno).st_size
@@ -379,7 +382,7 @@
         sockno = self.sock.fileno()
         sent = 0
 
-        for m in range(0, nbytes, BLKSIZE):
+        while sent != nbytes:
             count = min(nbytes - sent, BLKSIZE)
             sent += sendfile(sockno, fileno, offset + sent, count)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn/util.py 
new/gunicorn-19.4.5/gunicorn/util.py
--- old/gunicorn-19.4.1/gunicorn/util.py        2015-11-25 13:50:16.000000000 
+0100
+++ new/gunicorn-19.4.5/gunicorn/util.py        2016-01-04 10:21:08.000000000 
+0100
@@ -7,12 +7,15 @@
 
 import email.utils
 import fcntl
+import grp
 import io
 import os
 import pkg_resources
+import pwd
 import random
 import resource
 import socket
+import stat
 import sys
 import textwrap
 import time
@@ -507,14 +510,14 @@
 
     return value.encode(encoding)
 
-def is_fileobject(obj):
-    if not hasattr(obj, "tell") or not hasattr(obj, "fileno"):
+def has_fileno(obj):
+    if not hasattr(obj, "fileno"):
         return False
 
     # check BytesIO case and maybe others
     try:
         obj.fileno()
-    except (IOError, io.UnsupportedOperation):
+    except (AttributeError, IOError, io.UnsupportedOperation):
         return False
 
     return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn.egg-info/PKG-INFO 
new/gunicorn-19.4.5/gunicorn.egg-info/PKG-INFO
--- old/gunicorn-19.4.1/gunicorn.egg-info/PKG-INFO      2015-11-25 
17:07:05.000000000 +0100
+++ new/gunicorn-19.4.5/gunicorn.egg-info/PKG-INFO      2016-01-05 
01:11:58.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: gunicorn
-Version: 19.4.1
+Version: 19.4.5
 Summary: WSGI HTTP Server for UNIX
 Home-page: http://gunicorn.org
 Author: Benoit Chesneau
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/gunicorn.egg-info/SOURCES.txt 
new/gunicorn-19.4.5/gunicorn.egg-info/SOURCES.txt
--- old/gunicorn-19.4.1/gunicorn.egg-info/SOURCES.txt   2015-11-25 
17:07:05.000000000 +0100
+++ new/gunicorn-19.4.5/gunicorn.egg-info/SOURCES.txt   2016-01-05 
01:11:58.000000000 +0100
@@ -60,6 +60,7 @@
 docs/source/2013-news.rst
 docs/source/2014-news.rst
 docs/source/2015-news.rst
+docs/source/2016-news.rst
 docs/source/community.rst
 docs/source/conf.py
 docs/source/configure.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/setup.cfg 
new/gunicorn-19.4.5/setup.cfg
--- old/gunicorn-19.4.1/setup.cfg       2015-11-25 17:07:05.000000000 +0100
+++ new/gunicorn-19.4.5/setup.cfg       2016-01-05 01:11:58.000000000 +0100
@@ -11,7 +11,7 @@
 universal = 1
 
 [egg_info]
-tag_build = 
-tag_date = 0
 tag_svn_revision = 0
+tag_date = 0
+tag_build = 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.4.1/tests/test_gaiohttp.py 
new/gunicorn-19.4.5/tests/test_gaiohttp.py
--- old/gunicorn-19.4.1/tests/test_gaiohttp.py  2015-11-23 09:12:35.000000000 
+0100
+++ new/gunicorn-19.4.5/tests/test_gaiohttp.py  2015-12-31 14:40:51.000000000 
+0100
@@ -59,7 +59,7 @@
         self.worker.wsgi = mock.Mock()
         self.worker.loop = mock.Mock()
         self.worker.log = mock.Mock()
-        self.worker.cfg = mock.Mock()
+        self.worker.cfg = Config()
 
         f = self.worker.factory(
             self.worker.wsgi, ('localhost', 8080))


Reply via email to