\chapter{Changes from Version (3.2.8)\label{app-changes}}

\indexii{Changes from}{version 3.2.8}

  New Features

  \begin{itemize}
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-78]{MODPYTHON-78})
      Added support for Apache 2.2.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-94]{MODPYTHON-94})
      New \code{req.is_https()} and \code{req.ssl_var_lookup()} methods.
      These communicate direct with the Apache mod_ssl module, allowing
      it to be determined if the connection is using SSL/TLS and what the
      values of internal ssl variables are.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-137]{MODPYTHON-137})
      New \code{req.server.get_options()} method. This returns the subset
      of Python options set at global scope within the Apache configuration.
      That is, outside of the context of any VirtualHost, Location, Directory
      or Files directives.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-131]{MODPYTHON-131})
      The directory used for mutex locks can now be specified at 
      at compile time using \code{./configure --with-mutex-dir value}
      or at run time with \code{PythonOption mod_python.mutex_directory value}.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-145]{MODPYTHON-145})
      The number of mutex locks can now be specified at run time with
      \code{PythonOption mod_python.mutex_locks value}.
  \end{itemize}

  Improvements

  \begin{itemize}
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-77]{MODPYTHON-77})
      Third party C modules that use the simplified API for the Global
      Interpreter Lock (GIL), as described in PEP 311, can now be used. The
      only requirement is that such modules can only be used in the context
      of the \samp{main_interpreter}.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-119]{MODPYTHON-119})
      DbmSession unit test no longer uses the default directory for the dbm file,
      so the test will not interfer with the user's current apache instance.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-158]{MODPYTHON-158})
      Added additional debugging and logging output for where mod_python
      cannot initialise itself properly due to Python or mod_python version
      mismatches or missing Python module code files.
  \end{itemize}

  Bug Fixes

  \begin{itemize}
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-122]{MODPYTHON-122})
      Fixed configure problem when using bash 3.1.x.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-173]{MODPYTHON-173})
      Fixed DbmSession to create db file with mode 0640.
    \item
      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-84]{MODPYTHON-84})
      Fixed request.sendfile() bug for symlinked files on Win32.
  \end{itemize}
   
\chapter{Changes from Version (3.2.7)\label{app-changes}}

\indexii{Changes from}{version 3.2.7}

  Security Fix 

  \begin{itemize}
    \item
    (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-135]{MODPYTHON-135})

    Fixed possible directory traversal attack in FileSession. The session
    id is now checked to ensure it only contains valid characters. This
    check is performed for all sessions derived from the BaseSession 
    class. 
  \end{itemize}
 
\chapter{Changes from Version (3.1.4)\label{app-changes}}

