APACHE 2.4 STATUS:                        -*- mode: text; coding: utf-8 -*-
Last modified at [$Date$]

The current version of this file can be found at:

  * http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x/STATUS

The current development branch of this software can be found at:

  * http://svn.apache.org/repos/asf/httpd/httpd/trunk

Consult the following STATUS files for information on related projects:

  * http://svn.apache.org/repos/asf/apr/apr/trunk/STATUS
  * http://svn.apache.org/repos/asf/apr/apr/branches/1.4.x/STATUS
  * http://svn.apache.org/repos/asf/apr/apr-util/branches/1.4.x/STATUS
  * http://svn.apache.org/repos/asf/apr/apr/branches/1.5.x/STATUS
  * http://svn.apache.org/repos/asf/apr/apr-util/branches/1.5.x/STATUS
  * http://svn.apache.org/repos/asf/apr/apr/branches/1.6.x/STATUS
  * http://svn.apache.org/repos/asf/apr/apr-util/branches/1.6.x/STATUS

Patches considered for backport are noted in their branches' STATUS:

  * http://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x/STATUS
  * http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x/STATUS


Release history:
    [NOTE that x.{odd}.z versions are strictly Alpha/Beta releases,
          while x.{even}.z versions are Stable/GA releases.]

    2.4.55  : In development
    2.4.54  : Released on June 08, 2022
    2.4.53  : Released on March 14, 2022
    2.4.52  : Released on December 20, 2021
    2.4.51  : Released on October 07, 2021
    2.4.50  : Released on October 04, 2021
    2.4.49  : Released on September 16, 2021
    2.4.48  : Tagged on May 17, 2021. Released on June 01, 2021.
    2.4.47  : Tagged on April 22, 2021. Distributed on April 28, 2021,
              not announced.
    2.4.46  : Tagged on August 01, 2020. Released on August 07, 2020.
    2.4.45  : Tagged on July 29, 2020. Not released.
    2.4.44  : Tagged on July 28, 2020. Not released.
    2.4.43  : Tagged on March 26, 2020. Released on April 01, 2020.
    2.4.42  : Tagged on March 19, 2020. Not released.
    2.4.41  : Tagged on August 09, 2019. Released on August 14, 2019.
    2.4.40  : Tagged on August 02, 2019. Not released.
    2.4.39  : Tagged on March 27, 2019. Released on April 01, 2019.
    2.4.38  : Tagged on January 17, 2019. Released on January 22, 2019.
    2.4.37  : Tagged on October 18, 2018. Released on October 23, 2018.
    2.4.36  : Tagged on October 10, 2018. Not released.
    2.4.35  : Tagged on September 17, 2018. Released on September 22, 2018.
    2.4.34  : Tagged on July 10, 2018. Released on July 16, 2018.
    2.4.33  : Tagged on March 17, 2018. Released on March 21, 2018.
    2.4.32  : Tagged on March 09, 2018. Distributed on March 15, 2018,
              not announced.
    2.4.31  : Tagged on March 03, 2018. Not released.
    2.4.30  : Tagged on February 19, 2018. Not released.
    2.4.29  : Tagged on October 17, 2017. Released on October 23, 2017.
    2.4.28  : Tagged on September 25, 2017. Released on October 5, 2017.
    2.4.27  : Tagged on July 6, 2017. Released on July 11, 2017.
    2.4.26  : Tagged on June 13, 2017. Released on June 19, 2017.
    2.4.25  : Tagged on December 16, 2016. Released on December 21, 2016.
    2.4.24  : Tagged on December 16, 2016. Not released.
    2.4.23  : Tagged on June 30, 2016. Released on July 05, 2016.
    2.4.22  : Tagged on June 20, 2016. Not released.
    2.4.21  : Tagged on June 16, 2016. Not released.
    2.4.20  : Tagged on April 4, 2016. Released on April 11, 2016.
    2.4.19  : Tagged on March 21, 2016. Not released.
    2.4.18  : Tagged on December 8, 2015. Released on December 14, 2015.
    2.4.17  : Tagged on October 9, 2015. Released October 13, 2015.
    2.4.16  : Tagged on July 9, 2015. Released July 15, 2015.
    2.4.15  : Tagged on June 19, 2015. Not released.
    2.4.14  : Tagged on June 11, 2015. Not released.
    2.4.13  : Tagged on June 4, 2015. Not released.
    2.4.12  : Tagged on January 22, 2015. Released January 29, 2015.
    2.4.11  : Tagged on January 15, 2015. Not released.
    2.4.10  : Tagged on July 15, 2014. Released July 21, 2014.
    2.4.9   : Tagged on March 13, 2014. Released on March 17, 2014.
    2.4.8   : Tagged on March 11, 2014. Not released.
    2.4.7   : Tagged on November 19, 2013. Released on November 25, 2013.
    2.4.6   : Tagged on July 15, 2013. Released July 22, 2013.
    2.4.5   : Tagged on July 11, 2013. Not released.
    2.4.4   : Tagged on February 18, 2013. Released February 25, 2013.
    2.4.3   : Tagged on August 17, 2012. Released August 18, 2012.
    2.4.2   : Tagged on April 5, 2012. Released April 17, 2012.
    2.4.1   : Tagged on February 13, 2012. Released February 21, 2012.
    2.4.0   : Tagged on January 16, 2012. Not released.
    2.3.16  : Tagged on December 15, 2011. Released December 19, 2011
    2.3.15  : Tagged on November 8, 2011. Released November 15, 2011.
    2.3.14  : Tagged on August 1, 2011. Released August 9, 2011.
    2.3.13  : Tagged on June 28, 2011. Not released.
    2.3.12  : Tagged on May 11, 2011. Released May 23, 2011.
    2.3.11  : Tagged on March 1, 2011. Released March 7, 2011.
    2.3.10  : Tagged on December 13, 2010. Released December 21, 2010.
    2.3.9   : Tagged on November 23, 2010. Not released.
    2.3.8   : Tagged on August 24, 2010. Released August 31, 2010.
    2.3.7   : Tagged on August 19, 2010. Not released.
    2.3.6   : Tagged on June 11, 2010. Released on June 21, 2010.
    2.3.5   : Tagged on January 21, 2010. Released on January 26, 2010.
    2.3.4   : Tagged on November 25, 2009. Released on December 8, 2009.
    2.3.3   : Tagged on November 11, 2009. Not released.
    2.3.2   : Tagged on March 23, 2009. Not released.
    2.3.1   : Tagged on January 2, 2009. Not released.
    2.3.0   : Tagged on December 6, 2008. Not released.

