From 64ddb536bdd67260442a994c9417c50ae33be659 Mon Sep 17 00:00:00 2001 From: Graham Dumpleton Date: Tue, 18 Jun 2019 16:46:23 +1000 Subject: Increment version to 4.6.8. --- src/server/wsgi_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/wsgi_version.h b/src/server/wsgi_version.h index e1f6379..5fac22f 100755 --- a/src/server/wsgi_version.h +++ b/src/server/wsgi_version.h @@ -25,8 +25,8 @@ #define MOD_WSGI_MAJORVERSION_NUMBER 4 #define MOD_WSGI_MINORVERSION_NUMBER 6 -#define MOD_WSGI_MICROVERSION_NUMBER 7 -#define MOD_WSGI_VERSION_STRING "4.6.7" +#define MOD_WSGI_MICROVERSION_NUMBER 8 +#define MOD_WSGI_VERSION_STRING "4.6.8" /* ------------------------------------------------------------------------- */ -- cgit v1.2.1 From 51be92c48b9953426951957ca90ca78c5b712f6c Mon Sep 17 00:00:00 2001 From: Graham Dumpleton Date: Tue, 18 Jun 2019 17:01:35 +1000 Subject: Add change notes file for 4.6.8. --- docs/release-notes.rst | 1 + docs/release-notes/version-4.6.8.rst | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 docs/release-notes/version-4.6.8.rst diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 09c8b5b..22cf506 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -5,6 +5,7 @@ Release Notes .. toctree:: :maxdepth: 2 + release-notes/version-4.6.8 release-notes/version-4.6.7 release-notes/version-4.6.6 release-notes/version-4.6.5 diff --git a/docs/release-notes/version-4.6.8.rst b/docs/release-notes/version-4.6.8.rst new file mode 100644 index 0000000..0974c8a --- /dev/null +++ b/docs/release-notes/version-4.6.8.rst @@ -0,0 +1,7 @@ +============= +Version 4.6.8 +============= + +Version 4.6.8 of mod_wsgi can be obtained from: + + https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.6.8 -- cgit v1.2.1 From 0425748fae6f2124d62d5ba7f329e252aea92f61 Mon Sep 17 00:00:00 2001 From: Graham Dumpleton Date: Tue, 18 Jun 2019 17:02:02 +1000 Subject: Add --enable-sendfile option to mod_wsgi-express. --- docs/release-notes/version-4.6.8.rst | 7 +++++++ src/server/__init__.py | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/docs/release-notes/version-4.6.8.rst b/docs/release-notes/version-4.6.8.rst index 0974c8a..34e9397 100644 --- a/docs/release-notes/version-4.6.8.rst +++ b/docs/release-notes/version-4.6.8.rst @@ -5,3 +5,10 @@ Version 4.6.8 Version 4.6.8 of mod_wsgi can be obtained from: https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.6.8 + +New Features +------------ + +* Add ``--enable-sendfile`` option to ``mod_wsgi-express``. Should only be + used where the operating system kernel supports ``sendfile()`` for the + file system type where files are hosted. diff --git a/src/server/__init__.py b/src/server/__init__.py index 0decea3..1454f46 100644 --- a/src/server/__init__.py +++ b/src/server/__init__.py @@ -436,6 +436,11 @@ KeepAliveTimeout %(keep_alive_timeout)s KeepAlive Off + +EnableSendfile On +WSGIEnableSendfile On + + AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html @@ -2213,6 +2218,12 @@ option_list = ( 'being forcibly flushed. Defaults to 0 seconds indicating that ' 'it will default to the value of the \'socket-timeout\' option.'), + optparse.make_option('--enable-sendfile', action='store_true', + default=False, help='Flag indicating whether sendfile() support ' + 'should be enabled. Defaults to being disabled. This should ' + 'only be enabled if the operating system kernel and file system ' + 'type where files are hosted supports it.'), + optparse.make_option('--reload-on-changes', action='store_true', default=False, help='Flag indicating whether worker processes ' 'should be automatically restarted when any Python code file ' @@ -3238,6 +3249,9 @@ def _cmd_setup_server(command, args, options): if options['application_type'] == 'static': options['httpd_arguments_list'].append('-DMOD_WSGI_STATIC_ONLY') + if options['enable_sendfile']: + options['httpd_arguments_list'].append('-DMOD_WSGI_ENABLE_SENDFILE') + if options['server_metrics']: options['httpd_arguments_list'].append('-DMOD_WSGI_SERVER_METRICS') if options['server_status']: -- cgit v1.2.1 From 6561090ba8ebb64cee7baf91e6eea27939ca80cb Mon Sep 17 00:00:00 2001 From: Graham Dumpleton Date: Tue, 18 Jun 2019 17:18:07 +1000 Subject: Eliminate use of deprecated imp module. --- src/server/__init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/server/__init__.py b/src/server/__init__.py index 1454f46..ab77981 100644 --- a/src/server/__init__.py +++ b/src/server/__init__.py @@ -9,7 +9,7 @@ import math import signal import threading import atexit -import imp +import types import re import pprint import time @@ -30,7 +30,6 @@ _py_soext = '.so' _py_dylib = '' try: - import imp import sysconfig import distutils.sysconfig @@ -1412,7 +1411,7 @@ class ApplicationHandler(object): self.target = entry_point elif application_type != 'static': - self.module = imp.new_module('__wsgi__') + self.module = types.ModuleType('__wsgi__') self.module.__file__ = entry_point with open(entry_point, 'r') as fp: @@ -1521,7 +1520,7 @@ class ResourceHandler(object): for extension, script in resources: extension_name = re.sub(r'[^\w]{1}', '_', extension) module_name = '__wsgi_resource%s__' % extension_name - module = imp.new_module(module_name) + module = types.ModuleType(module_name) module.__file__ = script with open(script, 'r') as fp: -- cgit v1.2.1 From 7f8fce232f98173e356aef83d674f321557473f8 Mon Sep 17 00:00:00 2001 From: Graham Dumpleton Date: Tue, 18 Jun 2019 17:18:32 +1000 Subject: Use EXT_SUFFIX if defined instead of SO as SO is deprecated. --- src/server/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/__init__.py b/src/server/__init__.py index ab77981..6b4a82e 100644 --- a/src/server/__init__.py +++ b/src/server/__init__.py @@ -34,7 +34,11 @@ try: import distutils.sysconfig _py_soabi = sysconfig.get_config_var('SOABI') - _py_soext = sysconfig.get_config_var('SO') + + _py_soext = sysconfig.get_config_var('EXT_SUFFIX') + + if _py_soext is None: + _py_soext = sysconfig.get_config_var('SO') if (sysconfig.get_config_var('WITH_DYLD') and sysconfig.get_config_var('LIBDIR') and -- cgit v1.2.1 From f953105fb5f6d4550180d677bd623b1fd6834679 Mon Sep 17 00:00:00 2001 From: Graham Dumpleton Date: Sun, 6 Oct 2019 09:53:09 +1100 Subject: Requests hitting queue timeout not being failed immediately. --- docs/release-notes/version-4.6.8.rst | 7 +++++++ src/server/mod_wsgi.c | 1 + 2 files changed, 8 insertions(+) diff --git a/docs/release-notes/version-4.6.8.rst b/docs/release-notes/version-4.6.8.rst index 34e9397..909c3fc 100644 --- a/docs/release-notes/version-4.6.8.rst +++ b/docs/release-notes/version-4.6.8.rst @@ -6,6 +6,13 @@ Version 4.6.8 of mod_wsgi can be obtained from: https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.6.8 +Bugs Fixed +---------- + +* When the queue timeout was triggered for requests sent to daemon mode + processes, the error response wasn't being flushed out correctly resulting + in the connection still being held up to the time of the socket timeout. + New Features ------------ diff --git a/src/server/mod_wsgi.c b/src/server/mod_wsgi.c index c9e20a0..a2b6153 100644 --- a/src/server/mod_wsgi.c +++ b/src/server/mod_wsgi.c @@ -13148,6 +13148,7 @@ static int wsgi_hook_daemon_handler(conn_rec *c) if (queue_time > wsgi_daemon_process->group->queue_timeout) { queue_timeout_occurred = 1; + r->status = HTTP_INTERNAL_SERVER_ERROR; r->status_line = "200 Timeout"; ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, -- cgit v1.2.1