Version 4.4.1

Version 4.4.1 of mod_wsgi can be obtained from:

Known Issues

1. The makefiles for building mod_wsgi on Windows are currently broken and need updating. As most new changes relate to mod_wsgi daemon mode, which is not supported under Windows, you should keep using the last available binary for version 3.X on Windows instead.

Bugs Fixed

1. Process crashes could occur when request content had been consumed by the WSGI application. The trigger was when the Python wsgi.input was still in existence after the web request had finished. The destruction of the wsgi.input object was accessing memory which had already been released back to the Apache memory pools and potentially reused. This could cause crashes or other unexplained behaviour. This issue was introduced in version 4.4.0 of mod_wsgi.

Features Changed

1. When an error occurs in writing back a response to the HTTP client, during the consumption of the iterable returned by the WSGI application, the message will now be logged at debug level rather than error level. Note that under Apache 2.2 it isn’t possible to suppress the message generated by Apache itself from the core_output_filter, so that may still appear.

2. The --profiler-output-file option for mod_wsgi-express was changed to --profiler-directory and now refers to a directory, with individual pstats files being added to the directory for each session rather than reusing the same name all the time.

New Features

1. Added the --server-mpm option to mod_wsgi-express. With this option, if you are using Apache 2.4 with dynamically loadable MPM modules and more than one option for the MPM is available, you can specify your preference for which is used. If not specified, then the precedence order for MPMs is ‘event’, ‘worker’ and finally ‘prefork’.

2. Added static as an option for --application-type when running mod_wsgi-express. When set as static, only static files will be served. One can still set specific handler types for different extensions which may invoke a Python handler script, but there will be no global fallback WSGI application for any URLs that do not map to static files. In these cases a normal HTTP 404 response will be returned instead.

3. Added --host-access-script option to mod_wsgi-express to allow a Python script to be provided which can control host access. This uses the WSGIAccessScript directive and the handler script should define an allow_access(environ, host) function which returns True if access is allowed or False if blocked.

4. Added --debugger-startup option to be used in conjunction with the --enable-debugger option of mod_wsgi-express when in debug mode. The option will cause the debugger to be activated on server start before any requests are handled to allow breakpoints to be set.

5. Added a socket-user option to WSGIDaemonProcess to allow the owner of the UNIX listener socket for the daemon process group to be overridden. This can be used when using mod_ruid2 to change the owner of the socket from the default Apache user, to the user under which mod_ruid2 will run Apache when handling requests. This is necessary otherwise the Apache child worker process will not be able to connect to the listener socket for the mod_wsgi daemon process to proxy the request to the WSGI application.

6. Added a --enable-recorder option for enabling request recording when also using debug mode.