Contributors looking for a mission:

  * Just do an egrep on "TODO" or "XXX" in the source.

  * Review the bug database at: http://issues.apache.org/bugzilla/

  * Review the "PatchAvailable" bugs in the bug database:

    https://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2&keywords=PatchAvailable

    After testing, you can append a comment saying "Reviewed and tested".

  * Open bugs in the bug database.

  * See also the STATUS file in the docs/ directory, which lists documentation-specific TODO items.


CURRENT RELEASE NOTES:

  * Forward binary compatibility is expected of Apache 2.4.x releases, such
    that no MMN major number changes will occur after 2.4.1.  Such changes can
    only be made in the trunk.

  * All commits to branches/2.4.x must be reflected in SVN trunk,
    as well, if they apply.  Logical progression is commit to trunk
    then merge into branches/2.4.x, as applicable.

  * Current exceptions for RTC for this branch:
    . mod_proxy_http2
    . mod_md
    . documentation
    . non-Unix build
    . non-Unix, single-platform code
    . routine APLOGNO() backports
    . .gdbinit
    . Travis integration: .travis.yml and test/travis*.sh
    . mod_tls

RELEASE SHOWSTOPPERS:


PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

PATCHES PROPOSED TO BACKPORT FROM TRUNK:
  [ New proposals should be added at the end of the list ]

  *) Add the ldap-search option to mod_authnz_ldap, allowing authorization
     to be based on arbitrary expressions that do not include the username.
     Make sure that when ldap searches are too long, we explicitly log the
     error.
     Trunk version of patch:
        https://svn.apache.org/r1589993
        https://svn.apache.org/r1591012
        https://svn.apache.org/r1596108
     Backport version for 2.4.x of patch:
        https://svn.apache.org/repos/asf/httpd/httpd/patches/2.4.x/httpd-2.4-ldap-search.patch
     +1: minfrin, jim,
     jailletc36: r1745033 seems related and should in included


