Commit 14929824 authored by Joe Orton's avatar Joe Orton
Browse files

Merge to current 2.4.x.

parents ee410c86 b13fe4b7
Loading
Loading
Loading
Loading
+35 −3
Original line number Diff line number Diff line
@@ -4,6 +4,34 @@ Changes with Apache 2.4.24

  *) mod_ssl: Add support for OpenSSL 1.1.0. [Rainer Jung]
 
  *) mod_dir: Responses that go through "FallbackResource" might appear to
     hang due to unterminated chunked encoding. PR58292. [Eric Covener]

  *) mod_dav: Fix a potential cause of unbounded memory usage or incorrect
     behavior in a routine that sends <DAV:response>'s to the output filters.
     [Evgeny Kotkov]

  *) mod_http2: new directive 'H2PushResource' to enable early pushes before 
     processing of the main request starts. Resources are announced to the 
     client in Link headers on a 103 early hint response. 
     All responses with status code <400 are inspected for Link header and
     trigger pushes accordingly. 304 still does prevent pushes.
     'H2PushResource' can mark resources as 'critical' which gives them higher
     priority than the main resource. This leads to preferred scheduling for
     processing and, when content is available, will send it first. 'critical'
     is also recognized on Link headers. [Stefan Eissing]
     
  *) mod_proxy_http2: uris in Link headers are now mapped back to a suitable
     local url when available. Relative uris with an absolute path are mapped
     as well. This makes reverse proxy mapping available for resources
     announced in this header. 
     With 103 interim responses being forwarded to the main client connection,
     this effectively allows early pushing of resources by a reverse proxied
     backend server. [Stefan Eissing]
     
  *) mod_proxy_http2: adding support for newly proposed 103 status code.
     [Stefan Eissing]
     
  *) mpm_unix: Apache fails to start if previously crashed then restarted with
     the same PID (e.g. in container).  PR 60261.
     [Val <valentin.bremond gmail.com>, Yann Ylavic]
@@ -84,9 +112,10 @@ Changes with Apache 2.4.24
  *) mod_proxy_fcgi: avoid loops when ProxyErrorOverride is enabled
     and the error documents are proxied. PR 55415. [Luca Toscano]

  *) mod_proxy_fcgi: read the whole FCGI response even when the content has
     not been modified (HTTP 304) to avoid subsequent bougus reads and
     confusing error messages logged. [Luca Toscano]
  *) mod_proxy_fcgi: read the whole FCGI response even when the content
     has not been modified (HTTP 304) or in case of a precondition failure
     (HTTP 412) to avoid subsequent bogus reads and confusing
     error messages logged. [Luca Toscano]

  *) mod_http2: h2 status resource follows latest draft, see
     http://www.ietf.org/id/draft-benfield-http2-debug-state-01.txt
@@ -148,6 +177,9 @@ Changes with Apache 2.4.22

