mod-wsgi 6.0.5.dev1__tar.gz → 6.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mod-wsgi might be problematic. Click here for more details.

Files changed (95) hide show
  1. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/PKG-INFO +2 -1
  2. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/README-standalone.rst +11 -0
  3. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/README.rst +6 -1
  4. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/mod_wsgi.egg-info/PKG-INFO +2 -1
  5. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/setup.py +2 -1
  6. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_adapter.c +6 -3
  7. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_adapter.h +1 -0
  8. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_apache.c +3 -0
  9. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_apache.h +2 -0
  10. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_auth.c +3 -0
  11. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_auth.h +1 -0
  12. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_buckets.c +4 -1
  13. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_config.c +3 -0
  14. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_config.h +1 -0
  15. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_convert.c +3 -0
  16. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_convert.h +1 -0
  17. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_daemon.c +8 -4
  18. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_daemon.h +1 -0
  19. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_dispatch.c +3 -0
  20. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_dispatch.h +1 -0
  21. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_environ.c +4 -1
  22. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_environ.h +1 -0
  23. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_execute.c +6 -3
  24. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_gc.c +3 -0
  25. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_input.c +3 -0
  26. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_interp.c +8 -7
  27. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_logger.c +4 -1
  28. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_memory.c +3 -0
  29. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_metrics.c +3 -1
  30. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_module.c +3 -2
  31. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_remote.c +3 -0
  32. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_remote.h +2 -0
  33. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_restrict.c +3 -0
  34. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_restrict.h +1 -0
  35. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_server.c +3 -0
  36. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_shutdown.c +3 -1
  37. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_shutdown.h +1 -0
  38. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_signal.c +3 -1
  39. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_signal.h +1 -0
  40. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_stream.c +3 -0
  41. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_telemetry.c +3 -1
  42. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_thread.c +3 -0
  43. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_validate.c +3 -0
  44. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_validate.h +1 -0
  45. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_version.h +3 -3
  46. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/CREDITS.rst +0 -0
  47. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/LICENSE +0 -0
  48. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/MANIFEST.in +0 -0
  49. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/Makefile.in +0 -0
  50. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/README-express.rst +0 -0
  51. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/configure +0 -0
  52. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/configure.ac +0 -0
  53. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/images/__init__.py +0 -0
  54. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/images/snake-whiskey.jpg +0 -0
  55. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/mod_wsgi.egg-info/SOURCES.txt +0 -0
  56. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/mod_wsgi.egg-info/dependency_links.txt +0 -0
  57. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/mod_wsgi.egg-info/entry_points.txt +0 -0
  58. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/mod_wsgi.egg-info/not-zip-safe +0 -0
  59. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/mod_wsgi.egg-info/top_level.txt +0 -0
  60. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/setup.cfg +0 -0
  61. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/__init__.py +0 -0
  62. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/diagnostics/__init__.py +0 -0
  63. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/diagnostics/environ.py +0 -0
  64. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/diagnostics/hello.py +0 -0
  65. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/__init__.py +0 -0
  66. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/apache.py +0 -0
  67. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/cli.py +0 -0
  68. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/management/__init__.py +0 -0
  69. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/management/commands/__init__.py +0 -0
  70. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/management/commands/runmodwsgi.py +0 -0
  71. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/options.py +0 -0
  72. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/platform.py +0 -0
  73. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/reloader.py +0 -0
  74. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/runtime.py +0 -0
  75. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/scripts.py +0 -0
  76. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/express/server.py +0 -0
  77. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/__init__.py +0 -0
  78. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/management/__init__.py +0 -0
  79. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/management/commands/__init__.py +0 -0
  80. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/management/commands/runmodwsgi.py +0 -0
  81. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/mod_wsgi.c +1 -1
  82. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_buckets.h +0 -0
  83. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_execute.h +0 -0
  84. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_gc.h +0 -0
  85. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_input.h +0 -0
  86. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_interp.h +0 -0
  87. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_logger.h +0 -0
  88. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_memory.h +0 -0
  89. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_metrics.h +0 -0
  90. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_module.h +0 -0
  91. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_python.h +0 -0
  92. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_server.h +0 -0
  93. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_stream.h +0 -0
  94. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_telemetry.h +0 -0
  95. {mod_wsgi-6.0.5.dev1 → mod_wsgi-6.1.0}/src/server/wsgi_thread.h +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mod_wsgi
