Skip to content

Commit d24fe29

Browse files
authored
Merge branch 'apache:trunk' into apr-2-ldap
2 parents 2fd0919 + 374474b commit d24fe29

File tree

455 files changed

+3491
-1981
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

455 files changed

+3491
-1981
lines changed

.github/workflows/linux.yml

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ on:
2121
env:
2222
MARGS: "-j2"
2323
CFLAGS: "-g"
24+
# This will need updating as the ubuntu-latest image changes:
25+
PHP_FPM: "/usr/sbin/php-fpm8.1"
2426

2527
jobs:
2628
build:
2729
strategy:
2830
fail-fast: false
2931
matrix:
30-
include:
32+
include:
3133
# -------------------------------------------------------------------------
3234
- name: Empty APLOGNO() test
3335
env: |
@@ -169,6 +171,19 @@ jobs:
169171
TEST_ARGS="-defines LDAP"
170172
TESTS="t/modules/"
171173
# -------------------------------------------------------------------------
174+
- name: APR 1.7.x, APR-util 1.7.x, LDAP
175+
config: --enable-mods-shared=reallyall
176+
pkgs: ldap-utils
177+
env: |
178+
APR_VERSION=1.7.x
179+
APU_VERSION=1.7.x
180+
APU_CONFIG="--with-crypto --with-ldap"
181+
TEST_MALLOC=1
182+
TEST_LDAP=1
183+
TEST_ARGS="-defines LDAP"
184+
TESTS="t/modules/"
185+
CLEAR_CACHE=1
186+
# -------------------------------------------------------------------------
172187
### TODO: if: *condition_not_24x
173188
- name: APR trunk thread debugging
174189
config: --enable-mods-shared=reallyall --with-mpm=event
@@ -241,7 +256,7 @@ jobs:
241256
APR_VERSION=1.7.4
242257
APU_VERSION=1.6.3
243258
APU_CONFIG="--with-crypto"
244-
RUSTLS_VERSION="v0.10.0"
259+
RUSTLS_VERSION="v0.13.0"
245260
NO_TEST_FRAMEWORK=1
246261
TEST_INSTALL=1
247262
TEST_MOD_TLS=1
@@ -271,7 +286,7 @@ jobs:
271286
- name: OpenSSL 3.1
272287
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
273288
env: |
274-
TEST_OPENSSL3=3.1.5
289+
TEST_OPENSSL3=3.1.6
275290
APR_VERSION=1.7.4
276291
APU_VERSION=1.6.3
277292
APU_CONFIG="--without-crypto"
@@ -280,24 +295,25 @@ jobs:
280295
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
281296
notest-cflags: -Werror -O2 -Wno-deprecated-declarations
282297
env: |
283-
TEST_OPENSSL3=3.2.1
298+
TEST_OPENSSL3=3.2.2
284299
APR_VERSION=1.7.4
285300
APU_VERSION=1.6.3
286301
APU_CONFIG="--without-crypto"
287302
# -------------------------------------------------------------------------
288303
- name: OpenSSL 3.2 no-engine
289304
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
290305
env: |
291-
TEST_OPENSSL3=3.2.1
306+
TEST_OPENSSL3=3.2.2
292307
OPENSSL_CONFIG=no-engine
293308
APR_VERSION=1.7.4
294309
APU_VERSION=1.6.3
295310
APU_CONFIG="--without-crypto"
296311
# -------------------------------------------------------------------------
297-
- name: OpenSSL 3.3 (alpha) no-engine
312+
- name: OpenSSL 3.3 no-engine -Werror
298313
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
314+
notest-cflags: -Werror -O2
299315
env: |
300-
TEST_OPENSSL3=3.3.0-alpha1
316+
TEST_OPENSSL3=3.3.1
301317
OPENSSL_CONFIG=no-engine
302318
APR_VERSION=1.7.4
303319
APU_VERSION=1.6.3
@@ -324,7 +340,7 @@ jobs:
324340
cpanminus libtool-bin libapr1-dev libaprutil1-dev
325341
liblua5.3-dev libbrotli-dev libcurl4-openssl-dev
326342
libnghttp2-dev libjansson-dev libpcre2-dev gdb
327-
perl-doc ${{ matrix.pkgs }}
343+
perl-doc libsasl2-dev ${{ matrix.pkgs }}
328344
- uses: actions/checkout@v4
329345
- name: Cache installed libraries
330346
uses: actions/cache@v4

