<?xml version="1.0"?>
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="changelog.html">

  &project;

  <properties>
    <author email="mturk@apache.org">Mladen Turk</author>
    <author email="rjung@apache.org">Rainer Jung</author>
    <author email="hgomez@apache.org">Henri Gomez</author>
    <title>Changelog</title>
  </properties>

<body>

<section name="Preface">
  <p>
  This is the Changelog for Tomcat Connectors. This changelog
  does not contain all updates and fixes to the Tomcat connectors (yet).
  It should contain fixes made only after November 10th 2004, when the
  new documentation project for JK was started.
  </p>
</section>
<section name="Changes between 1.2.23 and 1.2.24">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
      Use initial zero timeout for jk_is_socket_connected. The resulting
      detection is the same but offers a huge performance increase
      with mod_jk. In most cases the Operating System does not favor
      the 1 microsecond timeout, but it rather rounds that up to much
      higher value (frequency of interrupt timer which on most systems
      defaults to 100Hz).
      Patch provided by David McLaughlin. (mturk)
      </fix>
      <fix>
      Always build with thread support, unless flag --enable-prefork
      is set during for configure. (rjung)
      </fix>
      <update>
      i5/OS (AS/400) V5R4 port where Apache 2.0 modules should now use UTF8. (hgomez)
      </update>
      <update>
      Docs: Add comments on i5/OS build for V5R4 and previous releases. (hgomez)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.22 and 1.2.23">
  <br />
  <subsection name="Native">
    <changelog>
      <update>
      Change the default value of JkOptions to ForwardURICompatUnparsed.
      The old default value was ForwardURICompat.
      This should make URL interpretation between Apache httpd and
      Tomcat consistent (prevent double decoding problems). (rjung)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.21 and 1.2.22">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
      Refactor line endings logging to make it correct for all
      platforms and webservers. (mturk)
      </fix>
      <update>
      Added command line windows make files. (mturk)
      </update>
      <update>
      Allow fail_on_status directive to be multi line. (mturk)
      </update>
      <fix>
        <bug>42076</bug>: Fix name of new option from ForwardCertChain to
        ForwardSSLCertChain as documented. (rjung)
      </fix>
      <fix>
      Docs: Fix a couple of typos, change format of a few tables,
      fix links to news pages. (rjung)
      </fix>
      <fix>
      Fix correct URL for TC 6 examples in new IIS rewrite.properties
      configuration example file. (rjung)
      </fix>
      <fix>
      Add svn properties to several files. (rjung)
      </fix>
      <update>
      Add TC 6 examples to uriworkermap.properties in config examples. (rjung)
      </update>
      <update>
      Allow multiple status codes for fail_on_status directive.
      The status codes can be delimited by space or comma characters. (mturk)
      </update>
      <update>
        IIS. Added pcre like regular expressions for url rewrite rules. (mturk)
      </update>
      <fix>
        <bug>41922</bug>: Apache 1.3. Enable JkEnvVar. (mturk)
      </fix>
      <update>
        Apache. Add --enable-flock configure parameter for explicit
        compilation of faster flock() system calls for OS supporting
        those calls. By default the fcntl system call for locking will
        be used that is a little bit slower but it can work on NFS
        mounted volumes as well. (mturk)
      </update>
      <fix>
        <bug>41562</bug>: Add Debug logging for read from client in ISAPI Redirector.
         Contributed by Tim Whittington. (mturk)
      </fix>
      <update>
        Apache. Add ForwardSSLCertChain JkOption.
        Contributed by Patrik Schnellmann. (mturk)
      </update>
      <fix>
        IIS. Do not forbid access to web-inf or meta-inf if there is
        no mapped worker. This allows to have resource with those names
        that are outside mapped contexts. (mturk)
      </fix>
      <update>
        Apache. Use process id for creating shared memory name and delete shared
        memory and shared memory lock files on exit. (mturk)
      </update>
      <fix>
        IIS. Fix Keep-Alive regression introduced in 1.2.21. (mturk)
      </fix>
      <update>
      Delete unused check for empty init_map during startup. (rjung)
      </update>
      <fix>
        <bug>41770</bug>: Fix startup error if no JkWorkersFile is used. (rjung)
      </fix>
      <update>
      Use JK_TRUE/JK_FALSE instead of OK/!OK as return values in init_jk(). (rjung)
      </update>
      <update>
      Minor adjustments to apache startup log messages (when to use STDERR, remove
      deprecated NOERRNO flag, shm warning and warnings for usage of default files). (rjung)
      </update>
      <update>
      Replace APR precompiler directive by httpd mpm_query to detect MPM threading.
      Add a debug log message about auto-detected pool size. (rjung)
      </update>
      <fix>
        Make MMN check easier to understand and a little more precise
        (for new ap_get_server_banner()/ap_get_server_description()).
        We use the new API only for Apache httpd 2.3. This way our binaries are not
        tightly coupled to a minor 2.0 version, and we don't use ap_get_server_banner()
        any way. (rjung)
      </fix>
      <fix>
        Use the full description string ap_get_server_description() instead of
        the truncated info from ap_get_server_banner(), because this info gets used internally
        (status worker display and ajp14 backend communication) and is not send back to the
        normal user. (rjung)
      </fix>
      <fix>
        <bug>41757</bug>: Document the "--enable-prefork" flag of configure. (rjung)
      </fix>
      <update>
      Enhance log messages for failures when parsing attribute maps. (rjung)
      </update>
      <fix>
        Correct log message during worker initialization, in case remote host could not be
        resolved. We logged the default host name "localhost" instead of the configured one. (rjung)
      </fix>
      <fix>
        <bug>41770</bug>: Fix the second part of the bug: local_worker and local_worker_only
        is missing from the list of deprecated attributes (and not supported either), so prevents
        the web server from startup. (rjung)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.20 and 1.2.21">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
        <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0774"><b>CVE-2007-0774</b></a>
        : A denial of service and critical remote code execution vulnerability.
        Caused by buffer overflow in map_uri_to_worker() when URL were longer that 4095 bytes.
        Reported by ZDI (www.zerodayintiative.com).
        Please note this issue only affected versions 1.2.19 and 1.2.20 of the
        Apache Tomcat JK Web Server Connector and not previous versions.
        Tomcat 5.5.20 and Tomcat 4.1.34
        included a vulnerable version in their source packages.
        Other versions of Tomcat were not affected.
      </fix>
      <add>
      Check the worker. parameters and don't start if the parameter is not a valid one. (jfclere)
      </add>
      <add>
        <bug>41439</bug>: Allow session IDs to get stripped off URLs of static
        content in Apache by adding JkStripSession
        directive (configurable per vhost). (mturk)
      </add>
      <add>
      Change semantics of empty defaults for JkEnvVar variables.
      Until 1.2.19: not allowed. In 1.2.20: send variables as empty strings, if
      neither set to non empty in config, nor during runtime.
      Starting with 1.2.21: If config has no second argument only send
      variable if set (even when set to empty string) during runtime.
      Allows good combination with condition attribute in tomcat access log. (rjung)
      </add>
      <fix>
        <bug>41610</bug>: Fix incorrect detection of missing Content-Length
        header leading to duplicate headers. Contributed by Boris Maras. (rjung)
      </fix>
      <fix>
      Better build support for SunONE (Netscape/iPlanet) webservers. (jim)
      </fix>
      <add>
      Add warning if duplicate map keys are read and are not allowed,
      e.g. when parsing uriworkermap.properties. (rjung)
      </add>
      <fix>
      Don't concat worker names, if uriworkermap.properties has a duplicate
      pattern, instead overwrite the worker. (rjung)
      </fix>
      <fix>
      Log deprecation message even in duplication case. (rjung)
      </fix>
      <fix>
      uriworkermap.properties: Fix off-by-one problem when deleting
      URL mapping during reloading of uriworkermap.properties. (rjung)
      </fix>
      <add>
        <bug>41439</bug>: Allow session IDs to get stripped off URLs of static
        content in IIS (configurable). (rjung)
      </add>
      <add>
        <bug>41333</bug>: Refactoring isapi_plugin configuration reading. (rjung)
      </add>
      <add>
        <bug>41332</bug>: Add some more errno logging and unify the format. (rjung)
      </add>
      <add>
      JkStatus: Improved logging by adding status worker name to messages.
      Added messages to the recover worker action. (rjung)
      </add>
      <add>
      JkStatus: Refactoring searching for workers and sub workers. (rjung)
      </add>
      <add>
        <bug>41318</bug>: Add configuration to make status worker user
        name checks case insensitive. (rjung)
      </add>
      <add>
      JkStatus: Add estimated time until next global maintenance to other
      mime types and adopt jkstatus ant task. (rjung)
      </add>
      <add>
      JkStatus: Show estimated time until next global maintenance.
      Change displayed time until next recovery to a min/max pair. (rjung)
      </add>
      <add>
      JkStatus: Allow a user of a read/write status worker to switch it
      to and from read_only mode temporarily. (rjung)
      </add>
      <fix>
      JkStatus: Do not show read/write commands in a read_only status worker. (rjung)
      </fix>
      <add>
      JkStatus: Allow lb sub workers in error state to be marked for recovery
      administratively from the status worker. (rjung)
      </add>
      <add>
      Load Balancer: Do not try to recover multiple times in parallel.
      Use additional runtime states "PROBE" and "FORCED". (rjung)
      </add>
      <fix>
      JkStatus: Improve data synchronization between different processes. (rjung)
      </fix>
      <fix>
        <bug>41381</bug>: Fix segfault in feature fail_on_status
        (wrong order of log arguments). Patch by Juri Haberland. (rjung)
      </fix>
      <fix>
      Use correct windows line endings for log file on WIN32 platform. (rjung)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.19 and 1.2.20">
  <br />
  <subsection name="Native">
    <changelog>
      <add>
      JkStatus Ant Task documentation page. (pero/rjung)
      </add>
      <add>
      JkStatus Ant Tasks: Add new tasks for update and reset. (pero)
      </add>
      <update>
      JkStatus Ant Tasks: Update for new xml status format. (pero)
      </update>
      <update>
      Allow integer and string values when setting enumeration/boolean
      attributes via status worker update action. (rjung)
      </update>
      <add>
      Docs: New reference guide page for status worker. (rjung)
      </add>
      <update>
      Docs: Renaming the config dir to reference and using the title
      Reference Guide in the docs. (rjung)
      </update>
      <update>
      Added retry_on_status for workers directive. (mturk)
      </update>
      <update>
      Status Worker: Add directive to make property prefix
      and good/bad rule configurable. (rjung)
      </update>
      <update>
      Status Worker: Omit lb members when att=nosw. (rjung)
      </update>
      <update>
      Status Worker: New command cmd=version for a short version output. (rjung)
      </update>
      <update>
      Status Worker: New output stype mime=prop produces property lists. (rjung)
      </update>
      <fix>
      Apache: Fix incorrect handling of JkEnvVar when Vars are set multiple times. (rjung)
      </fix>
      <update>
      Renamed jvm_route to route. Deprecated jvm_route, but still use it as fallback
      when parsing the worker configuration. (rjung)
      </update>
      <update>
      IIS: Make uriworkermap file reload check interval configurable. (mturk)
      </update>
      <update>
      Apache: Make uriworkermap file reload check interval configurable. (rjung)
      </update>
      <update>
      Status Worker: Add directives for customizing the XML
      output (ns, xmlns, doctype). (mturk)
      </update>
      <add>
      Docs: New page with description of uriworkermap. (rjung)
      </add>
      <update>
      Docs: Added short description of max_packet_size to worker
      reference. (rjung)
      </update>
      <update>
      Status Worker: All functions accessible also for xml and txt
      mime types (list, show, update, reset). (rjung)
      </update>
      <update>
      Status Worker: New global health indicators for load balancers
      named bad (error, recovering or stopped), degraded (busy or disabled)
      and good (the rest, active and OK or N/A). (rjung)
      </update>
      <update>
      Status Worker: New edit page, to change one attribute for all
      members of a load balancer. (rjung)
      </update>
      <update>
      Status Worker: Standard logging for status worker. (rjung)
      </update>
      <update>
      Status Worker: code refactoring. (rjung)
      </update>
      <update>
      Status Worker: New attribute user (list) denies access, if
      the request user in the sense of remote_user is not in this list.
      Empty list = no deny (rjung)
      </update>
      <update>
      Status Worker: New attribute read_only disables the parts
      of the status worker, that change states and configurations. (rjung)
      </update>
      <fix>
        <bug>36121</bug>: Don't change main uri when mod_jk serves
        included uri. (markt)
      </fix>
      <update>
      Apache VHosts: Merge JkOptions +base - -base + +vhost - -vhost. (rjung)
      </update>
      <update>
      Apache Docs: Adding requirements, context information, default values and
      inheritance rules to the Apache config documentation. (rjung)
      </update>
      <update>
      Status Worker: Add source type to status worker, remove the redundant "context"
      column in the map listing (context=uri). (rjung)
      </update>
      <update>
      uriworkermap: On reload of the file, all old entries from the previous file
      version get deleted, before the new ones are being read. (rjung)
      </update>
      <fix>
      Keep normal maps and exclusion maps internally separate. Don't treat them
      as the same when adding a rule. (rjung)
      </fix>
      <update>
      Status Worker: Display mapping rules also for non-lb workers and in global view. (rjung)
      </update>
      <update>
      Apache VHosts: Use the vhost log files instead of the main log. (rjung)
      </update>
      <update>
      Apache VHosts: Allow individual timestamp formats by refactoring the formatting
      method. (rjung)
      </update>
      <update>
      Apache VHosts: Adding all missing config items to the virtual host level.
      Don't overwrite the settings from the global server, but inherit them
      in case they are not set in the virtual host. (rjung)
      </update>
      <update>
      Apache: remove unnecessary function names from log messages. (rjung)
      </update>
      <update>
      Apache: add a default log file location and a message, if the default gets used. (rjung)
      </update>
      <update>
      Apache: add missing JK_IS_DEBUG_LEVEL() (rjung)
      </update>
      <update>
      Apache VHosts: Allow JkWorkersFile, JKWorkerProperty, JkShmFile and JkShmFileSize
      only in global virtual server. (rjung)
      </update>
      <update>
      Add some more jk_close_socket() and reduce log level for some info messages. (rjung)
      </update>
      <update>
      Load Balancer: Added the Sessions strategy. Contributed by Takayuki Kaneko. (rjung)
      </update>
      <update>
      Docs: Minor enhancements and syncing with more recent versions. (rjung)
      </update>
      <fix>
      <bug>40997</bug>: Separate uri mappings from their '!'
      counterpart when checking for duplicates in uriworkermap
      reloading. (rjung)
      </fix>
      <fix>
      <bug>40877</bug>: Make sure the shared memory is reset on
      attach for multiple web server child processes. (mturk)
      </fix>
      <update>
      IIS: Added shm_size property to be able to deal with over 64
      workers configurations. (mturk)
      </update>
      <update>
      IIS: Increase default thread count to 250, so its the same as Apache Httpd
      default configuration. (mturk)
      </update>
      <fix>
      <bug>40966</bug>: Fix socket descriptor checks on windows. (mturk)
      </fix>
      <fix>
      <bug>40965</bug>: Initialize missing service parameters. (mturk)
      </fix>
      <fix>
      <bug>40938</bug>: Fix releasing of rewrite map.
      Thanks to Chris Adams for spotting that. (mturk)
      </fix>
      <update>
      Apache: Added +FlushHeader JkOptions. (mturk)
      </update>
      <update>
      Added explicit flush when AJP body packet size is zero. (mturk)
      </update>
      <fix>
      <bug>40856</bug>: Fixing case sensitivity bug in URL mapping. (rjung)
      </fix>
      <fix>
      <bug>40793</bug>: Documentation: Improvements to Apache HowTo provided by
      Paul Charles Leddy. (markt)
      </fix>
      <fix>
      <bug>40774</bug>: Fixing wrong recursion termination. This one restricted the
      "reference" feature unintentionally to 20 workers. (rjung)
      </fix>
      <fix>
      <bug>40716</bug>: Adding "reference" feature to IIS and Netscape. (rjung)
      </fix>
      <fix>
      Documentation: Corrected SetEnvIf syntax in JK_WORKER_NAME example. (rjung)
      </fix>
      <fix>
      Documentation: Added forgotten STATE and ACTIVATION notes for load balancer logging in Apache. (rjung)
      </fix>
      <update>
      Apache: Use instdso.sh instead libtool: libtool does not work on HP-UX for example. (jfclere)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.18 and 1.2.19">
  <br />
  <subsection name="Native">
    <changelog>
      <update>
      Docs: Add SetHandler and new env var to Apache config docs. (rjung)
      </update>
      <update>
      Apache 1.3: Backport "no-jk" feature. (rjung)
      </update>
      <update>
      Apache: Add an environment variable to make SetHandler "jakarta-servlet" more
      useful. The variable is JK_WORKER_NAME, but can be changed by the
      new directive JkWorkerIndicator. (rjung)
      </update>
      <fix>
      LB: Don't use single worker shortcut, if the single worker is being diabled. (rjung)
      </fix>
      <fix>
      Status worker: Add short explanation of activation and error states to legend. (rjung)
      </fix>
      <fix>
      Docs: Add meaning of zero timeout values for various timeouts
      in workers.properties. (rjung)
      </fix>
      <fix>
      LB: Cleanup of Mladens forced recovery. (rjung)
      </fix>
      <fix>
      LB: Do not change lb_value for recovering workers to max, if
      we are using BUSYNESS method. (rjung)
      </fix>
      <fix>
      Apache: Since 1.2.14 mod_jk failed to detect client abort. (rjung)
      </fix>
      <fix>
      Docs: Corrected description of JkEnvVar. (rjung)
      </fix>
      <fix>
      Solaris: Detect filio.h in configure to make the new connection detection
      build on solaris (r432825). (rjung)
      </fix>
      <update>
      Add feature to force the recovery of workers that are
      member of loadbalancer if all the members are in error
      state. This fixes the time gap where 503 was returned
      caused by recovery_timeout although the backend was
      ready to handle the requests. (mturk)
      </update>
      <update>
      Docs: Seperate deprecated directives in their own table. (rjung)
      </update>
      <update>
      Docs: Allow "-" and "_" in worker names. (rjung)
      </update>
      <update>
      Allow multiple lines with attributes "balance_workers" and "mount". (rjung)
      </update>
      <fix>
      Make jk_is_some_property match more precisely. (rjung)
      </fix>
      <update>
      JkStatus: Make refresh interval changeable. (rjung)
      </update>
      <fix>
      JkStatus: Adjust display of recover time wrt. global maintenance. (rjung)
      </fix>
      <update>
      LB: Resetting worker state from OK to NA, if worker has been idle
      too long. (rjung)
      </update>
      <fix>
      Avoid compiler warnings concerning the use of lb_*_type arrays.
      Use functions instead. (rjung)
      </fix>
      <update>
      Added %R JkRequestLogFormat option for Apache 1 and Apache 2. (mturk)
      </update>
      <update>
      Allow changing jvm Route from status manager. (mturk)
      </update>
      <fix>
      Do not retun 400 if Tomcat fails in the midle of the post
      request. Return 500 insted. (mturk)
      </fix>
      <update>
      LB: Combine ok/error/recovering/busy runtime states into a single scalar. (rjung)
      </update>
      <update>
      LB: Combine active/disabled/stopped configuration states into a single scalar. (rjung)
      </update>
      <update>
      LB: Add several Apache notes to enable standard logging for load balancer results. (rjung)
      </update>
      <update>
      LB: Reorganisation of the main load balancer service loop. (rjung)
      </update>
      <update>
      Implement hierarchical worker configuration via attribute "reference". (rjung)
      </update>
      <update>
      Log deprecated properties. (rjung)
      </update>
      <fix>
      IIS: Fix simple_rewrite for the cases where the
      rewritten url is larger then the original one. (mturk)
      </fix>
      <update>
      New JkOption "DisableReuse" to disable connection persistence. (jim)
      </update>
      <update>
      LB: Move sessionid retrieval out of get_most_suitable_worker into service. (rjung)
      </update>
      <update>
      Code cleanup for all service methods (use TRACE, JK_LOG_NULL_PARAMS, null pointer checks). (rjung)
      </update>
      <update>
      JKSTATUS: add refresh link. No refresh for updates. Redirect to list view after update. (rjung)
      </update>
      <update>
      Add new hook add_log_items into servers. (rjung)
      </update>
      <update>
      APACHE httpd: Rename apache logging notes. (rjung)
      </update>
      <update>
      LB: Rename lock and method constants. Add constants for defaults. (rjung)
      </update>
      <fix>
      Default log level should be INFO and not DEBUG.
      Default log level should be the same for all server types. (rjung)
      </fix>
      <fix>
      Make rewrite_rule_map and log_level as non mandatory
      directives for isapi_redirect. (mturk)
      </fix>
      <fix>
      <bug>40107</bug>: Rewrite is_socket_connected function.
      Non blocking socket is not used any more. (mturk)
      </fix>
      <update>
      Allow building with VS2005 without too many warnings. (mturk)
      </update>
      <fix>
      Decide by MMN, which piped log API we should use.
      mod_jk 1.2.18 broke compilation with Apache 1.3 pre 1.3.28. (rjung)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.17 and 1.2.18">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
      Using socklen_t in getsockopt. Also introducing jk_sock_t. (mturk)
      </fix>
      <update>
      Allow recovery wait time below 60 seconds (new minimum is 1 second). (mturk)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.16 and JK 1.2.17">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
      Fix hanging jk status worker when certain attributes are being updated
      due to double locking. (rjung)
      </fix>
      <update>
      Allow JkMount to behave like uriworkermap.properties
      by parsing pipe symbol as two directive marker. (mturk)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.15 and JK 1.2.16">
  <br />
  <subsection name="Native">
    <changelog>
      <update>
      Added simple rewrite capability for IIS. Although simple it
      will fulfill most needs. (mturk)
      </update>
      <update>
      Added RECOVER_ABORT_IF_CLIENTERROR recovery_option that closes
      the connection if client connection is broken during the request. (mturk)
      </update>
      <update>
      Renamed cache_timeout directive to connection_pool_timeout. (mturk)
      </update>
      <update>
      Added connection_pool_minsize directive. (mturk)
      </update>
      <update>
      Deprecate recycle_timeout directive. (mturk)
      </update>
      <update>
      Corrected some HTML syntax bugs in output of status worker. (rjung)
      </update>
      <update>
      Added the refresh=n parameter to the status worker. It will update the display every n seconds. (rjung)
      </update>
      <update>
      Balancer: Add attribute distance to balanced workers to express preferences between workers. (rjung)
      </update>
      <update>
      Balancer: Add attribute jvm_route to balanced workers to be able to use the same target in different balancers. (rjung)
      </update>
      <update>
      Status: Add lb_mult to status. (rjung)
      </update>
      <update>
      Balancer: Make different balancing strategies work in a similar way (use lb_value, use decay during global maintenance, use integer factors for weights. (rjung)
      </update>
      <update>
      Balancer: Improve locking. (rjung)
      </update>
      <update>
      Balancer: Workers start slower after recovering. (rjung)
      </update>
      <update>
      Balancer: Make different balancing strategies work in a similar way (use lb_value, use decay during global maintenance, use integer factors lb_mult for weights). (rjung)
      </update>
      <update>
      Balancer: Move recovery check to global maintenance. (rjung)
      </update>
      <update>
      Balancer: Add global maintenance method, that is called in only one process. (rjung)
      </update>
      <update>
      Extend our use of autoconf to find a 32Bit and a 64Bit unsigned type and their printf formats. (rjung)
      </update>
      <update>
      Logging: piped loggers for JkLogFile and Apache 1.3. (rjung)
      </update>
      <update>
      Logging: Add PID to log lines for each log level apart from REQUEST. (rjung)
      </update>
      <update>
      Logging: flush buffered logs to keep lines in correct order. Output final newline together with log message. (rjung)
      </update>
      <update>
      Reducing shm size. (rjung)
      </update>
      <update>
      Only log removing of old worker, when we actually do it. (rjung)
      </update>
      <fix>
      <bug>37469</bug>: Fix shared memory close for forked childs.
      The shared memory will be closed by the parent process. (mturk)
      </fix>
      <fix>
      <bug>37332</bug>: Fix potential misuse of buffer length with
      snprintf functions. (mturk)
      </fix>
      <fix>
      <bug>38859</bug>: Protect mod_jk against buggy or malicious
      AJP servers in the backend. Patch provided by Ruediger Pluem. (mturk)
      </fix>
      <fix>
      <bug>38889</bug>: Use worker map sorting depending on the path
      elements, to comply with Servlet spec. Patch provided by
      Steve Revilak. (mturk)
      </fix>
      <update>
      <bug>36138</bug>: Added Busyness lb method. Patch provided
      by  Chris Lamprecht. (mturk)
      </update>
      <fix>
      Fix pessimistic locking mode. The patch correctly handles the
      burst load, by syncing the access to the shared memory data. (mturk)
      </fix>
      <fix>
      <bug>38806</bug>: Reclycle worker even if it is disabled.
      This fixes hot-standby workers in error state. (mturk)
      </fix>
      <fix>
      <bug>37167</bug>: Allow building with BSD-ish like make. (mturk)
      </fix>
      <fix>
      ISAPI plugin (isapi_redirect.dll) did not provide correct request data
      for IIS
 to include in the IIS log. (markt)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.14 and 1.2.15">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
      Fix AJP13 Cookie2 parsing. Cookie2 was always send as Cookie.
      Patch provided by Andre Gebers. (mturk)
      </fix>
      <fix>
      <bug>35862</bug>: NSAPI plugin attempts to read freed memory and attempts to
      dereference a null pointer. Patch provided by Brian Kavanagh. (markt)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.13 and 1.2.14">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
        Fix lb for worker mpm's with cachesize set to lower number then
        ThreadsPerChild is. If retries is set to value larger then 3 sleep for
        100 ms on each attempt. This enables to tune the connection cache,
        and serialize incoming connections instead returning busy if connection
        count is larger then cachesize. (mturk)
      </fix>
      <fix>
      <bug>36525</bug>: Solaris core dump. (mturk)
      </fix>
      <fix>
      <bug>36102</bug>: Worker actions do not persist. (mturk)
      </fix>
      <fix>
      <bug>35864</bug>: Status worker doesn't list workers.
      Patch provided by Martin Goldhahn. (mturk)
      </fix>
      <fix>
      <bug>35809</bug>: JkMountCopy don't work for Apache 2.0 Patch provided by
       Christophe Dubach. (mturk)
      </fix>
      <fix>
      <bug>35298</bug>: Multiple JK/ISAPI redirectors on a single IIS site are not supported
       Patch provided by Tim Whittington. (mturk)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.12 and 1.2.13">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>
      <bug>34397</bug>: Emergency was handled as Error. (jfclere)
      </fix>
      <fix>
      <bug>34474</bug>: // in URL were not handled correctly with Apache-1.3. (jfclere)
      </fix>
      <fix>
      Use 64 bits int for transferred/read bytes.
      </fix>
      <update>
      Added JkOptions +FlushPackets used to optimize memory
      usage when sending large data. (mturk)
      </update>
      <update>
      Added lock directive for load balancer that allows more acurate
      load balancing in case of burst load. (mturk)
      </update>
      <update>
      Added worker.maintain directive to allow customizing default 10
      second timeout. On busy servers this value needs to be set on
      higher value. (mturk)
      </update>
      <fix>
      Fix for NetWare compiler to deal with different types between AP13
      and AP2 SDKs. (fuankg)
      </fix>
      <update>
      Emit much more legible user.dmp crash analysis output for WIN32. (wrowe)
      </update>
     <fix>
     <bug>34558</bug>: Fix first failover request. (mturk)
     </fix>
    </changelog>
  </subsection>
</section>

<section name="Changes between 1.2.11 and 1.2.12">
  <br />
  <subsection name="Native">
    <changelog>
      <update>
      Added ForwardLocallAddres JkOptions flag for passing local instead remote
      address. Useful for remote addr valve. (mturk)
      </update>
     <fix>Fix that worker not used, when stopped flag is true. (pero)
     </fix>
      <update>
      Add loadbalance default worker secret attribute to the documentation (pero)
      </update>
    </changelog>
  </subsection>
</section>

<section name="Changes between 1.2.10 and 1.2.11">
  <br />
  <subsection name="Native">
    <changelog>
      <fix>Backport SC_M_JK_STORED from JK2 for passing arbitrary
      methods instead failing the request. (mturk)
      </fix>
      <fix>Added missing SEARCH and ACL http methods. (mturk)
      </fix>
      <update>
      Add worker secret attribute to the documentation (pero)
      </update>
      <update>
      Add a stopped flag to worker configuration. Set flag True and
      complete traffic to worker is stopped.
      Also update the Ant JkStatusUpdateTask at Tomcat 5.5.10 release.
      Only usefull in a replicated session cluster.(pero)
      </update>
      <update>Added worker maintain function that will maintain all
      the workers instead just the current one. This enables to recycle
      the connections on all workers. (mturk)
      </update>
      <update>Use shutdown when recycling connections instead hard
      breaking the socket. (mturk)
      </update>
      <update>Add unique directives checking. The directives if
      unique are now overwritten instead concatenated. (mturk)
      </update>
      <update>Allow multiple worker.list directives. (mturk)
      </update>
      <fix>
      <bug>34577</bug>: For IIS log original request instead loging
      the request for ISAPI extension. (mturk)
      </fix>
      <fix>
      <bug>34558</bug>: Make sure the returned status codes are the same
      for ajp and lb workers. (mturk)
      </fix>
      <fix>
      <bug>34423</bug>: Use APR_USE_FLOCK_SERIALIZE for setting log lock
      on platforms like FreeBSD. Patch provided by Allan Saddi. (mturk)
      </fix>
      <fix>
      <bug>33843</bug>: Fix obtaining LDFLAGS that were used for building
      Apache HTTPD. Patch provided by Beat Kneubuehl. (mturk)
      </fix>
      <fix>
      <bug>34358</bug>: Enable load balancer method configuration. (glenn)
      </fix>
      <fix>
      <bug>34357</bug>: In some situations Apache 2 mod_jk could segfault
      when the JkAutoAlias directive is used. (glenn)
      </fix>
      <update>
        Add --enable-prefork to the documentation (pero)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.9 and 1.2.10">
  <br />
  <subsection name="Native">
    <changelog>
      <update>Set default shared memory to 64K instead 1M. (mturk)
      </update>
      <fix>Do not mark the worker in error state if headers are
      larger then AJP13 limit. (mturk)
      </fix>
      <update>
      On Series you should use the latest PTF for Apache 2.0
      (which is now 2.0.52) and ad minima SI17402/SI17061 or cumulative
      including them. (hgomez)
      </update>
      <update>
      Change the xml status format to xml attribute syntax (pero)
      </update>
      <fix>
      <bug>33248</bug>: Fix builds where apxs defines multiple
      directories for APR includes. (mturk)
      </fix>
      <fix>
      <bug>32696</bug>: Return 404 instead 403 when WEB-INF is requested
      to comply with Servlet spec. (mturk)
      </fix>
      <update>Added ANT task for managing jkstatus. (pero)
      </update>
      <update>
      If socket_timeout is set, check if socket is alive before
      sending any request to Tomcat. (mturk)
      </update>
      <update>
      Added JkMountFile for Apache web servers. This file can contain
      uri mappings in the form (/url=worker), and is checked for
      updates at regular 60 second interval. (mturk)
      </update>
      <update>
      Added status worker for managing worker runtime data using
      web page. (mturk)
      </update>
      <update>
      Added load balancer method directive that is used for setting
      the algorithm used for balancing workers. Method can be either
      Request (default) or Traffic. (mturk)
      </update>
      <update>
      Added shared memory to allow dynamic configuration. Shared memory
      is needed only for unix platform and web servers having multiple
      child processes. For Apache web server two new directives has been
      added (JkShmFile and JkShmSize). (mturk)
      </update>
      <update>
      Added textupdate mode to status worker to handle remote updates
      from ant tasks.(pero)
      </update>
      <fix>
      <bug>33562</bug>: Fix Reply_timeout when recovery_options
      is larger than 1. Patch provided by Takashi Satou. (mturk)
      </fix>
      <fix>
      <bug>33308</bug>: Fix segfaults when ForwardDirectories is enabled
        with Apache 1.3
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.7 and 1.2.8">
  <br />
  <subsection name="Native">
    <changelog>
      <update>
      Allow anyone to debug and diagnose stack dumps using windbg or any
      other debugging tool, and (if they add the .pdb files to their
      installation) to make sense of dr watson logs.
      Patch provided by William A. Rowe (wrowe)
      </update>
      <fix>
      Fix in_addr_t usage by using the real struct ignoring typedef.
      Patch provided by William A. Rowe (wrowe)
      </fix>
      <fix>
      Fix url rewriting by restoring the in place uri from which the
      jsessionid was removed. (mturk)
      </fix>
      <update>
      Make load balancer algorithm thread safe by introducing mutex
      to the load balancer worker. (mturk)
      </update>
      <fix>
      Fix sending error pages for IIS to client by adding Content-Type header
      using correct api function call. (mturk)
      </fix>
      <fix>
      <bug>32696</bug>: Prevent IIS from crushing when web-inf url was requested. (mturk)
      </fix>
      <update>
      Use default cachesize for servers that support discovering the number of
      threads per child process. (mturk).
      </update>
      <fix>
      Fix Apache content-length header parsing using case insensitive compare. (billbarker)
      </fix>
      <fix>
      Fix parsing AJP headers using case insensitive compare. (mturk)
      </fix>
      <fix>
      Use infinite socket timeout if socket_timeout is set to zero or less then zero. (mturk)
      </fix>
      <update>
      Change <b>balanced_workers</b> to <b>balance_workers</b> but keep
      backward compatibility preserving the old directive. (mturk).
      </update>
      <fix>
      Fix ajp initialization for workers with cache_size set to zero. (mturk)
      </fix>
      <update>
      <bug>32317</bug>: Making mod_jk replication aware (Clustering Support).
      Patch provided by Rainer Jung. (mturk).
      </update>
      <fix>
      <bug>31132</bug>: Core dump when JkLogFile is missing from conf. (mturk)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="Changes between 1.2.6 and 1.2.7">
  <br />
  <subsection name="Native">
    <changelog>
      <update>
      Added new property named recover_time that can be used to change the
      default 60 second recover time. (mturk)
      </update>
      <update>
      Added custom retries for worker, so we don't depend on default setting.
      If set to a number grater then 3, it will sleep for 100ms on retry greater
      then 3 and then try again. (mturk)
      </update>
      <update>
      Added JkWorkerProperty directive that enables omiting workers.properties file.
      For example: JkWorkerProperty worker.ajp13a.port=8009. (mturk)
      </update>
      <fix>
      Check all JSESSIONID cookies for a valid jvmRoute. If you have multiple Tomcats
      with overlapping domains, then you can get multiple cookies without a defined order.
      This will route correctly as long as the different domains don't have any
      Tomcats in common. (billbarker)
      </fix>
      <update>
      Added JkUnMount directive for negative mappings that works as opposite to JkMount directives.
      It is used for blocking of particular URL or content type. (mturk)
      </update>
      <update>
      Added wildchar match uri mappings. One can now use JkMount to
      map /app/*/servlet/* or /app?/*/*.jsp. (mturk)
      </update>
      <update>
      Rewrite the logging by adding Trace options. (mturk)
      </update>
      <update>
      Added socket_timeout property that sets the timeout
      for the socket itself. (mturk)
      </update>
      <fix>
      Changed socket_timeout property to recycle_timeout. This better
      explains what the directive actually does. (mturk)
      </fix>
      <fix>
        Changed the load balancer algorithm.
        The idea behind this new scheduler is the following:
        lbfactor is <i>how much we expect this worker to work</i>,
        or <i>the worker's work quota</i>.
        lbstatus is <i>how urgent this worker has to work to fulfill its quota
        of work</i>. We distribute each worker's work quota to the worker, and then look
        which of them needs to work most urgently (biggest lbstatus).  This
        worker is then selected for work, and its lbstatus reduced by the
        total work quota we distributed to all workers.  Thus the sum of all
        lbstatus does not change.(*)
        If some workers are disabled, the others will
        still be scheduled correctly. (mturk)
      </fix>
    </changelog>
  </subsection>
</section>
<section name="JK 2">
<p>JK2 has been put in maintainer mode and no further development will take place.
The reason for shutting down JK2 development was the lack of developers interest.
Other reason was lack of users interest in adopting JK2, caused by configuration
complexity when compared to JK.
</p>
</section>

</body>
</document>