PATCHES/ISSUES THAT ARE BEING WORKED
  [ New entries should be added at the START of the list ]

  *) mod_xml2enc: Correctly handle Microsoft OOXML documents.  PR 64339
     trunk patch: http://svn.apache.org/r1884505
     2.4.x patch: svn merge -c 1884505 ^/httpd/httpd/trunk .
     +1:
     jailletc36: there has been some discussion about how to fix the issue.
     I'm not sure that the commit above is the best solution
     and other alternatives have been discussed in PR 64339.  If r1884505
     is not the right fix, then it should be removed from trunk.
     Putting it here is a way to revive the discussion

  *) core: Initialize the request fields on read failure to avoid NULLs.
     trunk patch: http://svn.apache.org/r1893030
                  http://svn.apache.org/r1893044
     2.4.x patch: svn merge -c 1893030,1893044 ^/httpd/httpd/trunk .
     +1: ylavic,
     ylavic: still being discussed on dev@

  *) http: Don't remove the Content-Length of zero from a HEAD response if
     it comes from an origin server, module or script. Allow the previous
     behaviour (for legacy/buggy modules only, not origin) by also backporting
     the HttpContentLengthHeadZero directive (and also HttpExpectStrict which
     comes for free with the same commit).
     trunk patch: http://svn.apache.org/r1554303
                  http://svn.apache.org/r1678215
     2.4.x patch: http://people.apache.org/~ylavic/patches/httpd-2.4.x-preserve_head_cl_zero.patch
     +1: ylavic, jim
     ylavic: r1554303 issued a major MMN bump, but since the ABI change is two
             ints added at the end of core_server_config, the proposed merge
             does a minor bump only.
     minfrin: Two new directives need to be documented.

   * mod_proxy_http: Don't establish or reuse a backend connection before pre-
     fetching the request body, so to minimize the delay between it is supposed
     to be alive and the first bytes sent: this is a best effort to prevent the
     backend from closing because of idle or keepalive timeout in the meantime.
     Also, handle a new "proxy-flushall" environment variable which allows to
     flush any forwarded body data immediately. PR 56541+37920.
     trunk patch: http://svn.apache.org/r1656259
                  http://svn.apache.org/r1656359 (CHANGES entry)
     2.4.x patch: trunk works (modulo CHANGES, docs/log-message-tags)
     +1: ylavic
     -0: jim:  This seems to be a hit to normal performance, to handle an
               error and/or non-normal condition. The pre-fetch is
               expensive, and is always done, even before we know that
               the backend is available to rec' it. I understand the
               error described, but is the fix actually worth it (plus
               it seems to allow for a DDoS vector).
     ylavic: It seems to me that the problem is real since we reuse the
             connection before prefetching 16K (either controlled by the
             client, or by an input filter), we currently always prefetch
             these bytes already. Regarding performance I don't see any
             difference (more cycles) compared with the current code.
             However I think I failed to rebuild the header_brigade when
             the proxy loop is retried (ping), so I need to rework this.
             Do you think we'd better remove the prefetch, or maybe just
             make it nonblocking (by default)?
        jim: Non-blocking seems the best way to handle...