Changes with Apache 2.4.21

  *) ab: Use caseless matching for HTTP tokens (e.g. content-length). PR 59111.
     [Yann Ylavic]

  *) mod_http2: more rigid error handling in DATA frame assembly, leading
     to deterministic connection errors if assembly fails.
     [Stefan Eissing, Pal Nilsen <https://github.com/maedox>]
+16 −15
Original line number Diff line number Diff line
@@ -125,7 +125,8 @@ GET_MOD_ENABLE_RANK("ENABLE_MODULES setting" ${ENABLE_MODULES} enable_modules_ra
# not defined to either 1 or 0)

MACRO(CHECK_APR_FEATURE which_define)
  CHECK_SYMBOL_EXISTS(${which_define} "${APR_INCLUDE_DIR}/apr.h;${APR_INCLUDE_DIR}/apu.h" tmp_${which_define})
  SET(CMAKE_REQUIRED_INCLUDES "${APR_INCLUDE_DIR}")
  CHECK_SYMBOL_EXISTS(${which_define} "apr.h;apu.h" tmp_${which_define})
  IF(${tmp_${which_define}})
    CHECK_C_SOURCE_COMPILES("#include \"${APR_INCLUDE_DIR}/apr.h\"
      #include \"${APR_INCLUDE_DIR}/apu.h\"
@@ -724,12 +725,12 @@ FOREACH (mod ${MODULE_PATHS})
    SET(all_mod_sources ${tmp_mod_main_source} ${${mod_extra_sources}})
    ADD_LIBRARY(${mod_name} SHARED ${all_mod_sources} build/win32/httpd.rc)
    SET(install_modules ${install_modules} ${mod_name})
    SET(install_modules_pdb ${install_modules_pdb} "${PROJECT_BINARY_DIR}/${mod_name}.pdb")
    SET(install_modules_pdb ${install_modules_pdb} "$<TARGET_PDB_FILE:${mod_name}>")
    IF("${${mod_name}_install_lib}")
      SET(installed_mod_libs_exps
          ${installed_mod_libs_exps}
          "${PROJECT_BINARY_DIR}/${mod_name}.lib"
          "${PROJECT_BINARY_DIR}/${mod_name}.exp"
          "$<TARGET_LINKER_FILE:${mod_name}>"
          "$<TARGET_LINKER_FILE_DIR:${mod_name}>/${mod_name}.exp"
      )
    ENDIF()
    SET(mod_extra_libs "${mod_name}_extra_libs")
@@ -764,7 +765,7 @@ SET_TARGET_PROPERTIES(libhttpd PROPERTIES
  LINK_FLAGS /base:@${PROJECT_BINARY_DIR}/BaseAddr.ref,libhttpd.dll
)
SET(install_targets ${install_targets} libhttpd)
SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/libhttpd.pdb)
SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:libhttpd>)
TARGET_LINK_LIBRARIES(libhttpd ${EXTRA_LIBS} ${APR_LIBRARIES} ${PCRE_LIBRARIES} ${HTTPD_SYSTEM_LIBS})
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server Core")
SET_TARGET_PROPERTIES(libhttpd PROPERTIES COMPILE_FLAGS "-DAP_DECLARE_EXPORT ${define_long_name} -DBIN_NAME=libhttpd.dll ${EXTRA_COMPILE_FLAGS}")
@@ -773,7 +774,7 @@ ADD_DEPENDENCIES(libhttpd test_char_header)
###########   HTTPD EXECUTABLES   ##########
ADD_EXECUTABLE(httpd server/main.c build/win32/httpd.rc)
SET(install_targets ${install_targets} httpd)
SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/httpd.pdb)
SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:httpd>)
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server")
SET_TARGET_PROPERTIES(httpd PROPERTIES COMPILE_FLAGS "-DAPP_FILE ${define_long_name} -DBIN_NAME=httpd.exe -DICON_FILE=${CMAKE_SOURCE_DIR}/build/win32/apache.ico ${EXTRA_COMPILE_FLAGS}")
TARGET_LINK_LIBRARIES(httpd libhttpd ${EXTRA_LIBS})
@@ -796,7 +797,7 @@ FOREACH(pgm ${standard_support})
  SET(extra_sources ${pgm}_extra_sources)
  ADD_EXECUTABLE(${pgm} support/${pgm}.c ${${extra_sources}} build/win32/httpd.rc)
  SET(install_targets ${install_targets} ${pgm})
  SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/${pgm}.pdb)
  SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:${pgm}>)
  DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server ${pgm} program")
  SET_TARGET_PROPERTIES(${pgm} PROPERTIES COMPILE_FLAGS "-DAPP_FILE ${define_long_name} -DBIN_NAME=${pgm}.exe ${EXTRA_COMPILE_FLAGS}")
  TARGET_LINK_LIBRARIES(${pgm} ${EXTRA_LIBS} ${APR_LIBRARIES})
@@ -805,7 +806,7 @@ ENDFOREACH()
IF(OPENSSL_FOUND)
  ADD_EXECUTABLE(abs support/ab.c build/win32/httpd.rc)
  SET(install_targets ${install_targets} abs)
  SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/abs.pdb)
  SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:abs>)
  SET_TARGET_PROPERTIES(abs PROPERTIES COMPILE_DEFINITIONS HAVE_OPENSSL)
  SET(tmp_includes ${HTTPD_INCLUDE_DIRECTORIES} ${OPENSSL_INCLUDE_DIR})
  SET_TARGET_PROPERTIES(abs PROPERTIES INCLUDE_DIRECTORIES "${tmp_includes}")