.github/workflows/windows.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Windows
2+
3+
on:
4+
push:
5+
branches: [ "*" ]
6+
paths-ignore:
7+
- 'docs/**'
8+
- STATUS
9+
- CHANGES
10+
- changes-entries/*
11+
pull_request:
12+
branches: [ "trunk", "2.4.x" ]
13+
paths-ignore:
14+
- 'docs/**'
15+
- STATUS
16+
- CHANGES
17+
- changes-entries/*
18+
19+
jobs:
20+
build:
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
include:
25+
- name: Default
26+
triplet: x64-windows
27+
arch: x64
28+
build-type: Debug
29+
generator: "Ninja"
30+
31+
runs-on: windows-latest
32+
timeout-minutes: 30
33+
name: ${{ matrix.name }}
34+
env:
35+
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
36+
steps:
37+
- name: Export GitHub Actions cache environment variables
38+
uses: actions/github-script@v7
39+
with:
40+
script: |
41+
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
42+
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
43+
44+
- name: Install dependencies
45+
run: vcpkg install --triplet ${{ matrix.triplet }} apr[private-headers] apr-util pcre2 openssl
46+
47+
- uses: actions/checkout@v3
48+
49+
- name: Configure CMake
50+
shell: cmd
51+
run: |
52+
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=${{ matrix.arch }}
53+
cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} ^
54+
-G "${{ matrix.generator }}" ^
55+
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ^
56+
-DAPR_INCLUDE_DIR=C:/vcpkg/installed/${{ matrix.triplet }}/include ^
57+
"-DAPR_LIBRARIES=C:/vcpkg/installed/${{ matrix.triplet }}/lib/libapr-1.lib;C:/vcpkg/installed/${{ matrix.triplet }}/lib/libaprutil-1.lib"
58+
59+
- name: Build
60+
shell: cmd
61+
run: |
62+
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=${{ matrix.arch }}
63+
cmake --build ${{github.workspace}}/build --config ${{ matrix.build-type }}

.gitignore

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,19 @@ Release
7676
/build/config.sub
7777
/build/config.guess
7878
/build/config_vars.sh
79+
/build/confdefs.h
80+
/build/config.log
81+
/build/config.nice
82+
/build/srclib/
83+
/build/srclib/pth
84+
/build/srclib/apr
85+
/build/srclib/apr-util
86+
/build/srclib/apr-iconv
87+
/build/srclib/distcache
88+
/build/srclib/lua
89+
/build/srclib/pcre
90+
/build/srclib/openssl
91+
/build/srclib/zlib
7992

8093
# /build/pkg/
8194
/build/pkg/pkginfo
@@ -371,4 +384,4 @@ test/*/*/__pycache__
371384

372385
# make check
373386
check
374-
build/config_vars.out
387+
build/config_vars.out

CMakeLists.txt

Lines changed: 57 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ PROJECT(HTTPD C)
2323

2424
INCLUDE(CheckSymbolExists)
2525
INCLUDE(CheckCSourceCompiles)
26+
INCLUDE("build/build-modules-c.cmake")
2627

2728
FIND_PACKAGE(LibXml2)
2829
FIND_PACKAGE(Lua51)
2930
FIND_PACKAGE(OpenSSL)
3031
FIND_PACKAGE(ZLIB)
3132
FIND_PACKAGE(CURL)
33+
FIND_PACKAGE(PCRE2 COMPONENTS 8BIT)
3234

3335
# Options for support libraries not supported by cmake-bundled FindFOO
3436

@@ -49,7 +51,10 @@ ENDIF()
4951
# PCRE names its libraries differently for debug vs. release builds.
5052
# We can't query our own CMAKE_BUILD_TYPE at configure time.
5153
# If the debug version exists in PREFIX/lib, default to that one.
52-
IF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/pcre2-8d.lib")
54+
IF(PCRE2_FOUND)
55+
SET(default_pcre_libraries "PCRE2::8BIT")
56+
SET(default_pcre_cflags "-DHAVE_PCRE2")
57+
ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/pcre2-8d.lib")
5358
SET(default_pcre_libraries ${CMAKE_INSTALL_PREFIX}/lib/pcre2-8d.lib)
5459
SET(default_pcre_cflags "-DHAVE_PCRE2")
5560
ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/pcre2-8.lib")
@@ -137,16 +142,6 @@ FOREACH(onelib ${APR_LIBRARIES})
137142
ENDIF()
138143
ENDFOREACH()
139144

