aboutsummaryrefslogtreecommitdiff
path: root/www/mod_wsgi3/files/patch-mod_wsgi.c
diff options
context:
space:
mode:
Diffstat (limited to 'www/mod_wsgi3/files/patch-mod_wsgi.c')
-rw-r--r--www/mod_wsgi3/files/patch-mod_wsgi.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/www/mod_wsgi3/files/patch-mod_wsgi.c b/www/mod_wsgi3/files/patch-mod_wsgi.c
new file mode 100644
index 000000000000..d9c9992bbe99
--- /dev/null
+++ b/www/mod_wsgi3/files/patch-mod_wsgi.c
@@ -0,0 +1,29 @@
+--- ./mod_wsgi.c.orig 2010-03-09 01:48:50.000000000 -0800
++++ ./mod_wsgi.c 2010-07-15 12:31:01.189153878 -0700
+@@ -5648,6 +5648,26 @@
+ module = PyImport_ImportModule("atexit");
+ Py_XDECREF(module);
+
++ /*
++ * In Python 2.6.5 and Python 3.1.2 the shutdown of
++ * threading was moved back into Py_Finalize() for the main
++ * Python interpreter. Because we shutting down threading
++ * ourselves, the second call results in errors being logged
++ * when Py_Finalize() is called and the shutdown function
++ * called a second time. The errors don't indicate any real
++ * problem and the threading module ignores them anyway.
++ * Whether we are using Python with this changed behaviour
++ * can only be checked by looking at run time version.
++ * Rather than try and add a dynamic check, create a fake
++ * 'dummy_threading' module as the presence of that shuts up
++ * the messages. It doesn't matter that the rest of the
++ * shutdown function still runs as everything is already
++ * stopped so doesn't do anything.
++ */
++
++ if (!PyImport_AddModule("dummy_threading"))
++ PyErr_Clear();
++
+ Py_Finalize();
+
+ wsgi_python_initialized = 0;