@@ -818,7 +819,7 @@ GET_PROPERTY(tmp_includes TARGET ab PROPERTY INCLUDE_DIRECTORIES)
# getting duplicate manifest error with ApacheMonitor
# ADD_EXECUTABLE(ApacheMonitor support/win32/ApacheMonitor.c support/win32/ApacheMonitor.rc)
# SET(install_targets ${install_targets} ApacheMonitor)
# SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/ApacheMonitor.pdb)
# SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:ApacheMonitor>)
# SET_TARGET_PROPERTIES(ApacheMonitor PROPERTIES WIN32_EXECUTABLE TRUE)
# SET_TARGET_PROPERTIES(ApacheMonitor PROPERTIES COMPILE_FLAGS "-DAPP_FILE -DLONG_NAME=ApacheMonitor -DBIN_NAME=ApacheMonitor.exe ${EXTRA_COMPILE_FLAGS}")
# TARGET_LINK_LIBRARIES(ApacheMonitor ${EXTRA_LIBS} ${HTTPD_SYSTEM_LIBS} comctl32 wtsapi32)
@@ -875,7 +876,7 @@ INSTALL(DIRECTORY include/ DESTINATION include
)
INSTALL(FILES ${other_installed_h} DESTINATION include)
INSTALL(FILES ${installed_mod_libs_exps} DESTINATION lib)
INSTALL(FILES "${CMAKE_BINARY_DIR}/libhttpd.exp" DESTINATION LIB)
INSTALL(FILES "$<TARGET_LINKER_FILE_DIR:libhttpd>/libhttpd.exp" DESTINATION LIB)

IF(INSTALL_MANUAL) # Silly?  This takes a while, and a dev doesn't need it.
  INSTALL(DIRECTORY docs/manual/ DESTINATION manual)
@@ -884,22 +885,22 @@ ENDIF()
INSTALL(DIRECTORY DESTINATION logs)
INSTALL(DIRECTORY DESTINATION cgi-bin)

INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl ${CMAKE_CURRENT_SOURCE_DIR}/docs/error ${CMAKE_INSTALL_PREFIX}/error ifdestmissing)")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl \"${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl\" \"${CMAKE_CURRENT_SOURCE_DIR}/docs/error\" \"${CMAKE_INSTALL_PREFIX}/error\" ifdestmissing)")

INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl ${CMAKE_CURRENT_SOURCE_DIR}/docs/docroot ${CMAKE_INSTALL_PREFIX}/htdocs ifdestmissing)")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl \"${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl\" \"${CMAKE_CURRENT_SOURCE_DIR}/docs/docroot\" \"${CMAKE_INSTALL_PREFIX}/htdocs\" ifdestmissing)")

INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl ${CMAKE_CURRENT_SOURCE_DIR}/docs/icons ${CMAKE_INSTALL_PREFIX}/icons ifdestmissing)")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl \"${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl\" \"${CMAKE_CURRENT_SOURCE_DIR}/docs/icons\" \"${CMAKE_INSTALL_PREFIX}/icons\" ifdestmissing)")

# Copy generated .conf files from the build directory to the install,
# without overwriting stuff already there.
INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl ${CMAKE_BINARY_DIR}/conf ${CMAKE_INSTALL_PREFIX}/conf)")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND perl \"${CMAKE_CURRENT_SOURCE_DIR}/build/cpR_noreplace.pl\" \"${CMAKE_BINARY_DIR}/conf\" \"${CMAKE_INSTALL_PREFIX}/conf\")")
# But conf/original is supposed to be overwritten.
# Note: FILE(TO_NATIVE_PATH ...) leaves the backslashes unescaped, which
#       generates warnings.  Just do it manually since this build only supports
#       Windows anyway.
STRING(REPLACE "/" "\\\\" native_src ${CMAKE_BINARY_DIR}/conf/original)
STRING(REPLACE "/" "\\\\" native_dest ${CMAKE_INSTALL_PREFIX}/conf/original)
INSTALL(CODE "EXECUTE_PROCESS(COMMAND xcopy ${native_src} ${native_dest} /Q /S /Y)")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND xcopy \"${native_src}\" \"${native_dest}\" /Q /S /Y)")

STRING(TOUPPER "${CMAKE_BUILD_TYPE}" buildtype)
MESSAGE(STATUS "")
+52 −21
Original line number Diff line number Diff line
@@ -117,11 +117,10 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

  *) core: avoid adding multiple subrequest filters when there are nested 
     subrequests.  PR58292
     trunk patch:  http://svn.apache.org/r1698334
     2.4.x patch:  trunk works modulo CHANGES
     +1:  covener, jim, jchampion
  *) Remove unnecessary apr_table_do() function casts.
     trunk patch: http://svn.apache.org/r1769192
     2.4.x patch: trunk works
     +1: jchampion, rpluem, sf