140-
MACRO(DEFINE_WITH_BLANKS output_definition input_symbol input_value)
141-
IF(MSVC_IDE OR ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.11)
142-
SET(${output_definition} "-D${input_symbol}=\"${input_value}\"")
143-
ELSE()
144-
# command-line tool + older cmake, where extra quotes must be added and
145-
# escaped to survive
146-
SET(${output_definition} "-D${input_symbol}=\"\\\"${input_value}\\\"\"")
147-
ENDIF()
148-
ENDMACRO()
149-
150145
MACRO(GET_MOD_ENABLE_RANK macro_modname macro_mod_enable_val macro_output_rank)
151146
IF(${macro_mod_enable_val} STREQUAL "O")
152147
SET(${macro_output_rank} 0)
@@ -558,6 +553,10 @@ IF(LIBXML2_FOUND)
558553
ENDIF()
559554
SET(mod_proxy_scgi_extra_libs mod_proxy)
560555
SET(mod_proxy_wstunnel_extra_libs mod_proxy)
556+
SET(mod_lbmethod_bybusyness_extra_libs mod_proxy)
557+
SET(mod_lbmethod_bytraffic_extra_libs mod_proxy)
558+
SET(mod_lbmethod_byrequests_extra_libs mod_proxy)
559+
SET(mod_lbmethod_heartbeat_extra_libs mod_proxy)
561560
SET(mod_proxy_http2_requires NGHTTP2_FOUND)
562561
SET(mod_proxy_http2_extra_defines ssize_t=long)
563562
SET(mod_proxy_http2_extra_includes ${NGHTTP2_INCLUDE_DIR})
@@ -648,26 +647,20 @@ SET(install_targets)
648647
SET(install_bin_pdb)
649648
SET(install_modules) # special handling vs. other installed targets
650649
SET(install_modules_pdb)
651-
SET(builtin_module_shortnames "win32 mpm_winnt http so") # core added automatically
650+
SET(builtin_module_shortnames)
651+
LIST(APPEND builtin_module_shortnames "win32" "mpm_winnt" "http" "so") # core added automatically
652652
SET(extra_builtin_modules) # the ones specified with -DWITH_MODULES=
653653

654-
IF(WITH_MODULES) # modules statically linked with the server
655-
STRING(REPLACE "," ";" WITH_MODULE_LIST ${WITH_MODULES})
656-
FOREACH(static_mod ${WITH_MODULE_LIST})
657-
STRING(REGEX MATCH "[^/]+\\.c" mod_basename ${static_mod})
658-
STRING(REGEX REPLACE "^mod_(.*)\\.c" "\\1" mod_module_name ${mod_basename})
659-
SET(builtin_module_shortnames "${builtin_module_shortnames} ${mod_module_name}")
660-
CONFIGURE_FILE(${static_mod} ${PROJECT_BINARY_DIR}/ COPYONLY)
661-
SET(extra_builtin_modules ${extra_builtin_modules} ${PROJECT_BINARY_DIR}/${mod_basename})
662-
ENDFOREACH()
663-
EXECUTE_PROCESS(COMMAND cmd /c "echo ${builtin_module_shortnames}| awk -f ${CMAKE_CURRENT_SOURCE_DIR}/build/build-modules-c.awk > ${PROJECT_BINARY_DIR}/modules.c" RESULT_VARIABLE rv)
664-
IF(rv)
665-
MESSAGE(FATAL_ERROR "build-modules-c.awk failed (${rv})")
666-
ENDIF()
667-
ELSE()
668-
# no extra built-in modules; use the default modules.c to avoid the awk prereq
669-
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/os/win32/modules.c ${PROJECT_BINARY_DIR}/ COPYONLY)
670-
ENDIF()
654+
STRING(REPLACE "," ";" WITH_MODULE_LIST "${WITH_MODULES}")
655+
FOREACH(static_mod ${WITH_MODULE_LIST})
656+
STRING(REGEX MATCH "[^/]+\\.c" mod_basename ${static_mod})
657+
STRING(REGEX REPLACE "^mod_(.*)\\.c" "\\1" mod_module_name ${mod_basename})
658+
LIST(APPEND builtin_module_shortnames "${mod_module_name}")
659+
CONFIGURE_FILE(${static_mod} ${PROJECT_BINARY_DIR}/ COPYONLY)
660+
SET(extra_builtin_modules ${extra_builtin_modules} ${PROJECT_BINARY_DIR}/${mod_basename})
661+
ENDFOREACH()
662+
663+
generate_builtin_modules_c("${PROJECT_BINARY_DIR}/modules.c" "${builtin_module_shortnames}")
671664