PATCHES/ISSUES THAT ARE STALLED

  *) core: avoid duplicate headers when using ap_send_error_response.
           From trunk's testing the code seems running fine without any side
           effects, so adding this change in here to have more reviews.
     trunk patch: http://svn.apache.org/r1832092
     2.4.x patch: svn merge -c 1832092 ^/httpd/httpd/trunk .
     +1: elukey
     +0.5: icing: as I read this, the change preserves the special status of headers in
         ->err_headers_out, since swapping the tables makes former error headers normal ones.
         But it is hard to see of this was ever intentional or not. Lack of regressions
         in testing may meaning someone out there relies on the former, unverified
         behaviour. OTOH, it fixes and error you saw and added test for. So, I am cautiously
         for the change.
     elukey: PR 62025 seems another use case that gets fixed using this patch
             (still need to get feedback from the reporter but on my local env it solves the problem).
     elukey: If anybody has time to review this change it would be great, to know if it needs to be reverted,
             reworked, etc.. I would like to avoid a patch that is clearly wrong for some reviewer sitting here for
             months/years without any action item :)
     ylavic: will look at it ASAP..

   * core: Add ap_errorlog_provider to make ErrorLog logging modular. This
           backport keeps syslog logging as part of httpd core and only adds
           API to allow other modules to be used for error logging.
     trunk patch: http://svn.apache.org/r1525597
                  http://svn.apache.org/r1525664
                  http://svn.apache.org/r1525845
                  http://svn.apache.org/r1527003
                  http://svn.apache.org/r1527005
                  http://svn.apache.org/r1532344
                  http://svn.apache.org/r1539988
                  http://svn.apache.org/r1541029
                  http://svn.apache.org/r1543979
                  http://svn.apache.org/r1544156
                  http://svn.apache.org/r1626978
     2.4.x patch: http://people.apache.org/~jkaluza/patches/httpd-2.4.x-errorlog_provider.patch
     +1: jkaluza
     +1: covener w/ doc or code to fix syntax (providername:providerarg not supported like syslog or socacheproviders,
                 needs 2 args which is not valid in ErrorLog manual)
                 Note: This also fixes syslog logging dropping messages with NULL server_rec by reaching up into ap_server_conf
                 explicitly.
     trawick: nit: fix "writing" in "/* NULL if we are writing to syslog */"
              (sorry, haven't finished reviewing completely)
     jim: What is the status of this??

   * core: Add support for systemd socket activation.
     trunk patch: http://svn.apache.org/r1511033
                  http://svn.apache.org/r1608686
                  http://svn.apache.org/r1608694
                  http://svn.apache.org/r1608703
                  http://svn.apache.org/r1608721
                  http://svn.apache.org/r1608744
     2.4.x patch: http://people.apache.org/~jkaluza/patches/mod_systemd/httpd-2.4.x-socket-activation.patch
     +1: jkaluza
     elukey: Some reading context in https://lists.apache.org/list.html?dev@httpd.apache.org:gte=1M:systemd%20socket%20activation
             Since mod_systemd has been backported, it would be nice to add this feature to httpd 2.4 as well. Thoughts?

  * mod_proxy: Ensure network errors detected by the proxy are returned as
    504 Gateway Timeout as opposed to 502 Bad Gateway
    trunk patch: https://svn.apache.org/viewvc?view=revision&revision=1480058
    2.4.x patch: trunk patch works modulo CHANGES
    +1:
    -1: rpluem: This change is still disputed. See
        http://mail-archives.apache.org/mod_mbox/httpd-dev/201305.mbox/%3C1B16B9E3-87BA-4EEF-939C-7C7313B54714%40gbiv.com%3E

  * cross-compile: allow to provide CC_FOR_BUILD so that gen_test_char will be
    compiled by the build compiler instead of the host compiler.
    Also set CC_FOR_BUILD to 'cc' when cross-compilation is detected.
    Trunk patches: http://svn.apache.org/viewvc?view=revision&revision=1327907
                   http://svn.apache.org/viewvc?view=revision&revision=1328390
                   http://svn.apache.org/viewvc?view=revision&revision=1328714
    2.4 patch: http://people.apache.org/~fuankg/diffs/httpd-2.4.x-cross_compile.diff
    fuankg: on hold until we agree for a better and more simple solution ...

   * Makefile.win: Added copying of .vbs / .wsf CGIs to Windows install target.
                   Moved fixing of shebang to separate target so that it is
                   no longer executed by default and all CGIs remain inactive.
     trunk patch: http://svn.apache.org/viewvc?view=revision&revision=1387984
                  http://svn.apache.org/viewvc?view=revision&revision=1421203
                  http://svn.apache.org/viewvc?view=revision&revision=1421591
     2.4.x patch: http://people.apache.org/~fuankg/diffs/httpd-2.4.x-Makefile.win.diff
     +1 fuankg, gsmith
     -.8: trawick
          This commit is essentially deciding that an httpd install on
          Windows now has printenv/testcgi written in 2 more languages.
          To the extent that the usefulness is that it shows how to make scripts
          of these types executable by httpd, I believe that the documentation
          is the proper place to solve that.  To the extent that the usefullness
          is to show how to implement a CGI in these particular languages, I believe
          that the httpd distribution and documentation in general is not the
          place for that.  Historically these types of scripts have caused problems
          for downstream vendorsas well as newbies (and sometimes the intersection
          of those two groups) who don't understand that these are information leaks
          once they are enabled, and the subtlety of the way they are disabled ("Apache
          messed up the first line; let me fix that") contributes to that.
     fuankg notes: I've just added a big warning to all CGI scripts which should now
          make absolutely clear that these CGIs are for testing purpose only - so those
          who enable those scripts with inserting the right shebang should be 100% aware
          of any risks (this should cover your last point).
     jim: trawick, does the above address your concerns?
     trawick: to some extent (somebody reading the script gets an idea)
          Why isn't the configuration requirement documented instead
          of described indirectly in a sample?
          Why are these new samples added to the install without three
          votes?  (I didn't veto it; put your name next to the two
          existing ones and I'll be satisfied that enough people
          considered this addition as an appropriate solution for a
          real httpd usability problem.)
     wrowe: I'd agree with trawick, and suggest that these scripts can begin
            their life somewhere in the manual/ tree.  This really seems like
            the place where /usr/share/httpd/examples/ would be useful, but
            there isn't an ordinary directory for that.  Since we want none
            of the scripts to function 'out of the box', what about a new
            cgi-examples/ dir alongside cgi-bin/? Otherwise manual/cgi/examples
            might work?

  *) mod_journald: Add new module mod_journald to log error logs into journald.
     trunk patch: http://svn.apache.org/r1610339
                  http://svn.apache.org/r1621806
                  http://svn.apache.org/r1812339
     2.4.x patch: http://people.apache.org/~jkaluza/patches/httpd-2.4.x-mod_journald.patch
                  http://svn.apache.org/r1812339
     +1: jkaluza, jim
     jchampion: Looks like the headers require GCC extensions to compile, so
                mod_journald can't be configured in maintainer mode (-std=c89).
                Can anyone else reproduce, or is it just my distro?
     ylavic: missing r1812339 for maintainer-mode/c89/-Werror compliance,
             needed if the above configure.in proposal gets backported.
             Note that r1812339 could be backported in any case, even if
             the above configure.in proposal does not get accepted.
