pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/www/ap2-wsgi



Module Name:    pkgsrc
Committed By:   obache
Date:           Mon Aug 19 10:09:51 UTC 2013

Modified Files:
        pkgsrc/www/ap2-wsgi: Makefile distinfo

Log Message:
Update ap2-wsgi to 3.4.

Changes In Version 3.4

Bugs Fixed

1. If using write() function returned by start_response() and a non string value
   is passed to it, then process can crash due to errors in Python object
   reference counting in error path of code.

2. If using write() function returned by start_response() under Python 3.X and a
   Unicode string is passed to it rather than a byte string, then a memory leak
   will occur because of errors in Python object reference counting.

3. Debug level log message about mismatch in content length generated was
   generated when content returned less than that specified by Content-Length
   response header even when exception occurring during response generation
   from an iterator. In the case of an exception occuring, was only meant to
   generate the log message if more content returned than defined by the
   Content-Length response header.

4. Using writelines() on wsgi.errors was failing.

5. If a UNIX signal received by daemon mode process while still being
   initialised to signal that it should be shutdown, the process could crash
   rather than shutdown properly due to not registering the signal pipe prior to
   registering signal handler.

6. Python doesn't initialise codecs in sub interpreters automatically which in
   some cases could cause code running in WSGI script to fail due to lack of
   encoding for Unicode strings when converting them. The error message in this
   case was:

     LookupError: no codec search functions registered: can't find encoding

   The 'ascii' encoding is now forcibly loaded when initialising sub
   interpreters to get Python to initialise codecs.

7. Response Content-Type header could be corrupted when being sent in
   multithreaded configuration and embedded mode being used. Problem thus
   affected Windows and worker MPM on UNIX.

Features Changed

1. The HTTPS variable is no longer set within the WSGI environment. The
   authoritative indicator of whether a SSL connection is used is
   wsgi.url_scheme and a WSGI compliant application should check for
   wsgi.url_scheme. The only reason that HTTPS was supplied at all was because
   early Django versions supporting WSGI interface weren't correctly using
   wsgi.url_scheme. Instead they were expecting to see HTTPS to exist.

   This change will cause non conformant WSGI applications to finally break.
   This possibly includes some Django versions prior to Django version 1.0.

   Note that you can still set HTTPS in Apache configuration using the SetEnv or
   SetEnvIf directive, or via a rewrite rule. In that case, that will override
   what wsgi.url_scheme is set to and once wsgi.url_scheme is set appropriately,
   the HTTPS variable will be removed from the set of variables passed through
   to the WSGI environment.

2. The wsgi.version variable has been reverted to 1.0 to conform to the WSGI PEP
   3333 specification. It was originally set to 1.1 on expectation that revised
   specification would use 1.1 but that didn't come to be.

3. Use of kernel sendfile() function by wsgi.file_wrapper is now off by default.
   This was originally always on for embedded mode and completely disabled for
   daemon mode. Use of this feature can be enabled for either mode using
   WSGIEnableSendfile directive, setting it to On to enable it.

   The default is now off because kernel sendfile() is not always able to work
   on all file objects. Some instances where it will not work are described for
   the Apache EnableSendfile directive.

     http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile

   Although Apache has use of sendfile() enabled by default for static files,
   they are moving to having it off by default in future version of Apache. This
   change is being made because of the problems which arise and users not
   knowing how to debug it and solve it.

   Thus also erring on side of caution and having it off by default but allowing
   more knowledgeable users to enable it where they know always using file
   objects which will work with sendfile().

New Features

1. Support use of Python 3.2.

2. Support use of Apache 2.4.

3. Is now guaranteed that mod_ssl access handler is run before that for
   mod_wsgi so that any per request variables setup by mod_ssl are available in
   the mod_wsgi access handler as implemented by WSGIAccessScript directive.

4. Added 'python-home' option to WSGIDaemonProcess allowing a Python virtual
   environment to be used directly in conjunction with daemon process. Note that
   this option does not do anything if setting WSGILazyInitialization to 'Off'.

5. Added 'lang' and 'locale' options to WSGIDaemonProcess to perform same tasks
   as setting 'LANG' and 'LC_ALL environment' variables. Note that if needing to
   do the same for embedded mode you still need to set the environment variables
   in the Apache envvars file or init.d startup scripts.

6. Split combined WWW-Authenticate header returned from daemon process back into
   separate headers. This is work around for some browsers which require
   separate headers when multiple authentication providers exist.

7. For Python 2.6 and above, the WSGIDontWriteBytecode directive can be used at
   global scope in Apache configuration to disable writing of all byte code
   files, ie., .pyc, by the Python interpreter when it imports Python code
   files. To disable writing of byte code files, set directive to 'On'.

   Note that this doesn't prevent existing byte code files on disk being used
   in preference to the corresponding Python code files. Thus you should first
   remove .pyc files from web application directories if relying on this option
   to ensure that .py file is always used.

8. Add supplementary-groups option to WSGIDaemonProcess to allow group
   membership to be overridden and specified comma separated list of groups to
   be used instead.

9. Add 'memory-limit' option to WSGIDaemonProcess to allow memory usage of
   daemon processes to be restricted. This will have no affect on some platforms
   as RLIMIT_AS/RLIMIT_DATA with setrlimit() isn't always implemented. For
   example MacOS X and older Linux kernel versions do not implement this
   feature. You will need to test whether this feature works or not before
   depending on it.

10. Add 'virtual-memory-limit' option to WSGIDaemonProcess to allow virtual
   memory usage of daemon processes to be restricted. This will have no affect
   on some platforms as RLIMIT_VMEM with setrlimit() isn't always implemented.
   You will need to test whether this feature works or not before depending on
   it.

11. Access, authentication and authorisation hooks now have additional keys in
   the environ dictionary for 'mod_ssl.is_https' and 'mod_ssl.var_lookup'. These
   equate to callable functions provided by mod_ssl for determining if the
   client connection to Apache used SSL and what the values of variables
   specified in the SSL certifcates, server or client, are. These are only
   available if Apache 2.0 or later is being used.

12. Add 'mod_wsgi.queue_start' attribute to WSGI environ so tools like New Relic
   can use it to track request queueing time. This is the time between when
   request accepted by Apache and when handled by WSGI application.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 pkgsrc/www/ap2-wsgi/Makefile
cvs rdiff -u -r1.9 -r1.10 pkgsrc/www/ap2-wsgi/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index