672665
# for easy reference from .dll/.so builds
673666
CONFIGURE_FILE(os/win32/BaseAddr.ref ${PROJECT_BINARY_DIR}/ COPYONLY)
@@ -893,8 +886,11 @@ FOREACH (mod ${MODULE_PATHS})
893886
LINK_FLAGS /base:@${PROJECT_BINARY_DIR}/BaseAddr.ref,${mod_name}.so
894887
)
895888
TARGET_LINK_LIBRARIES(${mod_name} ${${mod_extra_libs}} libhttpd ${EXTRA_LIBS} ${APR_LIBRARIES} ${HTTPD_SYSTEM_LIBS})
896-
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "${mod_name} for Apache HTTP Server")
897-
SET_TARGET_PROPERTIES(${mod_name} PROPERTIES COMPILE_FLAGS "${define_long_name} -DBIN_NAME=${mod_name}.so ${EXTRA_COMPILE_FLAGS}")
889+
TARGET_COMPILE_DEFINITIONS(${mod_name} PRIVATE
890+
"LONG_NAME=${mod_name} for Apache HTTP Server"
891+
"BIN_NAME=${mod_name}.so"
892+
)
893+
TARGET_COMPILE_OPTIONS(${mod_name} PRIVATE "${EXTRA_COMPILE_FLAGS}")
898894

899895
# Extra defines?
900896
SET(mod_extra_defines "${mod_name}_extra_defines")
@@ -921,17 +917,27 @@ SET_TARGET_PROPERTIES(libhttpd PROPERTIES
921917
SET(install_targets ${install_targets} libhttpd)
922918
SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:libhttpd>)
923919
TARGET_LINK_LIBRARIES(libhttpd ${EXTRA_LIBS} ${APR_LIBRARIES} ${PCRE_LIBRARIES} ${HTTPD_SYSTEM_LIBS})
924-
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server Core")
925-
SET_TARGET_PROPERTIES(libhttpd PROPERTIES COMPILE_FLAGS "-DAP_DECLARE_EXPORT -DAPREQ_DECLARE_EXPORT ${define_long_name} ${PCRE_CFLAGS} -DBIN_NAME=libhttpd.dll ${EXTRA_COMPILE_FLAGS}")
920+
TARGET_COMPILE_DEFINITIONS(libhttpd PRIVATE
921+
"LONG_NAME=Apache HTTP Server Core"
922+
"BIN_NAME=libhttpd.dll"
923+
"AP_DECLARE_EXPORT"
924+
"APREQ_DECLARE_EXPORT"
925+
)
926+
TARGET_COMPILE_OPTIONS(libhttpd PRIVATE ${PCRE_CFLAGS} ${EXTRA_COMPILE_FLAGS})
926927
ADD_DEPENDENCIES(libhttpd test_char_header)
927928

928929
########### HTTPD EXECUTABLES ##########
929930
ADD_EXECUTABLE(httpd server/main.c build/win32/httpd.rc)
930931
SET(install_targets ${install_targets} httpd)
931932
SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:httpd>)
932-
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server")
933+
TARGET_COMPILE_DEFINITIONS(httpd PRIVATE
934+
"APP_FILE"
935+
"LONG_NAME=Apache HTTP Server"
936+
"BIN_NAME=httpd.exe"
937+
"ICON_FILE=${CMAKE_SOURCE_DIR}/build/win32/apache.ico"
938+
)
939+
TARGET_COMPILE_OPTIONS(httpd PRIVATE "${EXTRA_COMPILE_FLAGS}")
933940
SET_TARGET_PROPERTIES(httpd PROPERTIES
934-
COMPILE_FLAGS "-DAPP_FILE ${define_long_name} -DBIN_NAME=httpd.exe -DICON_FILE=${CMAKE_SOURCE_DIR}/build/win32/apache.ico ${EXTRA_COMPILE_FLAGS}"
935941
LINK_FLAGS "/stack:0x40000"
936942
)
937943
TARGET_LINK_LIBRARIES(httpd libhttpd ${EXTRA_LIBS})
@@ -954,8 +960,12 @@ FOREACH(pgm ${standard_support})
954960
ADD_EXECUTABLE(${pgm} support/${pgm}.c ${${extra_sources}} build/win32/httpd.rc)
955961
SET(install_targets ${install_targets} ${pgm})
956962
SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:${pgm}>)
957-
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server ${pgm} program")
958-
SET_TARGET_PROPERTIES(${pgm} PROPERTIES COMPILE_FLAGS "-DAPP_FILE ${define_long_name} -DBIN_NAME=${pgm}.exe ${EXTRA_COMPILE_FLAGS}")
963+
TARGET_COMPILE_DEFINITIONS(${pgm} PRIVATE
964+
"APP_FILE"
965+
"LONG_NAME=Apache HTTP Server ${pgm} program"
966+
"BIN_NAME=${pgm}.exe"
967+
)
968+
TARGET_COMPILE_OPTIONS(${mod_name} PRIVATE "${EXTRA_COMPILE_FLAGS}")
959969
TARGET_LINK_LIBRARIES(${pgm} ${EXTRA_LIBS} ${APR_LIBRARIES})
960970
ENDFOREACH()
961971

