Hello community,
here is the log from the commit of package apache2-mod_wsgi for
openSUSE:Factory checked in at 2019-12-09 21:34:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/apache2-mod_wsgi (Old)
and /work/SRC/openSUSE:Factory/.apache2-mod_wsgi.new.4691 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache2-mod_wsgi"
Mon Dec 9 21:34:22 2019 rev:26 rq:754581 version:4.6.8
Changes:
--------
---
/work/SRC/openSUSE:Factory/apache2-mod_wsgi/apache2-mod_wsgi-python3.changes
2019-03-24 15:01:44.235165943 +0100
+++
/work/SRC/openSUSE:Factory/.apache2-mod_wsgi.new.4691/apache2-mod_wsgi-python3.changes
2019-12-09 21:34:23.522117797 +0100
@@ -1,0 +2,19 @@
+Wed Dec 4 11:44:41 UTC 2019 - [email protected]
+
+- version update to 4.6.8
+ * If no system mime types file can be found, fall back to ``/dev/null``
+ so that Apache can still at least start up.
+ * Fix compilation failures when using Python 3.8.
+ * The Apache request ID is accessible in request events as ``request_id``.
+ * The per request data dictionary accessible using
``mod_wsgi.request_data()``
+ is now also accessible in events as ``request_data``.
+ * 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.
+
+-------------------------------------------------------------------
+Tue Dec 3 14:09:45 UTC 2019 - [email protected]
+
+- test with %apache_rex_check
+
+-------------------------------------------------------------------
apache2-mod_wsgi.changes: same change
Old:
----
mod_wsgi-4.6.5.tar.gz
New:
----
mod_wsgi-4.6.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apache2-mod_wsgi-python3.spec ++++++
--- /var/tmp/diff_new_pack.f6MVnC/_old 2019-12-09 21:34:24.086117574 +0100
+++ /var/tmp/diff_new_pack.f6MVnC/_new 2019-12-09 21:34:24.090117572 +0100
@@ -1,7 +1,7 @@
#
# spec file for package apache2-mod_wsgi-python3
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -27,15 +27,16 @@
BuildRequires: httpd-devel
%endif
Name: apache2-mod_wsgi-python3
-Version: 4.6.5
+Version: 4.6.8
Release: 0
Summary: A WSGI interface for Python3 web applications in Apache
License: Apache-2.0
Group: Productivity/Networking/Web/Servers
-Url: https://github.com/GrahamDumpleton/mod_wsgi
+URL: https://github.com/GrahamDumpleton/mod_wsgi
Source:
https://github.com/GrahamDumpleton/mod_wsgi/archive/%{version}.tar.gz#/%{modname}-%{version}.tar.gz
## Work around for inconsistent Apache source tree in SLE 12, see bnc#915479
Patch0: wsgi_fixVersionCheck.patch
+BuildRequires: apache-rex
BuildRequires: python3-devel
Conflicts: apache2-mod_wsgi
Provides: %{modname} = %{version}-%{release}
@@ -73,13 +74,8 @@
%install
make install DESTDIR=%{buildroot} LIBEXECDIR=%{apache_libexecdir}
-%if 0%{?suse_version} >= 1330
-# don't exist for <= Leap 42.1
%check
-set +x
-%apache_test_module_load -m wsgi
-set -x
-%endif
+%apache_rex_check -m ./src/server/.libs mod_wsgi-basic
%post
%if 0%{?suse_version}
++++++ apache2-mod_wsgi.spec ++++++
--- /var/tmp/diff_new_pack.f6MVnC/_old 2019-12-09 21:34:24.114117563 +0100
+++ /var/tmp/diff_new_pack.f6MVnC/_new 2019-12-09 21:34:24.118117561 +0100
@@ -1,7 +1,7 @@
#
# spec file for package apache2-mod_wsgi
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -27,15 +27,16 @@
BuildRequires: httpd-devel
%endif
Name: apache2-mod_wsgi
-Version: 4.6.5
+Version: 4.6.8
Release: 0
Summary: A WSGI interface for Python web applications in Apache
License: Apache-2.0
Group: Productivity/Networking/Web/Servers
-Url: https://github.com/GrahamDumpleton/mod_wsgi
+URL: https://github.com/GrahamDumpleton/mod_wsgi
Source:
https://github.com/GrahamDumpleton/mod_wsgi/archive/%{version}.tar.gz#/%{modname}-%{version}.tar.gz
## Work around for inconsistent Apache source tree in SLE 12, see bnc#915479
Patch0: wsgi_fixVersionCheck.patch
+BuildRequires: apache-rex
BuildRequires: python-devel
Conflicts: apache2-mod_wsgi-python3
Provides: %{modname} = %{version}-%{release}
@@ -73,13 +74,8 @@
%install
make install DESTDIR=%{buildroot} LIBEXECDIR=%{apache_libexecdir}
-%if 0%{?suse_version} >= 1330
-# don't exist for <= Leap 42.1
%check
-set +x
-%apache_test_module_load -m wsgi
-set -x
-%endif
+%apache_rex_check -m ./src/server/.libs mod_wsgi-basic
%post
%if 0%{?suse_version}
++++++ mod_wsgi-4.6.5.tar.gz -> mod_wsgi-4.6.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/docs/conf.py
new/mod_wsgi-4.6.8/docs/conf.py
--- old/mod_wsgi-4.6.5/docs/conf.py 2018-10-22 06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/docs/conf.py 2019-10-06 00:58:30.000000000 +0200
@@ -41,7 +41,7 @@
# General information about the project.
project = u'mod_wsgi'
-copyright = u'2007-2018, Graham Dumpleton'
+copyright = u'2007-2019, Graham Dumpleton'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mod_wsgi-4.6.5/docs/configuration-directives/WSGIDaemonProcess.rst
new/mod_wsgi-4.6.8/docs/configuration-directives/WSGIDaemonProcess.rst
--- old/mod_wsgi-4.6.5/docs/configuration-directives/WSGIDaemonProcess.rst
2018-10-22 06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/docs/configuration-directives/WSGIDaemonProcess.rst
2019-10-06 00:58:30.000000000 +0200
@@ -240,9 +240,9 @@
Note that the directory specified must exist and be writable by the
user that the daemon process run as.
-**restart-interval=nnn**
- Defines a time limit on how long a daemon process should run before
- being restarted.
+**restart-interval=sss**
+ Defines a time limit in seconds for how long a daemon process should
+ run before being restarted.
This might be use to periodically force restart the WSGI application
processes when you have issues related to Python object reference count
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/docs/release-notes/version-4.6.6.rst
new/mod_wsgi-4.6.8/docs/release-notes/version-4.6.6.rst
--- old/mod_wsgi-4.6.5/docs/release-notes/version-4.6.6.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/mod_wsgi-4.6.8/docs/release-notes/version-4.6.6.rst 2019-10-06
00:58:30.000000000 +0200
@@ -0,0 +1,28 @@
+=============
+Version 4.6.6
+=============
+
+Version 4.6.6 of mod_wsgi can be obtained from:
+
+ https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.6.6
+
+Bugs Fixed
+----------
+
+* Fix compilation failures when using Python 3.8.
+
+Features Changed
+----------------
+
+* When running ``mod_wsgi-express`` it will do a search for the location of
+ ``bash`` and ``sh`` when defining the shell to use for the generated
+ ``apachectl``. The shell used can be overridden using ``--shell-executable``
+ option. This is to get around issue with FreeBSD not having ``/bin/bash``.
+
+New Features
+------------
+
+* The Apache request ID is accessible in request events as ``request_id``.
+
+* The per request data dictionary accessible using ``mod_wsgi.request_data()``
+ is now also accessible in events as ``request_data``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/docs/release-notes/version-4.6.7.rst
new/mod_wsgi-4.6.8/docs/release-notes/version-4.6.7.rst
--- old/mod_wsgi-4.6.5/docs/release-notes/version-4.6.7.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/mod_wsgi-4.6.8/docs/release-notes/version-4.6.7.rst 2019-10-06
00:58:30.000000000 +0200
@@ -0,0 +1,13 @@
+=============
+Version 4.6.7
+=============
+
+Version 4.6.7 of mod_wsgi can be obtained from:
+
+ https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.6.7
+
+Bugs Fixed
+----------
+
+* Fix Windows build errors due to Python 3.7+ not providing empty function
+ stubs for ``PyOS_AfterFork_Child()`` and ``PyOS_AfterFork_Parent()``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/docs/release-notes/version-4.6.8.rst
new/mod_wsgi-4.6.8/docs/release-notes/version-4.6.8.rst
--- old/mod_wsgi-4.6.5/docs/release-notes/version-4.6.8.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/mod_wsgi-4.6.8/docs/release-notes/version-4.6.8.rst 2019-10-06
00:58:30.000000000 +0200
@@ -0,0 +1,21 @@
+=============
+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
+
+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
+------------
+
+* 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/docs/release-notes.rst
new/mod_wsgi-4.6.8/docs/release-notes.rst
--- old/mod_wsgi-4.6.5/docs/release-notes.rst 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/docs/release-notes.rst 2019-10-06 00:58:30.000000000
+0200
@@ -5,6 +5,9 @@
.. 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
release-notes/version-4.6.4
release-notes/version-4.6.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/setup.py new/mod_wsgi-4.6.8/setup.py
--- old/mod_wsgi-4.6.5/setup.py 2018-10-22 06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/setup.py 2019-10-06 00:58:30.000000000 +0200
@@ -573,6 +573,8 @@
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
'Topic :: Internet :: WWW/HTTP :: WSGI',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Server'
],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/__init__.py
new/mod_wsgi-4.6.8/src/server/__init__.py
--- old/mod_wsgi-4.6.5/src/server/__init__.py 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/__init__.py 2019-10-06 00:58:30.000000000
+0200
@@ -9,7 +9,7 @@
import signal
import threading
import atexit
-import imp
+import types
import re
import pprint
import time
@@ -30,12 +30,15 @@
_py_dylib = ''
try:
- import imp
import sysconfig
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
@@ -104,10 +107,11 @@
for name in mimetypes.knownfiles:
if os.path.exists(name):
return name
- break
else:
return '/dev/null'
+SHELL = find_program(['bash', 'sh'], ['/usr/local/bin'])
+
APACHE_GENERAL_CONFIG = """
<IfModule !version_module>
LoadModule version_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_version.so'
@@ -435,6 +439,11 @@
KeepAlive Off
</IfDefine>
+<IfDefine MOD_WSGI_ENABLE_SENDFILE>
+EnableSendfile On
+WSGIEnableSendfile On
+</IfDefine>
+
<IfDefine MOD_WSGI_COMPRESS_RESPONSES>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
@@ -1406,7 +1415,7 @@
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:
@@ -1513,9 +1522,9 @@
self.resources = {}
for extension, script in resources:
- extension_name = re.sub('[^\w]{1}', '_', extension)
+ 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:
@@ -1758,7 +1767,7 @@
print(SERVER_METRICS_SCRIPT % options, file=fp)
WSGI_CONTROL_SCRIPT = """
-#!/bin/bash
+#!%(shell_executable)s
# %(sys_argv)s
@@ -2212,6 +2221,12 @@
'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 '
@@ -2465,6 +2480,11 @@
'unpacking of Python eggs. Defaults to a sub directory of '
'the server root directory.'),
+ optparse.make_option('--shell-executable', default=SHELL,
+ metavar='FILE-PATH', help='Override the path to the shell '
+ 'used in the \'apachectl\' script. The \'bash\' shell will '
+ 'be used if available.'),
+
optparse.make_option('--httpd-executable', default=apxs_config.HTTPD,
metavar='FILE-PATH', help='Override the path to the Apache web '
'server executable.'),
@@ -3232,6 +3252,9 @@
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']:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/mod_wsgi.c
new/mod_wsgi-4.6.8/src/server/mod_wsgi.c
--- old/mod_wsgi-4.6.5/src/server/mod_wsgi.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/mod_wsgi.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -2063,8 +2063,6 @@
PyObject *status_line_as_bytes = NULL;
PyObject *headers_as_bytes = NULL;
- PyObject *event = NULL;
-
if (!self->r) {
PyErr_SetString(PyExc_RuntimeError, "request object has expired");
return NULL;
@@ -2110,17 +2108,31 @@
if (wsgi_event_subscribers()) {
WSGIThreadInfo *thread_info;
+ PyObject *event = NULL;
+ PyObject *value = NULL;
+
thread_info = wsgi_thread_info(0, 0);
event = PyDict_New();
+#if AP_MODULE_MAGIC_AT_LEAST(20100923,2)
+ if (self->r->log_id) {
+#if PY_MAJOR_VERSION >= 3
+ value = PyUnicode_DecodeLatin1(self->r->log_id,
+ strlen(self->r->log_id), NULL);
+#else
+ value = PyString_FromString(self->r->log_id);
+#endif
+ PyDict_SetItemString(event, "request_id", value);
+ Py_DECREF(value);
+ }
+#endif
+
PyDict_SetItemString(event, "response_status", status_line);
PyDict_SetItemString(event, "response_headers", headers);
PyDict_SetItemString(event, "exception_info", exc_info);
-#if 0
PyDict_SetItemString(event, "request_data", thread_info->request_data);
-#endif
wsgi_publish_event("response_started", event);
@@ -3093,6 +3105,19 @@
event = PyDict_New();
+#if AP_MODULE_MAGIC_AT_LEAST(20100923,2)
+ if (self->r->log_id) {
+#if PY_MAJOR_VERSION >= 3
+ value = PyUnicode_DecodeLatin1(self->r->log_id,
+ strlen(self->r->log_id), NULL);
+#else
+ value = PyString_FromString(self->r->log_id);
+#endif
+ PyDict_SetItemString(event, "request_id", value);
+ Py_DECREF(value);
+ }
+#endif
+
value = wsgi_PyInt_FromLong(thread_handle->thread_id);
PyDict_SetItemString(event, "thread_id", value);
Py_DECREF(value);
@@ -3128,9 +3153,7 @@
PyDict_SetItemString(event, "application_start", value);
Py_DECREF(value);
-#if 0
PyDict_SetItemString(event, "request_data",
thread_handle->request_data);
-#endif
wsgi_publish_event("request_started", event);
@@ -3299,6 +3322,19 @@
event = PyDict_New();
+#if AP_MODULE_MAGIC_AT_LEAST(20100923,2)
+ if (self->r->log_id) {
+#if PY_MAJOR_VERSION >= 3
+ value = PyUnicode_DecodeLatin1(self->r->log_id,
+ strlen(self->r->log_id), NULL);
+#else
+ value = PyString_FromString(self->r->log_id);
+#endif
+ PyDict_SetItemString(event, "request_id", value);
+ Py_DECREF(value);
+ }
+#endif
+
value = wsgi_PyInt_FromLongLong(self->input->reads);
PyDict_SetItemString(event, "input_reads", value);
Py_DECREF(value);
@@ -3378,9 +3414,7 @@
PyDict_SetItemString(event, "application_time", value);
Py_DECREF(value);
-#if 0
PyDict_SetItemString(event, "request_data",
thread_handle->request_data);
-#endif
wsgi_publish_event("request_finished", event);
@@ -4345,8 +4379,15 @@
* do it if Python was initialised in parent process.
*/
- if (wsgi_python_initialized && !wsgi_python_after_fork)
+#ifdef HAVE_FORK
+ if (wsgi_python_initialized && !wsgi_python_after_fork) {
+#if PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7)
+ PyOS_AfterFork_Child();
+#else
PyOS_AfterFork();
+#endif
+ }
+#endif
/* Finalise any Python objects required by child process. */
@@ -6344,15 +6385,12 @@
apr_psprintf(r->pool, "%" APR_TIME_T_FMT, r->request_time));
#if AP_MODULE_MAGIC_AT_LEAST(20100923,2)
- if (!r->log_id || !r->connection->log_id) {
+ if (!r->log_id) {
const char **id;
/* Need to cast const away. */
- if (r)
- id = &((request_rec *)r)->log_id;
- else
- id = &((conn_rec *)c)->log_id;
+ id = &((request_rec *)r)->log_id;
ap_run_generate_log_id(c, r, id);
}
@@ -8510,6 +8548,9 @@
ap_log_error(APLOG_MARK, APLOG_ALERT, errno, wsgi_server,
"mod_wsgi (pid=%d): Couldn't bind unix domain "
"socket '%s'.", getpid(), process->socket_path);
+
+ close(sockfd);
+
return -1;
}
@@ -8521,6 +8562,9 @@
ap_log_error(APLOG_MARK, APLOG_ALERT, errno, wsgi_server,
"mod_wsgi (pid=%d): Couldn't listen on unix domain "
"socket.", getpid());
+
+ close(sockfd);
+
return -1;
}
@@ -8555,6 +8599,9 @@
"mod_wsgi (pid=%d): Couldn't change owner of unix "
"domain socket '%s' to uid=%ld.", getpid(),
process->socket_path, (long)socket_uid);
+
+ close(sockfd);
+
return -1;
}
}
@@ -9441,8 +9488,8 @@
while (current) {
int lineno;
- char *filename = NULL;
- char *name = NULL;
+ const char *filename = NULL;
+ const char *name = NULL;
if (current->f_trace) {
lineno = current->f_lineno;
@@ -10422,6 +10469,14 @@
wsgi_exit_daemon_process(0);
}
+#ifdef HAVE_FORK
+ if (wsgi_python_initialized) {
+#if PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7)
+ PyOS_AfterFork_Parent();
+#endif
+ }
+#endif
+
apr_pool_note_subprocess(p, &daemon->process, APR_KILL_AFTER_TIMEOUT);
apr_proc_other_child_register(&daemon->process, wsgi_manage_process,
daemon, NULL, p);
@@ -13093,6 +13148,7 @@
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,
@@ -13338,8 +13394,10 @@
for (i = 0; i < wsgi_daemon_list->nelts; ++i) {
entry = &entries[i];
- close(entry->listener_fd);
- entry->listener_fd = -1;
+ if (entry->listener_fd != -1) {
+ close(entry->listener_fd);
+ entry->listener_fd = -1;
+ }
}
}
#endif
@@ -13751,8 +13809,8 @@
if (trusted_proxy) {
for (i=0; i<trusted_proxy_headers->nelts; i++) {
- const char *name = NULL;
- const char *value = NULL;
+ const char *name;
+ const char *value;
name = ((const char**)trusted_proxy_headers->elts)[i];
value = apr_table_get(r->subprocess_env, name);
@@ -13879,11 +13937,9 @@
*/
for (i=0; i<trusted_proxy_headers->nelts; i++) {
- const char *name = NULL;
- const char *value = NULL;
+ const char *name;
name = ((const char**)trusted_proxy_headers->elts)[i];
- value = apr_table_get(r->subprocess_env, name);
if (!strcmp(name, "HTTP_X_FORWARDED_FOR") ||
!strcmp(name, "HTTP_X_REAL_IP")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_apache.c
new/mod_wsgi-4.6.8/src/server/wsgi_apache.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_apache.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_apache.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_apache.h
new/mod_wsgi-4.6.8/src/server/wsgi_apache.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_apache.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_apache.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_buckets.c
new/mod_wsgi-4.6.8/src/server/wsgi_buckets.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_buckets.c 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_buckets.c 2019-10-06
00:58:30.000000000 +0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_buckets.h
new/mod_wsgi-4.6.8/src/server/wsgi_buckets.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_buckets.h 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_buckets.h 2019-10-06
00:58:30.000000000 +0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_convert.c
new/mod_wsgi-4.6.8/src/server/wsgi_convert.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_convert.c 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_convert.c 2019-10-06
00:58:30.000000000 +0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_convert.h
new/mod_wsgi-4.6.8/src/server/wsgi_convert.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_convert.h 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_convert.h 2019-10-06
00:58:30.000000000 +0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_daemon.c
new/mod_wsgi-4.6.8/src/server/wsgi_daemon.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_daemon.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_daemon.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_daemon.h
new/mod_wsgi-4.6.8/src/server/wsgi_daemon.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_daemon.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_daemon.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_interp.c
new/mod_wsgi-4.6.8/src/server/wsgi_interp.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_interp.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_interp.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -338,9 +338,10 @@
PyThreadState_Swap(NULL);
- tstate = tstate->interp->tstate_head;
+ tstate = PyInterpreterState_ThreadHead(tstate->interp);
+
while (tstate) {
- tstate_next = tstate->next;
+ tstate_next = PyThreadState_Next(tstate);
if (tstate != tstate_save) {
PyThreadState_Swap(tstate);
PyThreadState_Clear(tstate);
@@ -436,9 +437,13 @@
*/
if (!name) {
+#if PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7)
+ interp = PyInterpreterState_Main();
+#else
interp = PyInterpreterState_Head();
- while (interp->next)
- interp = interp->next;
+ while (PyInterpreterState_Next(interp))
+ interp = PyInterpreterState_Next(interp);
+#endif
name = "";
}
@@ -1883,9 +1888,10 @@
PyThreadState_Swap(NULL);
- tstate = tstate->interp->tstate_head;
+ tstate = PyInterpreterState_ThreadHead(tstate->interp);
+
while (tstate) {
- tstate_next = tstate->next;
+ tstate_next = PyThreadState_Next(tstate);
if (tstate != tstate_save) {
PyThreadState_Swap(tstate);
PyThreadState_Clear(tstate);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_interp.h
new/mod_wsgi-4.6.8/src/server/wsgi_interp.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_interp.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_interp.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_logger.c
new/mod_wsgi-4.6.8/src/server/wsgi_logger.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_logger.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_logger.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -700,14 +700,25 @@
event = PyDict_New();
+#if AP_MODULE_MAGIC_AT_LEAST(20100923,2)
+ if (r->log_id) {
+#if PY_MAJOR_VERSION >= 3
+ object = PyUnicode_DecodeLatin1(r->log_id,
+ strlen(r->log_id), NULL);
+#else
+ object = PyString_FromString(r->log_id);
+#endif
+ PyDict_SetItemString(event, "request_id", object);
+ Py_DECREF(object);
+ }
+#endif
+
object = Py_BuildValue("(OOO)", type, value, traceback);
PyDict_SetItemString(event, "exception_info", object);
Py_DECREF(object);
-#if 0
PyDict_SetItemString(event, "request_data",
thread_info->request_data);
-#endif
wsgi_publish_event("request_exception", event);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_logger.h
new/mod_wsgi-4.6.8/src/server/wsgi_logger.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_logger.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_logger.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_memory.h
new/mod_wsgi-4.6.8/src/server/wsgi_memory.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_memory.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_memory.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_metrics.c
new/mod_wsgi-4.6.8/src/server/wsgi_metrics.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_metrics.c 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_metrics.c 2019-10-06
00:58:30.000000000 +0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -713,7 +713,7 @@
dict = PyModule_GetDict(module);
list = PyDict_GetItemString(dict, "event_callbacks");
- Py_INCREF(list);
+ Py_XINCREF(list);
Py_DECREF(module);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_metrics.h
new/mod_wsgi-4.6.8/src/server/wsgi_metrics.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_metrics.h 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_metrics.h 2019-10-06
00:58:30.000000000 +0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_python.h
new/mod_wsgi-4.6.8/src/server/wsgi_python.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_python.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_python.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_restrict.c
new/mod_wsgi-4.6.8/src/server/wsgi_restrict.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_restrict.c 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_restrict.c 2019-10-06
00:58:30.000000000 +0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_restrict.h
new/mod_wsgi-4.6.8/src/server/wsgi_restrict.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_restrict.h 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_restrict.h 2019-10-06
00:58:30.000000000 +0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_server.c
new/mod_wsgi-4.6.8/src/server/wsgi_server.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_server.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_server.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_server.h
new/mod_wsgi-4.6.8/src/server/wsgi_server.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_server.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_server.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_stream.c
new/mod_wsgi-4.6.8/src/server/wsgi_stream.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_stream.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_stream.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_stream.h
new/mod_wsgi-4.6.8/src/server/wsgi_stream.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_stream.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_stream.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_thread.c
new/mod_wsgi-4.6.8/src/server/wsgi_thread.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_thread.c 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_thread.c 2019-10-06 00:58:30.000000000
+0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2015 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_thread.h
new/mod_wsgi-4.6.8/src/server/wsgi_thread.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_thread.h 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_thread.h 2019-10-06 00:58:30.000000000
+0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_validate.c
new/mod_wsgi-4.6.8/src/server/wsgi_validate.c
--- old/mod_wsgi-4.6.5/src/server/wsgi_validate.c 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_validate.c 2019-10-06
00:58:30.000000000 +0200
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_validate.h
new/mod_wsgi-4.6.8/src/server/wsgi_validate.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_validate.h 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_validate.h 2019-10-06
00:58:30.000000000 +0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/src/server/wsgi_version.h
new/mod_wsgi-4.6.8/src/server/wsgi_version.h
--- old/mod_wsgi-4.6.5/src/server/wsgi_version.h 2018-10-22
06:01:30.000000000 +0200
+++ new/mod_wsgi-4.6.8/src/server/wsgi_version.h 2019-10-06
00:58:30.000000000 +0200
@@ -4,7 +4,7 @@
/* ------------------------------------------------------------------------- */
/*
- * Copyright 2007-2018 GRAHAM DUMPLETON
+ * Copyright 2007-2019 GRAHAM DUMPLETON
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,8 +25,8 @@
#define MOD_WSGI_MAJORVERSION_NUMBER 4
#define MOD_WSGI_MINORVERSION_NUMBER 6
-#define MOD_WSGI_MICROVERSION_NUMBER 5
-#define MOD_WSGI_VERSION_STRING "4.6.5"
+#define MOD_WSGI_MICROVERSION_NUMBER 8
+#define MOD_WSGI_VERSION_STRING "4.6.8"
/* ------------------------------------------------------------------------- */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mod_wsgi-4.6.5/tests/events.wsgi
new/mod_wsgi-4.6.8/tests/events.wsgi
--- old/mod_wsgi-4.6.5/tests/events.wsgi 2018-10-22 06:01:30.000000000
+0200
+++ new/mod_wsgi-4.6.8/tests/events.wsgi 2019-10-06 00:58:30.000000000
+0200
@@ -20,23 +20,14 @@
def event_handler(name, **kwargs):
print('EVENT', name, kwargs, os.getpid(), mod_wsgi.application_group)
if name == 'request_started':
- request = mod_wsgi.request_data()
- print('REQUEST', request)
- environ = kwargs['request_environ']
- start_time = time.time()
- request['start_time'] = start_time
thread = threading.current_thread()
- request['thread_name'] = thread.name
- request['thread_id'] = thread.ident
+ request_data = kwargs['request_data']
+ request_data['thread_name'] = thread.name
+ request_data['thread_id'] = thread.ident
return dict(application_object=wrapper(kwargs['application_object']))
elif name == 'response_started':
- request = mod_wsgi.request_data()
- print('CONTENT', request)
- print('ACTIVE', mod_wsgi.active_requests)
+ print('REQUESTS', mod_wsgi.active_requests)
elif name == 'request_finished':
- request = mod_wsgi.request_data()
- print('REQUEST', request)
- print('FINISH', time.time()-request['start_time'])
print('PROCESS', mod_wsgi.process_metrics())
elif name == 'request_exception':
exception_info = kwargs['exception_info']