PATCHES PROPOSED TO BACKPORT FROM TRUNK:
@@ -157,13 +156,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK:
     headers (GMT now, GMT now Europe/Paris, GMT tomorrow, GMT yesterday, PST now).
     +1: elukey

  *) CMake: fix various issues for Windows/Visual Studio build environments.
     PR59685.
     trunk patch: http://svn.apache.org/r1752331
                  http://svn.apache.org/r1752332
                  http://svn.apache.org/r1752333
     +1: jchampion, jim (by inspection)

  *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate
     in the client certificate chain.  PR 55786.
     trunk patch: http://svn.apache.org/r1756542
@@ -224,15 +216,54 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK:
     2.4.x patch: trunk works
     +1: jim

  *) Remove unnecessary apr_table_do() function casts.
     trunk patch: http://svn.apache.org/r1769192
     2.4.x patch: trunk works
     +1: jchampion, rpluem

  *) ssl: clear the error queue before SSL_read/write/accept(). PR60223
     trunk patch: http://svn.apache.org/r1769332
     2.4.x patch: https://home.apache.org/~jchampion/patches/2.4.x-ssl-error-queue.patch
     +1: jchampion, rpluem
  *) Propose default strict RFC7230 behavior, and HttpProtocolOptions directive
     to relax or further constrain some behaviors.
     trunk patches: too numerous to list, see 
       svn log --stop-on-copy http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/
     2.4.x patch: see
       svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/
     +1: wrowe

  *) ap_reclaim_child_processes(): Implement terminate immediately
     trunk patches:
       https://svn.apache.org/r1757061
       https://svn.apache.org/r1770750
     2.4.x patch: https://people.apache.org/~sf/PR53555_1_ap_reclaim_child_processes.diff
     +1: sf

  *) Improve mod_status view of async connections
     trunk patches:
       https://svn.apache.org/r1738628
       https://svn.apache.org/r1757009
       https://svn.apache.org/r1756848
       https://svn.apache.org/r1757029
     2.4.x patch: https://people.apache.org/~sf/PR53555_2_mod_status.diff
     +1: sf

  *) mpm_event: Free resources earlier during shutdown
     trunk patches:
       https://svn.apache.org/r1705922
       https://svn.apache.org/r1706523
       https://svn.apache.org/r1738464
       https://svn.apache.org/r1738466
       https://svn.apache.org/r1738486
     2.4.x patch: https://people.apache.org/~sf/PR53555_3_free_early.diff
     +1: sf

  *) mpm_event: Use all free scoreboard slots up to ServerLimit, but don't
     re-use scoreboard slots of still running, gracefully finishing processes.
     PR: 53555
     trunk patches:
       https://svn.apache.org/r1738631
       https://svn.apache.org/r1738633
       https://svn.apache.org/r1738635
       https://svn.apache.org/r1757030
       https://svn.apache.org/r1757031
       https://svn.apache.org/r1770752
       https://svn.apache.org/r1770768
     2.4.x patch: https://people.apache.org/~sf/PR53555_4_use_all_slots.diff
     docs: https://svn.apache.org/r1770771 (in addition to the above)
     +1: sf


PATCHES/ISSUES THAT ARE BEING WORKED
+1 −0
Original line number Diff line number Diff line
@@ -295,6 +295,7 @@
<li><a href="mod_http2.html#h2push">H2Push</a></li>
<li><a href="mod_http2.html#h2pushdiarysize">H2PushDiarySize</a></li>
<li><a href="mod_http2.html#h2pushpriority">H2PushPriority</a></li>
<li><a href="mod_http2.html#h2pushresource">H2PushResource</a></li>
<li><a href="mod_http2.html#h2serializeheaders">H2SerializeHeaders</a></li>
<li><a href="mod_http2.html#h2sessionextrafiles">H2SessionExtraFiles</a></li>
<li><a href="mod_http2.html#h2streammaxmemsize">H2StreamMaxMemSize</a></li>
+1 −0
Original line number Diff line number Diff line
@@ -295,6 +295,7 @@
<li><a href="mod_http2.html#h2push">H2Push</a></li>
<li><a href="mod_http2.html#h2pushdiarysize">H2PushDiarySize</a></li>
<li><a href="mod_http2.html#h2pushpriority">H2PushPriority</a></li>
<li><a href="mod_http2.html#h2pushresource">H2PushResource</a></li>
<li><a href="mod_http2.html#h2serializeheaders">H2SerializeHeaders</a></li>
<li><a href="mod_http2.html#h2sessionextrafiles">H2SessionExtraFiles</a></li>
<li><a href="mod_http2.html#h2streammaxmemsize">H2StreamMaxMemSize</a></li>
Loading