3
- Version: 6.0.5.dev1
3
+ Version: 6.1.0
4
4
  Summary: Installer for Apache/mod_wsgi.
5
5
  Home-page: https://www.modwsgi.org/
6
6
  Author: Graham Dumpleton
@@ -25,6 +25,7 @@ Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Programming Language :: Python :: 3.13
27
27
  Classifier: Programming Language :: Python :: 3.14
28
+ Classifier: Programming Language :: Python :: 3.15
28
29
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
29
30
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
30
31
  Requires-Python: >=3.10
@@ -31,6 +31,17 @@ usage instructions outlined on the mod_wsgi documentation site at
31
31
  https://www.modwsgi.org, substituting ``mod_wsgi-standalone`` for
32
32
  ``mod_wsgi`` as the package to install.
33
33
 
34
+ The documentation has a page specifically about this package, `The
35
+ mod_wsgi-standalone Package
36
+ <https://www.modwsgi.org/en/latest/user-guides/mod-wsgi-standalone-package.html>`_.
37
+ It covers what the host needs in order to compile everything, how
38
+ support for HTTPS depends on the OpenSSL development files being
39
+ present when Apache is compiled, how the version of Apache you get is
40
+ tied to the version of ``mod_wsgi-standalone`` you install, how
41
+ security fixes for Apache reach you, and why ``mod_wsgi-httpd`` and
42
+ ``mod_wsgi`` should not be listed as two separate dependencies in place
43
+ of ``mod_wsgi-standalone``.
44
+
34
45
  **NOTE: Although this package may allow you to install a standalone Apache
35
46
  version, it is only really recommended that you use this package if you
36
47
  have absolutely no other choice for getting the Apache httpd server
@@ -40,7 +40,12 @@ Python Package Index:
40
40
 
41
41
  * `mod_wsgi-standalone`_ on PyPI additionally installs a private
42
42
  build of Apache into your Python environment, for use on
43
- UNIX-like systems where no system Apache is available.
43
+ UNIX-like systems where no system Apache is available. It is the
44
+ same source code and version as ``mod_wsgi``, with an added
45
+ dependency on the separate ``mod_wsgi-httpd`` package, which
46
+ supplies that Apache. See `The mod_wsgi-standalone Package
47
+ <https://www.modwsgi.org/en/latest/user-guides/mod-wsgi-standalone-package.html>`_
48
+ in the documentation.
44
49
 
45
50
  * `mod_wsgi-telemetry`_ on PyPI is the out-of-process telemetry
46
51
  ingester and live UI that consume datagrams emitted when the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mod_wsgi
3
- Version: 6.0.5.dev1
3
+ Version: 6.1.0
4
4
  Summary: Installer for Apache/mod_wsgi.
5
5
  Home-page: https://www.modwsgi.org/
6
6
  Author: Graham Dumpleton
@@ -25,6 +25,7 @@ Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Programming Language :: Python :: 3.13
27
27
  Classifier: Programming Language :: Python :: 3.14
28
+ Classifier: Programming Language :: Python :: 3.15
28
29
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
29
30
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
30
31
  Requires-Python: >=3.10
@@ -441,6 +441,7 @@ setup(name = package_name,
441
441
  'Programming Language :: Python :: 3.12',
442
442
  'Programming Language :: Python :: 3.13',
443
443
  'Programming Language :: Python :: 3.14',
444
+ 'Programming Language :: Python :: 3.15',
444
445
  'Topic :: Internet :: WWW/HTTP :: WSGI',
445
446
  'Topic :: Internet :: WWW/HTTP :: WSGI :: Server'
446
447
  ],