@@ -964,8 +974,11 @@ SET(install_targets ${install_targets} ab)
964974
SET(install_bin_pdb ${install_bin_pdb} $<TARGET_PDB_FILE:ab>)
965975
SET(tmp_includes ${HTTPD_INCLUDE_DIRECTORIES})
966976
SET_TARGET_PROPERTIES(ab PROPERTIES INCLUDE_DIRECTORIES "${tmp_includes}")
967-
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server ab program")
968-
SET_TARGET_PROPERTIES(ab PROPERTIES COMPILE_FLAGS "-DAPP_FILE ${define_long_name} -DBIN_NAME=ab.exe ${EXTRA_COMPILE_FLAGS}")
977+
TARGET_COMPILE_DEFINITIONS(ab PRIVATE
978+
"APP_FILE"
979+
"LONG_NAME=Apache HTTP Server ab program"
980+
"BIN_NAME=ab.exe"
981+
)
969982
TARGET_LINK_LIBRARIES(ab ${EXTRA_LIBS} ${APR_LIBRARIES} Ws2_32.lib)
970983

971984
IF(OPENSSL_FOUND)
@@ -975,8 +988,11 @@ IF(OPENSSL_FOUND)
975988
SET_TARGET_PROPERTIES(abs PROPERTIES COMPILE_DEFINITIONS HAVE_OPENSSL)
976989
SET(tmp_includes ${HTTPD_INCLUDE_DIRECTORIES} ${OPENSSL_INCLUDE_DIR})
977990
SET_TARGET_PROPERTIES(abs PROPERTIES INCLUDE_DIRECTORIES "${tmp_includes}")
978-
DEFINE_WITH_BLANKS(define_long_name "LONG_NAME" "Apache HTTP Server ab/SSL program")
979-
SET_TARGET_PROPERTIES(abs PROPERTIES COMPILE_FLAGS "-DAPP_FILE ${define_long_name} -DBIN_NAME=abs.exe ${EXTRA_COMPILE_FLAGS}")
991+
TARGET_COMPILE_DEFINITIONS(abs PRIVATE
992+
"APP_FILE"
993+
"LONG_NAME=Apache HTTP Server ab/SSL program"
994+
"BIN_NAME=abs.exe"
995+
)
980996
TARGET_LINK_LIBRARIES(abs ${EXTRA_LIBS} ${APR_LIBRARIES} ${OPENSSL_LIBRARIES} Ws2_32.lib)
981997
ENDIF()
982998

README.cmake

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ The following tools must be in PATH:
3434
cmake version 3.1.3 or later is required to work with current OpenSSL
3535
releases. (OpenSSL is an optional prerequisite of httpd.)
3636
* Perl
37-
* If the WITH_MODULES feature is used: awk
3837
* If using a command-line compiler: compiler and linker and related tools
3938
(Refer to the cmake documentation for more information.)
4039

@@ -100,8 +99,6 @@ How to build
10099

101100
2. Make sure cmake and Perl are in PATH. Additionally, some backends
102101
require compile tools in PATH. (Hint: "Visual Studio Command Prompt")
103-
In the unlikely event that you use -DWITH_MODULES, described below, make
104-
sure awk is in PATH.
105102

106103
3. cmake -G "some backend, like 'NMake Makefiles'"
107104
-DCMAKE_INSTALL_PREFIX=d:/path/to/httpdinst

STATUS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
240240
end of the ap_process_request_internal() processing so sub_req-esters
241241
know this request cannot be run. This provides authors of older
242242
modules better compatibility, while still improving the security and
243-
robustness of 2.0.
243+
robustness of 2.0.
244244

245245
Status: still need to decide where this goes, OtherBill comments...
246246
Message-ID: <[email protected]>

0 commit comments

Comments
 (0)