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 - arun@gmx.de
+
+- 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
+2009-2016 (c) Benoît Chesneau
2009-2015 (c) Paul J. Davis
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
+2009-2016 (c) Benoît Chesneau
2009-2015 (c) Paul J. Davis
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>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))