@@ -456,6 +457,6 @@ setup(name = package_name,
456
457
  entry_points = { 'console_scripts':
457
458
  ['mod_wsgi-express = mod_wsgi.express.cli:main'],},
458
459
  zip_safe = False,
459
- install_requires = standalone and ['mod_wsgi-httpd==2.4.68.1'] or [],
460
+ install_requires = standalone and ['mod_wsgi-httpd==2.4.68.2'] or [],
460
461
  python_requires='>=3.10',
461
462
  )
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_adapter.h"
22
25
 
23
26
  #include "wsgi_buckets.h"
@@ -266,7 +269,7 @@ static PyObject *Adapter_start_response(AdapterObject *self, PyObject *args)
266
269
 
267
270
  /* Transfer ownership of headers_as_bytes to self->headers and
268
271
  * disclaim the local so the finally XDECREF below is a no-op
269
- * for this object — avoids the +1/-1 refcount round-trip the
272
+ * for this object, which avoids the +1/-1 refcount round-trip the
270
273
  * older INCREF-then-XDECREF pattern incurred. */
271
274
 
272
275
  Py_XDECREF(self->headers);
@@ -297,7 +300,7 @@ static int Adapter_output(AdapterObject *self, const char *data,
297
300
  * around ap_pass_brigade and apr_brigade_cleanup. They are
298
301
  * captured *inside* each WSGI_BEGIN_ALLOW_THREADS block, so the
299
302
  * accumulated self->output_time measures only the time the WSGI
300
- * app spent waiting for Apache to take its data — header
303
+ * app spent waiting for Apache to take its data: header
301
304
  * processing, bucket construction and the GIL re-acquire wait
302
305
  * (which WSGI_END_ALLOW_THREADS attributes to gil_wait_time)
303
306
  * are deliberately excluded. Same pattern as Input_read_from_input
@@ -1667,7 +1670,7 @@ int Adapter_run(AdapterObject *self, PyObject *object)
1667
1670
  /* PyObject_HasAttrString swallows all exceptions raised by
1668
1671
  * the lookup, so a custom __getattribute__ that raises would
1669
1672
  * be silently treated as "no close method". Use
1670
- * GetAttrString and only treat AttributeError as benign — any
1673
+ * GetAttrString and only treat AttributeError as benign. Any
1671
1674
  * other exception gets a context preamble logged here, then
1672
1675
  * is left set so the PyErr_Occurred() block below prints the
1673
1676
  * traceback after our preamble. */
@@ -23,6 +23,7 @@
23
23
 
24
24
  #include "wsgi_python.h"
25
25
  #include "wsgi_apache.h"
26
+
26
27
  #include "wsgi_server.h"
27
28
 
28
29
  #include "wsgi_input.h"
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_apache.h"
22
25
 
23
26
  #include "wsgi_daemon.h"
@@ -33,6 +33,8 @@
33
33
 
34
34
  /* ------------------------------------------------------------------------- */
35
35
 
36
+ #include "wsgi_python.h"
37
+
36
38
  #define CORE_PRIVATE 1
37
39
 
38
40
  #if defined(_WIN32)
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_auth.h"
22
25
 
23
26
  #include "wsgi_daemon.h"
@@ -23,6 +23,7 @@
23
23
 
24
24
  #include "wsgi_python.h"
25
25
  #include "wsgi_apache.h"
26
+
26
27
  #include "wsgi_server.h"
27
28
 
28
29
  #include "mod_auth.h"
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_buckets.h"
22
25
 
23
26
  #include "wsgi_interp.h"
@@ -131,7 +134,7 @@ apr_bucket *wsgi_apr_bucket_python_create(const char *buf, apr_size_t length,
131
134
  * for the matching decref.
132
135
  *
133
136
  * The two branches have asymmetric GIL-handling invariants that are
134
- * load-bearing — do not collapse them.
137
+ * load-bearing, so do not collapse them.
135
138
  *
136
139
  * else-branch (first setaside, decref_string == 0): the caller is the
137
140
  * WSGI write path, which already holds the GIL on
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_config.h"
22
25
 
23
26
  #include "wsgi_daemon.h"
@@ -23,6 +23,7 @@
23
23
 
24
24
  #include "wsgi_python.h"
25
25
  #include "wsgi_apache.h"
26
+
26
27
  #include "wsgi_server.h"
27
28
 
28
29
  /* ------------------------------------------------------------------------- */
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_convert.h"
22
25
 
23
26
  #include "wsgi_validate.h"
@@ -22,6 +22,7 @@
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
24
  #include "wsgi_python.h"
25
+ #include "wsgi_apache.h"
25
26
 
26
27
  /* ------------------------------------------------------------------------- */
27
28
 
@@ -18,7 +18,11 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_daemon.h"
25
+
22
26
  #include "wsgi_server.h"
23
27
  #include "wsgi_interp.h"
24
28
  #include "wsgi_config.h"
@@ -2098,7 +2102,7 @@ static void *wsgi_daemon_thread(apr_thread_t *thd, void *data)
2098
2102
  /*
2099
2103
  * Record the Python thread id of this worker so the monitor thread
2100
2104
  * can target it with PyThreadState_SetAsyncExc() when injecting a
2101
- * RequestTimeout exception. Safe to call without the GIL — this is
2105
+ * RequestTimeout exception. Safe to call without the GIL, as this is
2102
2106
  * just a wrapper around the OS thread API.
2103
2107
  */
2104
2108
 
@@ -2389,7 +2393,7 @@ static void wsgi_inject_request_timeout(WSGIDaemonThread *thread)
2389
2393
  * in-flight request whose elapsed time has not yet exceeded the
2390
2394
  * "stale" cutoff (request-timeout + interrupt-timeout). A thread that
2391
2395
  * has been wedged for longer than that is treated as already-gone for
2392
- * drain purposes — it will not unwind voluntarily, so waiting for it
2396
+ * drain purposes: it will not unwind voluntarily, so waiting for it
2393
2397
  * before progressing to shutdown-timeout serves no purpose. Caller
2394
2398
  * MUST hold the monitor lock; thread->request mutations are guarded
2395
2399
  * by that same lock.
@@ -2509,7 +2513,7 @@ static void *wsgi_monitor_thread(apr_thread_t *thd, void *data)
2509
2513
  *
2510
2514
  * interrupt-timeout > 0
2511
2515
  * Inject mod_wsgi.RequestTimeout into the offending
2512
- * thread (one inject per pass — multiple eligible
2516
+ * thread (one inject per pass; multiple eligible
2513
2517
  * threads get picked up across consecutive passes, each
2514
2518
  * with its own injected_at grace timer). If a thread
2515
2519
  * has already been injected and its interrupt-timeout
@@ -3061,7 +3065,7 @@ static void wsgi_daemon_main(apr_pool_t *p, WSGIDaemonProcess *daemon)
3061
3065
  * thread count by natural log: T_fire = request-timeout * (1 + ln(n)).
3062
3066
  * At n=1 this collapses to request-timeout. At higher thread counts
3063
3067
  * it grants more patience to absorb genuine outliers without
3064
- * letting the threshold run away — n=10 gives ~3.3x base, n=25
3068
+ * letting the threshold run away: n=10 gives ~3.3x base, n=25
3065
3069
  * gives ~4.2x. Computed once here because it depends only on
3066
3070
  * init-time values.
3067
3071
  */
@@ -23,6 +23,7 @@
23
23
 
24
24
  #include "wsgi_python.h"
25
25
  #include "wsgi_apache.h"
26
+
26
27
  #include "wsgi_thread.h"
27
28
 
28
29
  /* ------------------------------------------------------------------------- */
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_dispatch.h"
22
25
 
23
26
  #include "wsgi_daemon.h"
@@ -23,6 +23,7 @@
23
23
 
24
24
  #include "wsgi_python.h"
25
25
  #include "wsgi_apache.h"
26
+
26
27
  #include "wsgi_server.h"
27
28
 
28
29
  /* ------------------------------------------------------------------------- */
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_environ.h"
22
25
 
23
26
  #include "wsgi_logger.h"
@@ -845,7 +848,7 @@ static void wsgi_add_vars_to_environment(request_rec *r)
845
848
  * CGI request-line variables, transcribed from ap_add_cgi_vars().
846
849
  * Use setn so these win over any pre-existing entries inherited
847
850
  * via the temp table. The PATH_TRANSLATED block is deliberately
848
- * omitted — that is the subrequest we are avoiding. GATEWAY_INTERFACE
851
+ * omitted: that is the subrequest we are avoiding. GATEWAY_INTERFACE
849
852
  * is also omitted: it is not required by PEP 3333 and the "CGI/1.1"
850
853
  * value upstream sets is misleading for a WSGI environment.
851
854
  */
@@ -21,6 +21,7 @@
21
21
 
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
+ #include "wsgi_python.h"
24
25
  #include "wsgi_apache.h"
25
26
 
26
27
  /* ------------------------------------------------------------------------- */
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_execute.h"
22
25
 
23
26
  #include "wsgi_server.h"
@@ -44,8 +47,8 @@ int wsgi_execute_script(request_rec *r)
44
47
  WSGIThreadInfo *thread_info = NULL;
45
48
 
46
49
  /* Clear any leftover staged GIL-wait value from a prior request
47
- * handled on this worker thread. The next instrumented site —
48
- * starting with the initial interp acquire below — will accumulate
50
+ * handled on this worker thread. The next instrumented site,
51
+ * starting with the initial interp acquire below, will accumulate
49
52
  * into the staging slot, drained into the per-request active slot
50
53
  * at wsgi_start_request. */
51
54
  wsgi_gil_wait_reset();
@@ -82,7 +85,7 @@ int wsgi_execute_script(request_rec *r)
82
85
  * The interpreter handle's name is duplicated into the
83
86
  * wsgi_interpreters pool (process-lifetime), so the pointer
84
87
  * stored here remains valid for any reader for the rest of the
85
- * Apache child's life — no dependency on the request pool.
88
+ * Apache child's life, with no dependency on the request pool.
86
89
  */
87
90
 
88
91
  wsgi_thread_info(1, 0)->current_application_group = interp->name;
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_gc.h"
22
25
 
23
26
  #include "wsgi_module.h"
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_input.h"
22
25
 
23
26
  #include "wsgi_daemon.h"
@@ -18,11 +18,12 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_interp.h"
22
25
 
23
26
  #include "wsgi_version.h"
24
-
25
- #include "wsgi_apache.h"
26
27
  #include "wsgi_server.h"
27
28
  #include "wsgi_config.h"
28
29
  #include "wsgi_logger.h"
@@ -2413,7 +2414,7 @@ apr_status_t wsgi_python_init(apr_pool_t *p)
2413
2414
  * In daemon mode wsgi_python_init also runs inside the daemon
2414
2415
  * child after fork, but daemon processes pick up their value
2415
2416
  * from daemon->group->switch_interval after wsgi_python_child_init
2416
- * (see wsgi_daemon.c) — applying the server-config value here
2417
+ * (see wsgi_daemon.c). Applying the server-config value here
2417
2418
  * would shadow that and emit a redundant INFO log line. */
2418
2419
  #if defined(MOD_WSGI_WITH_DAEMONS)
2419
2420
  if (wsgi_daemon_process == NULL &&
@@ -2626,7 +2627,7 @@ InterpreterObject *wsgi_acquire_interpreter(const char *name)
2626
2627
  * The catch is that the simplified API is designed for
2627
2628
  * scoped use: the matching pair Ensure/Release tears the
2628
2629
  * thread state down again at the end of the outer
2629
- * Release. We do not want that — we want the thread
2630
+ * Release. We do not want that. We want the thread
2630
2631
  * state, and therefore any thread local data Python or
2631
2632
  * extensions have attached to it (threading.local,
2632
2633
  * contextvars defaults, extension-side TLS via
@@ -2647,14 +2648,14 @@ InterpreterObject *wsgi_acquire_interpreter(const char *name)
2647
2648
  * Release in wsgi_release_interpreter brings it back
2648
2649
  * down to 1, which is non-zero, so Release just drops
2649
2650
  * the GIL via PyEval_SaveThread() and leaves the thread
2650
- * state — and its TSS registration — in place for the
2651
+ * state (and its TSS registration) in place for the
2651
2652
  * next request on this thread. We only do the bump on
2652
2653
  * the first Ensure (counter == 1); any nested Ensure
2653
2654
  * from inside the request leaves the counter alone so
2654
2655
  * pairing inside the request still balances normally.
2655
2656
  *
2656
2657
  * gilstate_counter is exposed via Include/cpython/
2657
- * pystate.h, which is the unstable CPython tier — the
2658
+ * pystate.h, which is the unstable CPython tier: the
2658
2659
  * field is not part of the stable ABI and could in
2659
2660
  * principle be renamed or removed in a future release.
2660
2661
  * There is no public API equivalent for "extend the
@@ -3274,7 +3275,7 @@ static apr_status_t wsgi_python_child_cleanup(void *data)
3274
3275
  * is shutting down here. For daemon we did it earlier
3275
3276
  * before trying to wait on request threads. The telemetry
3276
3277
  * lifecycle datagrams (STOPPING and the final-tick + STOPPED
3277
- * sequence) follow the same split — daemon mode emits them in
3278
+ * sequence) follow the same split: daemon mode emits them in
3278
3279
  * wsgi_daemon_main; embedded mode emits both here back-to-back
3279
3280
  * since Apache has already drained worker requests by the time
3280
3281
  * this cleanup hook runs.
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_logger.h"
22
25
 
23
26
  #include "wsgi_server.h"
@@ -1197,7 +1200,7 @@ void wsgi_log_python_error_ex(const char *file, int line, int module_index,
1197
1200
  * Server-scope callers run during single-threaded init, so the
1198
1201
  * sub-pool create on the process pool is not racing other
1199
1202
  * threads. If the sub-pool can't be created (OOM), fall back
1200
- * to the parent pool — the leak is preferable to crashing
1203
+ * to the parent pool: the leak is preferable to crashing
1201
1204
  * while logging an exception. The sub-pool is destroyed once
1202
1205
  * the header has been emitted.
1203
1206
  */
@@ -5,6 +5,9 @@
5
5
  * http://creativecommons.org/licenses/by/3.0/deed.en_US
6
6
  */
7
7
 
8
+ #include "wsgi_python.h"
9
+ #include "wsgi_apache.h"
10
+
8
11
  #if defined(_WIN32)
9
12
  #include <winsock2.h>
10
13
  #include <windows.h>
@@ -18,9 +18,11 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_metrics.h"
22
25
 
23
- #include "wsgi_apache.h"
24
26
  #include "wsgi_daemon.h"
25
27
  #include "wsgi_server.h"
26
28
  #include "wsgi_memory.h"
@@ -18,11 +18,12 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_module.h"
22
25
 
23
26
  #include "wsgi_version.h"
24
-
25
- #include "wsgi_apache.h"
26
27
  #include "wsgi_server.h"
27
28
  #include "wsgi_logger.h"
28
29
  #include "wsgi_stream.h"
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_remote.h"
22
25
 
23
26
  #include "wsgi_logger.h"
@@ -21,7 +21,9 @@
21
21
 
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
+ #include "wsgi_python.h"
24
25
  #include "wsgi_apache.h"
26
+
25
27
  #include "wsgi_daemon.h"
26
28
 
27
29
  /* ------------------------------------------------------------------------- */
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_restrict.h"
22
25
 
23
26
  #include "wsgi_module.h"
@@ -22,6 +22,7 @@
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
24
  #include "wsgi_python.h"
25
+ #include "wsgi_apache.h"
25
26
 
26
27
  /* ------------------------------------------------------------------------- */
27
28
 
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_server.h"
22
25
 
23
26
  #include "wsgi_daemon.h"
@@ -18,9 +18,11 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_shutdown.h"
22
25
 
23
- #include "wsgi_apache.h"
24
26
  #include "wsgi_server.h"
25
27
  #include "wsgi_logger.h"
26
28
  #include "wsgi_module.h"
@@ -22,6 +22,7 @@
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
24
  #include "wsgi_python.h"
25
+ #include "wsgi_apache.h"
25
26
 
26
27
  /* ------------------------------------------------------------------------- */
27
28
 
@@ -18,9 +18,11 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_signal.h"
22
25
 
23
- #include "wsgi_apache.h"
24
26
  #include "wsgi_server.h"
25
27
  #include "wsgi_logger.h"
26
28
  #include "wsgi_daemon.h"
@@ -22,6 +22,7 @@
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
24
  #include "wsgi_python.h"
25
+ #include "wsgi_apache.h"
25
26
 
26
27
  /* ------------------------------------------------------------------------- */
27
28
 
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_stream.h"
22
25
 
23
26
  #include "wsgi_module.h"
@@ -36,11 +36,13 @@
36
36
 
37
37
  #include "wsgi_python.h"
38
38
  #include "wsgi_apache.h"
39
+
40
+ #include "wsgi_telemetry.h"
41
+
39
42
  #include "wsgi_server.h"
40
43
  #include "wsgi_daemon.h"
41
44
  #include "wsgi_logger.h"
42
45
  #include "wsgi_metrics.h"
43
- #include "wsgi_telemetry.h"
44
46
  #include "wsgi_version.h"
45
47
  #include "wsgi_module.h"
46
48
  #include "wsgi_interp.h"
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_thread.h"
22
25
 
23
26
  #include "wsgi_server.h"
@@ -18,6 +18,9 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
+ #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
+
21
24
  #include "wsgi_validate.h"
22
25
 
23
26
  #include "wsgi_convert.h"
@@ -22,6 +22,7 @@
22
22
  /* ------------------------------------------------------------------------- */
23
23
 
24
24
  #include "wsgi_python.h"
25
+ #include "wsgi_apache.h"
25
26
 
26
27
  /* ------------------------------------------------------------------------- */
27
28
 
@@ -24,9 +24,9 @@
24
24
  /* Module version information. */
25
25
 
26
26
  #define MOD_WSGI_MAJORVERSION_NUMBER 6
27
- #define MOD_WSGI_MINORVERSION_NUMBER 0
28
- #define MOD_WSGI_MICROVERSION_NUMBER 5
29
- #define MOD_WSGI_VERSION_STRING "6.0.5.dev1"
27
+ #define MOD_WSGI_MINORVERSION_NUMBER 1
28
+ #define MOD_WSGI_MICROVERSION_NUMBER 0
29
+ #define MOD_WSGI_VERSION_STRING "6.1.0"
30
30
 
31
31
  /* ------------------------------------------------------------------------- */
32
32
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -18,8 +18,8 @@
18
18
 
19
19
  /* ------------------------------------------------------------------------- */
20
20
 
21
- #include "wsgi_apache.h"
22
21
  #include "wsgi_python.h"
22
+ #include "wsgi_apache.h"
23
23
 
24
24
  #ifdef HAVE_SYS_PRCTL_H
25
25
  #include <sys/prctl.h>