\indexii{Changes from}{version 3.1.4}
  
  New Features

  \begin{itemize}
    \item
      New \code{apache.register_cleanup()} method.
    \item
      New \code{apache.exists_config_define()} method.
    \item
      New file-based session manager class.
    \item
      Session cookie name can be specified.
    \item
      The maximum number of mutexes mod_python uses for session locking
      can now be specifed at compile time using 
      \code{configure --with-max-locks}.
    \item
      New a version attribute in mod_python module.
    \item
      New test handler \code{testhandler.py} has been added.
  \end{itemize}

  Improvements

  \begin{itemize}
    \item
      Autoreload of a module using \code{apache.import_module()} now works if
      modification time for the module is different from the file.
      Previously, the module was only reloaded if the the modification 
      time of the file was more recent. This allows for a more graceful
      reload if a file with an older modification time needs to be
      restored from backup.
    \item
      Fixed the publisher traversal security issue
    \item
      Objects hierarchy a la CherryPy can now be published.
    \item
      \code{mod_python.c} now logs reason for a 500 error
    \item
      Calls to \code{PyErr_Print} in \code{mod_python.c} are now followed by \code{fflush()}
    \item
      Using an empty value with PythonOption will unset a PythonOption key.
    \item
      \code{req.path_info} is now a read/write member.
    \item
      Improvements to FieldStorage allow uploading of large files. Uploaded
      files are now streamed to disk, not to memory.
    \item
      Path to flex is now discovered at configuration time or can be
      specifed using \code{configure --with-flex=/path/to/flex}.
    \item
      \code{sys.argv} is now initialized to \code{["mod_python"]} so that modules
      like numarray and pychart can work properly.
  \end{itemize}

  Bug Fixes

  \begin{itemize}
    \item
      Fixed memory leak which resulted from circular references starting 
      from the request object.
    \item
      Fixed memory leak resulting from multiple PythonOption directives. 
    \item
      Fixed Multiple/redundant interpreter creation problem.
    \item
      Cookie attributes  with attribute names prefixed with 
      \$ are now ignored. See Section \ref{pyapi-cookie} for more 
      information.
    \item
      Bug in setting up of config_dir from Handler directives fixed.
    \item
      mod_python.publisher will now support modules with the same name
      but in different directories
    \item
      Fixed continual reloading of modules problem
    \item
      Fixed big marshalled cookies error.
    \item
      Fixed mod_python.publisher extension handling
    \item
      mod_python.publisher default index file traversal
    \item
      mod_python.publisher loading wrong module and giving no
      warning/error
    \item
      \code{apply_fs_data()} now works with "new style" objects
    \item
      File descriptor fd closed after \code{ap_send_fd()} in \code{req_sendfile()}
    \item
      Bug in mem_cleanup in MemorySession fixed.
    \item
      Fixed bug in \code{_apache._global_lock()} which could cause a segfault 
      if the lock index parameter is greater number of mutexes created
      at mod_python startup.
    \item
      Fixed bug where \code{local_ip} and \code{local_host} in connection object 
      were returning \code{remote_ip} and \code{remote_host} instead
    \item
      Fixed install_dso Makefile rule so it only installs the dso, not the
      python files
    \item
      Potential deadlock in psp cache handling fixed
    \item
      Fixed bug where sessions are used outside <Directory> directive.
    \item 
      Fixed compile problem on IRIX. \code{ln -s} requires both TARGET and LINK_NAME
      on IRIX. ie. \code{ln -s TARGET LINK_NAME}
    \item
      Fixed \code{./configure} problem on SuSE Linux 9.2 (x86-64). Python libraries
      are in lib64/ for this platform.
    \item
      Fixed \code{req.sendfile()} problem where \code{sendfile(filename)} sends the incorrect
      number of bytes when filename is a symlink. 
    \item
      Fixed problem where util.FieldStorage was not correctly checking the mime
      types of POSTed entities
    \item
      Fixed \code{conn.local_addr} and \code{conn.remote_addr} for a better IPv6 support. 
    \item
      Fixed \code{psp_parser.l} to properly escape \code{backslash-n}, \code{backslash-t}
      and \code{backslash-r} character sequences. 
    \item
      Fixed segfault bug when accessing some request object members 
      (allowed_methods, allowed_xmethods, content_languages) and some server
      object members (names, wild_names).
    \item
      Fixed request.add_handler() segfault bug when adding a handler to an empty
      handler list.
    \item
      Fixed PythonAutoReload directive so that AutoReload can be turned off.
    \item
      Fixed connection object read() bug on FreeBSD.
    \item
      Fixed potential buffer corruption bug in connection object read().
\end{itemize}

\chapter{Changes from Previous Major Version (2.x)\label{app-changes}}

\indexii{Changes from}{version 2.x}

  \begin{itemize}

    \item
      Mod_python 3.0 no longer works with Apache 1.3, only Apache 2.x is
      supported.
    \item
      Mod_python no longer works with Python versions less than 2.2.1
    \item 
      Mod_python now supports Apache filters.
    \item 
      Mod_python now supports Apache connection handlers.
    \item 
      Request object supports internal_redirect().
    \item
      Connection object has read(), readline() and write().
    \item
      Server object has get_config().
    \item
      \index{Httpdapy} \index{httpdapi}
      Httpdapi handler has been deprecated.
    \item
      \index{ZPublisher}
      Zpublisher handler has been deprecated.
    \item
      Username is now in req.user instead of req.connection.user
  \end{itemize}
