[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1033034: marked as done (unblock: libmemcached/1.1.4-1)



Your message dated Thu, 16 Mar 2023 14:50:35 +0000
with message-id <E1pcow7-00FNHb-T6@respighi.debian.org>
and subject line unblock libmemcached
has caused the Debian Bug report #1033034,
regarding unblock: libmemcached/1.1.4-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1033034: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033034
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hi,

Please unblock package libmemcached 1.1.4-1, it contains fix for #1032479
(CVE-2023-27478).  Removing libmemcached from testing would pull a hell lot of
packages with it.  The upstream changes between 1.1.3 and 1.1.4 are minimal and
the code changes are limited to fixing the CVE; It also fixes the underlinking
problem that we had to patch.

Thanks,
Ondrej

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

unblock libmemcached/1.1.4-1


-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEw2Gx4wKVQ+vGJel9g3Kkd++uWcIFAmQSouNfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEMz
NjFCMUUzMDI5NTQzRUJDNjI1RTk3RDgzNzJBNDc3RUZBRTU5QzIACgkQg3Kkd++u
WcK6XxAAp5XHOJE5RV6adouX85kXtGR9Yj7L9LcRH/n77IReorLZa/JpxtKceha9
JufAm0CK8fWuvJ5HqYcqo2BClpIiyjLSz8WtuwJw8lQMoblOikpC36P2Cw362UO7
/9guIyuyEaMOY25f6N0P7+w3Xpd6eJXksCvpAYUnSCitBz9Ce0MLiRvQaXtBFT0r
WBQnKd63kF6t/ZG75Et8pJJgUoIxarlrBPe7EwwIepvoQO5RcNt3TqUFzy9uOF2C
74GOMOn8RLLYFlQyhUfVds18m53i5pxXa2B+leYfvVvZhkTrZuJCrDPUUlAxtkfP
WDfUPCKzegYcUfwSiIPDqjihPiMD+OasuUPfDKPG39e2iQts9wUeCMkRnBOVHUVw
Pp/zt5KGPXwvgz9xeKBIVRbquVt+l3lmGI/qUU3vCezVi4nhOlnrwXoPyC5QoWG3
ZGe1DY0nzcSLq1yviUWmUTVQwHfp9dxoJPIvsAi7sh5saTnnquxEC/xUjTWn1wQ3
uKHUw3uFnZ5q8VYqdsAFjTbCogz8MZsyZlsYcxspDCEkW8JoKpdSl9zZiZ9ouoap
Gy4IqQBmQCU9u2oBiwf9CWLywxkzmmHYuCdNGwzspOZbqfOB4iY4tsq9n5uM/KsR
zlT3OO/DQdiEOztBZJQIhWuZ6VFMDpqMrVdDQIXjecvpknAr+MU=
=JrGZ
-----END PGP SIGNATURE-----
diff -Nru libmemcached-1.1.3/.builds/freebsd.yml libmemcached-1.1.4/.builds/freebsd.yml
--- libmemcached-1.1.3/.builds/freebsd.yml	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/.builds/freebsd.yml	2023-03-06 19:36:56.000000000 +0100
@@ -45,11 +45,5 @@
       maybe cmake --build debug -j2 --target test
   - install: |
       maybe cmake --install debug --prefix /tmp
-  - package: |
-      maybe cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCS_MANGZ=ON -S libmemcached -B release
-      maybe cmake --build release -j2 --target package -- VERBOSE=
-      maybe cmake -DCPACK_COMPONENT_INSTALL=ON release
-      maybe cmake --build release -j2 --target package -- VERBOSE=
-      maybe cmake --build release -j2 --target push-artifacts -- VERBOSE=
   - success: |
       notify-gitter success
diff -Nru libmemcached-1.1.3/.builds/openbsd.yml libmemcached-1.1.4/.builds/openbsd.yml
--- libmemcached-1.1.3/.builds/openbsd.yml	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/.builds/openbsd.yml	2023-03-06 19:36:56.000000000 +0100
@@ -33,11 +33,5 @@
       maybe cmake --build debug -j2 --target test
   - install: |
       maybe cmake --install debug --prefix /tmp
-  - package: |
-      maybe cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCS_MANGZ=ON -S libmemcached -B release
-      maybe cmake --build release -j2 --target package -- VERBOSE=
-      maybe cmake -DCPACK_COMPONENT_INSTALL=ON release
-      maybe cmake --build release -j2 --target package -- VERBOSE=
-      maybe cmake --build release -j2 --target push-artifacts -- VERBOSE=
   - success:
       notify-gitter success
diff -Nru libmemcached-1.1.3/.builds/scripts/notify-gitter libmemcached-1.1.4/.builds/scripts/notify-gitter
--- libmemcached-1.1.3/.builds/scripts/notify-gitter	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/.builds/scripts/notify-gitter	2023-03-06 19:36:56.000000000 +0100
@@ -1,6 +1,8 @@
 #!/usr/bin/env bash
 set -eu
 
+test -f ~/.gitter || exit 0
+
 GITTER=$(cat ~/.gitter)
 STATUS=$1
 
diff -Nru libmemcached-1.1.3/ChangeLog libmemcached-1.1.4/ChangeLog
--- libmemcached-1.1.3/ChangeLog	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/ChangeLog	2023-03-06 19:36:56.000000000 +0100
@@ -1,5 +1,22 @@
 # ChangeLog v1.1
 
+## v 1.1.4
+
+> released 2022-03-06
+
+* Fix [gh #107](https://github.com/awesomized/libmemcached/issues/107):
+  macOS: deprecated sasl API (improve detection of `libsasl2`).
+* Fix [gh #131](https://github.com/awesomized/libmemcached/issues/131):
+  Consider renaming tools (add `CLIENT_PREFIX` build option; default: `mem`)
+* Fix [gh #132](https://github.com/awesomized/libmemcached/issues/132):
+  Add build of static library (add `BUILD_SHARED_LIBS` build option; default: `ON`).
+* Fix [gh #134](https://github.com/awesomized/libmemcached/issues/134):
+  Update client option documentation.
+* Fix [gh #136](https://github.com/awesomized/libmemcached/issues/136):
+  `libmemcachedutil` is underlinked (link against libmemcached).
+* Fix [gh php-memcached#531](https://github.com/php-memcached-dev/php-memcached/issues/531):
+  `get` returns random values when lower than default `OPT_POLL_TIMEOUT` is set.
+
 ## v 1.1.3
 
 > released 2022-11-09
diff -Nru libmemcached-1.1.3/ChangeLog-1.1.md libmemcached-1.1.4/ChangeLog-1.1.md
--- libmemcached-1.1.3/ChangeLog-1.1.md	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/ChangeLog-1.1.md	2023-03-06 19:36:56.000000000 +0100
@@ -1,5 +1,22 @@
 # ChangeLog v1.1
 
+## v 1.1.4
+
+> released 2022-03-06
+
+* Fix [gh #107](https://github.com/awesomized/libmemcached/issues/107):
+  macOS: deprecated sasl API (improve detection of `libsasl2`).
+* Fix [gh #131](https://github.com/awesomized/libmemcached/issues/131):
+  Consider renaming tools (add `CLIENT_PREFIX` build option; default: `mem`)
+* Fix [gh #132](https://github.com/awesomized/libmemcached/issues/132):
+  Add build of static library (add `BUILD_SHARED_LIBS` build option; default: `ON`).
+* Fix [gh #134](https://github.com/awesomized/libmemcached/issues/134):
+  Update client option documentation.
+* Fix [gh #136](https://github.com/awesomized/libmemcached/issues/136):
+  `libmemcachedutil` is underlinked (link against libmemcached).
+* Fix [gh php-memcached#531](https://github.com/php-memcached-dev/php-memcached/issues/531):
+  `get` returns random values when lower than default `OPT_POLL_TIMEOUT` is set.
+
 ## v 1.1.3
 
 > released 2022-11-09
diff -Nru libmemcached-1.1.3/ChangeLog.md libmemcached-1.1.4/ChangeLog.md
--- libmemcached-1.1.3/ChangeLog.md	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/ChangeLog.md	2023-03-06 19:36:56.000000000 +0100
@@ -1,5 +1,22 @@
 # ChangeLog v1.1
 
+## v 1.1.4
+
+> released 2022-03-06
+
+* Fix [gh #107](https://github.com/awesomized/libmemcached/issues/107):
+  macOS: deprecated sasl API (improve detection of `libsasl2`).
+* Fix [gh #131](https://github.com/awesomized/libmemcached/issues/131):
+  Consider renaming tools (add `CLIENT_PREFIX` build option; default: `mem`)
+* Fix [gh #132](https://github.com/awesomized/libmemcached/issues/132):
+  Add build of static library (add `BUILD_SHARED_LIBS` build option; default: `ON`).
+* Fix [gh #134](https://github.com/awesomized/libmemcached/issues/134):
+  Update client option documentation.
+* Fix [gh #136](https://github.com/awesomized/libmemcached/issues/136):
+  `libmemcachedutil` is underlinked (link against libmemcached).
+* Fix [gh php-memcached#531](https://github.com/php-memcached-dev/php-memcached/issues/531):
+  `get` returns random values when lower than default `OPT_POLL_TIMEOUT` is set.
+
 ## v 1.1.3
 
 > released 2022-11-09
diff -Nru libmemcached-1.1.3/CMake/CheckDebug.cmake libmemcached-1.1.4/CMake/CheckDebug.cmake
--- libmemcached-1.1.3/CMake/CheckDebug.cmake	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/CMake/CheckDebug.cmake	2023-03-06 19:36:56.000000000 +0100
@@ -15,7 +15,7 @@
     if(${NAME} IN_LIST ${VAR} OR ${LIB} IN_LIST ${VAR})
         make_have_identifier(${LIB} HAVE)
         cmake_push_check_state(RESET)
-        set(CMAKE_REQUIRED_LIBRARIES ${LIB})
+        set(CMAKE_REQUIRED_LIBRARIES -fsanitize=${NAME})
         check_cxx_compiler_flag(-fsanitize=${NAME} ${HAVE})
         cmake_pop_check_state()
         if(${HAVE})
diff -Nru libmemcached-1.1.3/CMake/_Include.cmake libmemcached-1.1.4/CMake/_Include.cmake
--- libmemcached-1.1.3/CMake/_Include.cmake	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/CMake/_Include.cmake	2023-03-06 19:36:56.000000000 +0100
@@ -131,6 +131,11 @@
     if(HAVE_LIBSASL)
         set(LIBMEMCACHED_WITH_SASL_SUPPORT 1)
         pkgconfig_export(REQUIRES libsasl2)
+        cmake_push_check_state()
+        set(CMAKE_REQUIRED_INCLUDES "${LIBSASL_INCLUDEDIR}")
+        set(CMAKE_REQUIRED_LIBRARIES "${LIBSASL_LIBRARIES}")
+        check_symbol(sasl_client_done sasl/sasl.h)
+        cmake_pop_check_state()
     endif()
 endif()
 
diff -Nru libmemcached-1.1.3/CMakeConfig.txt libmemcached-1.1.4/CMakeConfig.txt
--- libmemcached-1.1.3/CMakeConfig.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/CMakeConfig.txt	2023-03-06 19:36:56.000000000 +0100
@@ -23,6 +23,11 @@
     set(TARGET_NAMELINK_COMPONENT NAMELINK_COMPONENT dev DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
+set(CLIENT_PREFIX mem
+        CACHE STRING "client prefix (default mem; i.e.: memstat, memcp, memcat ...)")
+
+option(BUILD_SHARED_LIBS    "whether to build shared libraries"
+        ON)
 option(BUILD_TESTING        "whether to enable build of the test suite"
         $ENV{BUILD_TESTING})
 option(BUILD_DOCSONLY       "build *only* documentation"
diff -Nru libmemcached-1.1.3/CMakeLists.txt libmemcached-1.1.4/CMakeLists.txt
--- libmemcached-1.1.3/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -30,19 +30,19 @@
     include(CMake/_Include.cmake)
 
     set(CLIENTS
-            memcapable
-            memcat
-            memcp
-            memdump
-            memerror
-            memexist
-            memflush
-            memparse
-            memping
-            memrm
-            memslap
-            memstat
-            memtouch
+            capable
+            cat
+            cp
+            dump
+            error
+            exist
+            flush
+            parse
+            ping
+            rm
+            slap
+            stat
+            touch
             )
 
     add_subdirectory(include)
diff -Nru libmemcached-1.1.3/CMakeVersions.txt libmemcached-1.1.4/CMakeVersions.txt
--- libmemcached-1.1.3/CMakeVersions.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/CMakeVersions.txt	2023-03-06 19:36:56.000000000 +0100
@@ -2,9 +2,9 @@
 # libmemcached
 #
 
-set(LIBMEMCACHED_VERSION 1.1.3)
+set(LIBMEMCACHED_VERSION 1.1.4)
 set(LIBMEMCACHED_VERSION_INC 1.0)
-set(LIBMEMCACHED_VERSION_HEX 0x001001003)
+set(LIBMEMCACHED_VERSION_HEX 0x001001004)
 
 # libmemcached.so
 
diff -Nru libmemcached-1.1.3/contrib/bin/memaslap/CMakeLists.txt libmemcached-1.1.4/contrib/bin/memaslap/CMakeLists.txt
--- libmemcached-1.1.3/contrib/bin/memaslap/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/contrib/bin/memaslap/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -9,7 +9,7 @@
     check_dependency(LIBEVENT event)
 
     if(HAVE_LIBEVENT AND HAVE_ATOMICS)
-        add_executable(memaslap
+        add_executable(aslap
                 ms_main.c
                 ms_conn.c
                 ms_setting.c
@@ -17,19 +17,19 @@
                 ms_stats.c
                 ms_task.c
                 ms_thread.c)
-        target_include_directories(memaslap PRIVATE
+        target_include_directories(aslap PRIVATE
                 ${CMAKE_SOURCE_DIR}/include
                 ${CMAKE_BINARY_DIR}/include
                 ${CMAKE_SOURCE_DIR}/src
                 ${CMAKE_BINARY_DIR}/src
                 ${CMAKE_BINARY_DIR})
-        target_link_libraries(memaslap PRIVATE libmemcached Threads::Threads ${LIBEVENT} m)
-        set_property(TARGET memaslap PROPERTY C_STANDARD 11)
+        target_link_libraries(aslap PRIVATE libmemcached Threads::Threads ${LIBEVENT} m)
+        set_target_properties(aslap PROPERTIES C_STANDARD 11 OUTPUT_NAME ${CLIENT_PREFIX}aslap)
         if(CMAKE_INSTALL_RPATH)
-            set_target_properties(${CLIENT} PROPERTIES
+            set_target_properties(aslap PROPERTIES
                     INSTALL_RPATH ${CMAKE_INSTALL_RPATH}/../${CMAKE_INSTALL_LIBDIR})
         endif()
-        install(TARGETS memaslap
+        install(TARGETS aslap
                 RUNTIME COMPONENT bin DESTINATION ${CMAKE_INSTALL_BINDIR})
     endif()
 
diff -Nru libmemcached-1.1.3/debian/changelog libmemcached-1.1.4/debian/changelog
--- libmemcached-1.1.3/debian/changelog	2023-02-23 01:50:44.000000000 +0100
+++ libmemcached-1.1.4/debian/changelog	2023-03-06 19:38:02.000000000 +0100
@@ -1,3 +1,9 @@
+libmemcached (1.1.4-1) unstable; urgency=high
+
+  * New upstream version 1.1.4
+
+ -- Ondřej Surý <ondrej@debian.org>  Mon, 06 Mar 2023 19:38:02 +0100
+
 libmemcached (1.1.3-3) unstable; urgency=medium
 
   * Prevent libmemcachedutil underlinking by removing the conditional
diff -Nru libmemcached-1.1.3/debian/patches/0001-Prevent-libmemcachedutil-underlinking-by-removing-th.patch libmemcached-1.1.4/debian/patches/0001-Prevent-libmemcachedutil-underlinking-by-removing-th.patch
--- libmemcached-1.1.3/debian/patches/0001-Prevent-libmemcachedutil-underlinking-by-removing-th.patch	2023-02-23 01:50:44.000000000 +0100
+++ libmemcached-1.1.4/debian/patches/0001-Prevent-libmemcachedutil-underlinking-by-removing-th.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-From: =?utf-8?b?T25kxZllaiBTdXLDvQ==?= <ondrej@sury.org>
-Date: Thu, 23 Feb 2023 01:50:21 +0100
-Subject: Prevent libmemcachedutil underlinking by removing the conditional
- around target_link_libraries
-
----
- src/libmemcachedutil/CMakeLists.txt | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/src/libmemcachedutil/CMakeLists.txt b/src/libmemcachedutil/CMakeLists.txt
-index 78e87d3..49bc4e1 100644
---- a/src/libmemcachedutil/CMakeLists.txt
-+++ b/src/libmemcachedutil/CMakeLists.txt
-@@ -23,9 +23,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL AppleClang)
- 		LINK_FLAGS "-Wl,-undefined,dynamic_lookup"
- 		)
- endif()
--if(MSVC OR MINGW)
--    target_link_libraries(libmemcachedutil PUBLIC libmemcached)
--endif()
-+target_link_libraries(libmemcachedutil PUBLIC libmemcached)
- target_link_libraries(libmemcachedutil PUBLIC Threads::Threads)
- if(HAVE_LIBSASL)
-     target_link_libraries(libmemcachedutil PUBLIC ${LIBSASL})
diff -Nru libmemcached-1.1.3/debian/patches/series libmemcached-1.1.4/debian/patches/series
--- libmemcached-1.1.3/debian/patches/series	2023-02-23 01:50:44.000000000 +0100
+++ libmemcached-1.1.4/debian/patches/series	2023-03-06 19:38:02.000000000 +0100
@@ -1 +0,0 @@
-0001-Prevent-libmemcachedutil-underlinking-by-removing-th.patch
diff -Nru libmemcached-1.1.3/debian/rules libmemcached-1.1.4/debian/rules
--- libmemcached-1.1.3/debian/rules	2023-02-23 01:50:44.000000000 +0100
+++ libmemcached-1.1.4/debian/rules	2023-03-06 19:38:02.000000000 +0100
@@ -3,7 +3,7 @@
 TMP=$(CURDIR)/debian/tmp/
 
 %:
-	dh $@ --with autoreconf -X.la -Xlibmemcached-awesome -Xlibmemcachedprotocol.so -Xlibmemcachedprotocol-0.0 -O--dbgsym-migration='libmemcached-dbg (<< 1.0.18-5~)' --buildsystem=cmake
+	dh $@ --with autoreconf -X.la -Xlibp9y.a -Xlibmemcached-awesome -Xlibmemcachedprotocol.so -Xlibmemcachedprotocol-0.0 -O--dbgsym-migration='libmemcached-dbg (<< 1.0.18-5~)' --buildsystem=cmake
 
 override_dh_auto_configure:
 	dh_auto_configure --buildsystem=cmake -- \
diff -Nru libmemcached-1.1.3/debian/upstream/signing-key.asc libmemcached-1.1.4/debian/upstream/signing-key.asc
--- libmemcached-1.1.3/debian/upstream/signing-key.asc	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/debian/upstream/signing-key.asc	2023-03-06 19:38:02.000000000 +0100
@@ -0,0 +1,30 @@
+-----BEGIN PGP ARMORED FILE-----
+Comment: Use "gpg --dearmor" for unpacking
+
+mQENBE3uqzUBCADh6f5+LRiEpgxD9G/bo9mv3tqdiR5ovlmwlChTwf7l+rIbbm2Z
+p6NjKu4AUdBgUfsZe4SjGhRNWf7S79TSZNaiYoI6X2j+ETa2Q4PYyyKkPKlby2mr
+E63H/I6iuQkqWqD95SxFoLpg3SrN38Irbb3j8RBaD7ws07hrFH0FVd1CtOeS+YeS
+fT5Mj72flCZOEvu6p2XAvEM5ZddMUGk8Z4ev4z7qrM39rLA59mfVhwKoNiRmB534
+Q/N1hmGZEY2tGztYRugfT0egDkxULrsv/0xpRXizA+Fw6hSnGW29RokS9ZEdjURW
+96GBTe8MVbrsBXN7hMpNkTOvPUnAHkrOHLsrABEBAAG0HkJyaWFuIEFrZXIgPGJy
+aWFuQHRhbmdlbnQub3JnPokBOAQTAQIAIgUCTe6rNQIbAwYLCQgHAwIGFQgCCQoL
+BBYCAwECHgECF4AACgkQi07jX9okiBMzxgf/cr3Rlhk4vinHiAYJJwsAp6FBKU2o
+pBBpmp1erXoiQzujlcKtWVtA9/C84KeDncYDN1KHOjksuOygnEOTieMRkysp99m8
+Q7p5DMXV8DU4smkTPzh8YVBc1To/bm7++2g82TXvpL8oZrMh+scCQO1jfaVG6HOK
+BIka7kf8X4nQp9hhWyGRoKiA9TvMJ02i7E8pR+/hp4kCIrFk9VtPvVFXaZkhUq/e
+c1h2GcCNUB5GFUPSc0vh1v1N0lpYUcMBhCDHJUDYrX5S6TRna1h7Nog5QvGJA5h+
+OW6qoLxNmw9NzPbX4IIMJ+fyohy2jSPxbp3SJM1JpcXUEGpYOQjFOR9wgrkBDQRN
+7qs1AQgAtyFmp0v78yNdp9qkfTwGFtozAavBOFTG/0kAlAdIrJ6xnRbz9f5keDrr
+j9JTEGnI4+QIsrbvY9vplG+ZIVxefS9BUMPL9OmgYaPl/UmFYTNtTDHyuNQDfNxu
+SPq096UKhoqMpG5/a0BYuXxGUr9P97SmyKWzQlI3Um47dziJJkDFhNQt+16BOdYD
+lkEXjZ+6+lQYPrlrrRxz+O26BbStsu3/Kkik8VL8fIAPQuLGEpI0Wyp5WbkVXuRi
+cMbMN7aChR/Ttu5gets59yA5Pg77c7j4EGcfCMr14+FzbQeOzQG7E1g4qM6YZhSO
+6C9ZSTyewGNOAVVKNp7LanYrqpm3GQARAQABiQEfBBgBAgAJBQJN7qs1AhsMAAoJ
+EItO41/aJIgT364H/ieE7++8IjQw0O+4f/mcCpeMD8HZk2KkrQO/U9gNWqzQjKEV
+7K1F82MmY/UjGatUMRsoQ2qD8h0l7dXtskAURVamjvwEG3ydbyqqmOMNDTJarrCV
+YGCUUR/+7I0DUiqG5GzrnnFkirNLmbYXbuW8BWvBGCI9YYekiAlzInwO5JAGdrwV
+fAXxlEm7GNrUySyDmEzVGiuDbjUbpQA7IyJtqpRboR7R08ruljf9CGzn6XqwVthI
+e+W3d8QA7q42hDZWRikEEGbH1nC0B3ME3WNhVjUbqTjR5/PmN4iykZWLMroS4NeY
+bVkXf/vg4i5fnVmKXnfgfM3gop7voxbBkNjz5Js=
+=B43W
+-----END PGP ARMORED FILE-----
Binary files /tmp/rg_uWpjnBI/libmemcached-1.1.3/debian/upstream-signing-key.pgp and /tmp/ZpOUphpagE/libmemcached-1.1.4/debian/upstream-signing-key.pgp differ
diff -Nru libmemcached-1.1.3/docs/CMakeLists.txt libmemcached-1.1.4/docs/CMakeLists.txt
--- libmemcached-1.1.3/docs/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -50,7 +50,7 @@
                 COMMAND
                     ${CMAKE_COMMAND} -E touch "${SPHINX_HTML_DIR}"
                 BYPRODUCTS ${SPHINX_HTML_DIR}
-                DEPENDS "${DOCS_SOURCE}"
+                DEPENDS "${DOCS_SOURCE}" conf.py.in
                 )
         add_custom_target(html ALL DEPENDS "${SPHINX_HTML_DIR}")
 
@@ -73,7 +73,7 @@
                 COMMAND
                     ${CMAKE_COMMAND} -E touch "${SPHINX_MAN_DIR}"
                 BYPRODUCTS ${SPHINX_MAN_DIR}
-                DEPENDS "${DOCS_SOURCE}"
+                DEPENDS "${DOCS_SOURCE}" conf.py.in
                 )
         add_custom_target(man ALL DEPENDS "${SPHINX_MAN_DIR}")
 
diff -Nru libmemcached-1.1.3/docs/conf.py.in libmemcached-1.1.4/docs/conf.py.in
--- libmemcached-1.1.3/docs/conf.py.in	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/conf.py.in	2023-03-06 19:36:56.000000000 +0100
@@ -191,27 +191,46 @@
   ('libmemcachedutil/memcached_pool'           ,'memcached_pool_st'                       ,u'libmemcached Documentation'          ,man_authors,3),
   ('libmemcachedutil/memcached_pool'           ,'memcached_pool'                          ,u'libmemcached Documentation'          ,man_authors,3),
 
-  ('bin/memcapable'                            , 'memcapable'                             , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memcat'                                , 'memcat'                                 , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memcp'                                 , 'memcp'                                  , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memdump'                               , 'memdump'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memerror'                              , 'memerror'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memflush'                              , 'memflush'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memrm'                                 , 'memrm'                                  , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memaslap'                              , 'memaslap'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memslap'                               , 'memslap'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memstat'                               , 'memstat'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memexist'                              , 'memexist'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memparse'                              , 'memparse'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memping'                               , 'memping'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memtouch'                              , 'memtouch'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcapable'                            , 'memcapable'                             ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcat'                                , 'memcat'                                 ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcp'                                 , 'memcp'                                  ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memdump'                               , 'memdump'                                ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memerror'                              , 'memerror'                               ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memflush'                              , 'memflush'                               ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memrm'                                 , 'memrm'                                  ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memaslap'                              , 'memaslap'                               ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memslap'                               , 'memslap'                                ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memstat'                               , 'memstat'                                ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memexist'                              , 'memexist'                               ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memparse'                              , 'memparse'                               ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memping'                               , 'memping'                                ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memtouch'                              , 'memtouch'                               ,u'libmemcached Documentation'         , man_authors, 1),
   ]
 
+if '@CLIENT_PREFIX@' != 'mem' :
+    man_pages.extend([
+  ('bin/memcapable'                            , '@CLIENT_PREFIX@capable'                 ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcat'                                , '@CLIENT_PREFIX@cat'                     ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcp'                                 , '@CLIENT_PREFIX@cp'                      ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memdump'                               , '@CLIENT_PREFIX@dump'                    ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memerror'                              , '@CLIENT_PREFIX@error'                   ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memflush'                              , '@CLIENT_PREFIX@flush'                   ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memrm'                                 , '@CLIENT_PREFIX@rm'                      ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memaslap'                              , '@CLIENT_PREFIX@aslap'                   ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memslap'                               , '@CLIENT_PREFIX@slap'                    ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memstat'                               , '@CLIENT_PREFIX@stat'                    ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memexist'                              , '@CLIENT_PREFIX@exist'                   ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memparse'                              , '@CLIENT_PREFIX@parse'                   ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memping'                               , '@CLIENT_PREFIX@ping'                    ,u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memtouch'                              , '@CLIENT_PREFIX@touch'                   ,u'libmemcached Documentation'         , man_authors, 1),
+    ])
+
 rst_prolog = """
-.. |libhashkit_version| replace:: 1.0
-.. |libmemcached_version| replace:: 1.0
-.. |libmemcachedprotocol_version| replace:: 0.0
-.. |libmemcachedutil_version| replace:: 1.0
+.. |client_prefix| replace:: @CLIENT_PREFIX@
+.. |libhashkit_version| replace:: @LIBHASHKIT_VERSION_INC@
+.. |libmemcached_version| replace:: @LIBMEMCACHED_VERSION_INC@
+.. |libmemcachedprotocol_version| replace:: @LIBMEMCACHEDPROTOCOL_VERSION_INC@
+.. |libmemcachedutil_version| replace:: @LIBMEMCACHEDUTIL_VERSION_INC@
 """
 
 @SPHINX_CONF_APPEND@
diff -Nru libmemcached-1.1.3/docs/source/bin/common/env.rst libmemcached-1.1.4/docs/source/bin/common/env.rst
--- libmemcached-1.1.3/docs/source/bin/common/env.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/common/env.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,7 @@
+ENVIRONMENT
+-----------
+
+.. envvar:: MEMCACHED_SERVERS
+
+    Specify a list of servers.
+
diff -Nru libmemcached-1.1.3/docs/source/bin/common/note_contrib_options.rst libmemcached-1.1.4/docs/source/bin/common/note_contrib_options.rst
--- libmemcached-1.1.3/docs/source/bin/common/note_contrib_options.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/common/note_contrib_options.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,8 @@
+ 
+CONTRIBUTED PROGRAM
+...................
+
+This is a contributed program.
+
+This program doesn't follow the standard flag/option scheme.
+
diff -Nru libmemcached-1.1.3/docs/source/bin/common/note_program_prefix.rst libmemcached-1.1.4/docs/source/bin/common/note_program_prefix.rst
--- libmemcached-1.1.3/docs/source/bin/common/note_program_prefix.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/common/note_program_prefix.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,10 @@
+
+PROGRAM PREFIX
+..............
+
+The prefix of this program is variable, i.e. it can be configured at build time.
+
+Usually the client programs of ``libmemcached-awesome`` are prefixed with ``mem``, like ``memcat`` or ``memcp``.
+
+It can be configured, though, to replace the prefix with something else like ``mc``, in case of that,
+the client programs of ``libmemcached-awesome`` would be called ``mccat``, ``mccp``, etc. respectively. 
diff -Nru libmemcached-1.1.3/docs/source/bin/memaslap.rst libmemcached-1.1.4/docs/source/bin/memaslap.rst
--- libmemcached-1.1.3/docs/source/bin/memaslap.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memaslap.rst	2023-03-06 19:36:56.000000000 +0100
@@ -5,11 +5,12 @@
 SYNOPSIS
 --------
 
-memaslap [options]
+|client_prefix|\aslap [options]
 
 .. program:: memaslap
 
 .. option:: --help
+.. option:: --servers
 
 .. envvar:: MEMCACHED_SERVERS
 
@@ -29,7 +30,7 @@
 connections in each thread. Each connection keeps key size distribution,
 value size distribution, and command distribution by itself.
 
-You can specify servers via the :option:`memslap --servers` option or via the
+You can specify servers via the :option:`memaslap --servers` option or via the
 environment variable :envvar:`MEMCACHED_SERVERS`.
 
 FEATURES
@@ -999,6 +1000,12 @@
 
 memaslap -s 127.0.0.1:11211,127.0.0.1:11212 -F config -t 2m -p 2
 
+NOTES
+-----
+
+.. include:: common/note_program_prefix.rst
+.. include:: common/note_contrib_options.rst
+
 SEE ALSO
 --------
 
diff -Nru libmemcached-1.1.3/docs/source/bin/memcapable.rst libmemcached-1.1.4/docs/source/bin/memcapable.rst
--- libmemcached-1.1.3/docs/source/bin/memcapable.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memcapable.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memcapable
 
-memcapable [options]
+|client_prefix|\capable [options]
 
 Check a memcached server's capabilities and compatibility.
 
@@ -39,6 +39,14 @@
 
     Set the timeout for an IO operation to/from the server to \ *n*\  seconds.
 
+
+NOTES
+-----
+
+.. include:: common/note_program_prefix.rst
+.. include:: common/note_contrib_options.rst
+
+
 SEE ALSO
 --------
 
diff -Nru libmemcached-1.1.3/docs/source/bin/memcat.rst libmemcached-1.1.4/docs/source/bin/memcat.rst
--- libmemcached-1.1.3/docs/source/bin/memcat.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memcat.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memcat
 
-memcat [options] key [key...]
+|client_prefix|\cat [options] key [key...]
 
 Read and output the value of one key or the values of a set of keys.
 
@@ -23,20 +23,17 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
+.. include:: options/common_get.rst
+.. include:: options/flags_noarg.rst
 .. include:: options/hash.rst
+.. include:: options/file_out.rst
 
-.. option:: --flag
+.. include:: common/env.rst
 
-    Display stored flags.
+NOTES
+-----
 
-ENVIRONMENT
------------
-
-.. envvar:: MEMCACHED_SERVERS
-
-    Specify a list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memcp.rst libmemcached-1.1.4/docs/source/bin/memcp.rst
--- libmemcached-1.1.3/docs/source/bin/memcp.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memcp.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memcp
 
-memcp [options] \-\-servers <hostname[:port]...> <file...>
+|client_prefix|\cp [options] \-\-servers <hostname[:port]...> <file...>
 
 Copy files to a collection of memcached servers.
 
@@ -21,37 +21,42 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
-.. include:: options/expire.rst
-.. include:: options/flag.rst
-.. include:: options/hash.rst
-.. include:: options/sasl.rst
+.. include:: options/common_set.rst
+.. include:: /bin/options/flags_reqarg.rst
 .. include:: options/udp.rst
 
-.. option:: --buffer
-
-    Enable internal buffering of commands.
-
-.. option:: --set
+.. option:: -S|--set
 
     Issue *SET* command(s). This is the default mode.
-    See also :option:`--add` and :option:`--replace`.
+    See also :option:`-A|--add` and :option:`-R|--replace`.
 
-.. option:: --add
+.. option:: -A|--add
 
     Issue *ADD* command(s).
 
-.. option:: --replace
+.. option:: -R|--replace
 
     Issue *REPLACE* command(s).
 
-ENVIRONMENT
------------
+.. option:: -.|--basename
+
+    Use basename of path as key (default).
+    
+.. option:: -+|--relative
+
+    Use relative path (as passed), instead of basename only.
+    
+.. option:: -/|--absolute
+
+    Use absolute path (real path), instead of basename only.
+
+
+.. include:: common/env.rst
 
-.. envvar:: MEMCACHED_SERVERS
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memdump.rst libmemcached-1.1.4/docs/source/bin/memdump.rst
--- libmemcached-1.1.3/docs/source/bin/memdump.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memdump.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memdump
 
-memdump [options]
+|client_prefix|\dump [options]
 
 Dump a list of keys from a server.
 
@@ -20,17 +20,16 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
-.. include:: options/hash.rst
-.. include:: options/sasl.rst
+.. include:: options/common_get.rst
+.. include:: options/file_out.rst
 
-ENVIRONMENT
------------
 
-.. envvar:: MEMCACHED_SERVERS
+.. include:: common/env.rst
+
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memerror.rst libmemcached-1.1.4/docs/source/bin/memerror.rst
--- libmemcached-1.1.3/docs/source/bin/memerror.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memerror.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memerror
 
-memerror [options] <error code>
+|client_prefix|\error [options] <error code>
 
 Translate a memcached error code into a string.
 
@@ -20,13 +20,15 @@
 -------
 
 .. include:: options/all.rst
+.. include:: options/common.rst
 
-ENVIRONMENT
------------
 
-.. envvar:: MEMCACHED_SERVERS
+.. include:: common/env.rst
+
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memexist.rst libmemcached-1.1.4/docs/source/bin/memexist.rst
--- libmemcached-1.1.3/docs/source/bin/memexist.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memexist.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memexist
 
-memexist [options] <key>
+|client_prefix|\exist [options] <key>
 
 Check for the existence of a key.
 
@@ -18,17 +18,15 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
+.. include:: options/common_get.rst
 .. include:: options/hash.rst
-.. include:: options/sasl.rst
 
-ENVIRONMENT
------------
+.. include:: common/env.rst
 
-.. envvar:: MEMCACHED_SERVERS
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memflush.rst libmemcached-1.1.4/docs/source/bin/memflush.rst
--- libmemcached-1.1.3/docs/source/bin/memflush.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memflush.rst	2023-03-06 19:36:56.000000000 +0100
@@ -4,7 +4,7 @@
 SYNOPSIS
 --------
 
-memflush [options]
+|client_prefix|\flush [options]
 
 .. program:: memflush
 
@@ -22,9 +22,7 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
-.. include:: options/sasl.rst
+.. include:: options/common_get.rst
 .. include:: options/expire.rst
 
 .. note::
@@ -53,12 +51,13 @@
 
 .. _memcached protocol documentation: https://github.com/memcached/memcached/blob/master/doc/protocol.txt
 
-ENVIRONMENT
------------
 
-.. envvar:: MEMCACHED_SERVERS
+.. include:: common/env.rst
+
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memparse.rst libmemcached-1.1.4/docs/source/bin/memparse.rst
--- libmemcached-1.1.3/docs/source/bin/memparse.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memparse.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memparse
 
-memparse <option string>
+|client_prefix|\parse <option string>
 
 Parse and validate an option string.
 
@@ -20,6 +20,12 @@
 
 None.
 
+NOTES
+-----
+ 
+.. include:: common/note_program_prefix.rst
+
+
 SEE ALSO
 --------
 
diff -Nru libmemcached-1.1.3/docs/source/bin/memping.rst libmemcached-1.1.4/docs/source/bin/memping.rst
--- libmemcached-1.1.3/docs/source/bin/memping.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memping.rst	2023-03-06 19:36:56.000000000 +0100
@@ -4,7 +4,7 @@
 SYNOPSIS
 --------
 
-memping [options] [server]
+|client_prefix|\ping [options] [server]
 
 .. program:: memping
 
@@ -22,12 +22,17 @@
 .. include:: options/common.rst
 .. include:: options/sasl.rst
 
-ENVIRONMENT
------------
+.. option:: -s|--servers <list of servers>
+
+    Specify the list of servers as *hostname[:port][,hostname[:port]...]*.
+
+
+.. include:: common/env.rst
 
-.. envvar:: MEMCACHED_SERVERS
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memrm.rst libmemcached-1.1.4/docs/source/bin/memrm.rst
--- libmemcached-1.1.3/docs/source/bin/memrm.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memrm.rst	2023-03-06 19:36:56.000000000 +0100
@@ -4,7 +4,7 @@
 SYNOPSIS
 --------
 
-memrm [options] <key ...>
+|client_prefix|\rm [options] <key ...>
 
 .. program:: memrm
 
@@ -18,17 +18,14 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
-.. include:: options/hash.rst
-.. include:: options/sasl.rst
+.. include:: options/common_set.rst
 
-ENVIRONMENT
------------
+.. include:: common/env.rst
 
-.. envvar:: MEMCACHED_SERVERS
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memslap.rst libmemcached-1.1.4/docs/source/bin/memslap.rst
--- libmemcached-1.1.3/docs/source/bin/memslap.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memslap.rst	2023-03-06 19:36:56.000000000 +0100
@@ -4,7 +4,7 @@
 SYNOPSIS
 --------
 
-memslap [options]
+|client_prefix|\slap [options]
 
 .. program::  memslap
 
@@ -21,15 +21,41 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
+.. include:: options/common_get.rst
+.. include:: options/hash.rst
+.. include:: options/udp.rst
 
-ENVIRONMENT
------------
+.. option:: -R|--noreply
+
+    Enable the NOREPLY behavior for storage commands.
+
+.. option:: -F|--flush
+
+    Flush all servers prior test.
+
+.. option:: -t|--test <arg>
+
+    Test to perform (options: get, mget, set; default: get).
+
+.. option:: -c|--concurrency <num>
+
+    Concurrency (number of threads to start; default: 1).
+
+.. option:: -e|--execute-number <num>
+
+    Number of times to execute the tests (default: 10000).
+
+.. option:: -l|--initial-load <num>
+
+    Number of keys to load before executing tests (default: 10000).
+
+
+.. include:: common/env.rst
 
-.. envvar:: MEMCACHED_SERVERS
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memstat.rst libmemcached-1.1.4/docs/source/bin/memstat.rst
--- libmemcached-1.1.3/docs/source/bin/memstat.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memstat.rst	2023-03-06 19:36:56.000000000 +0100
@@ -4,7 +4,7 @@
 SYNOPSIS
 --------
 
-memstat [options]
+|client_prefix|\stat [options] [stat args] 
 
 .. program:: memstat
 
@@ -19,31 +19,42 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
-.. include:: options/sasl.rst
+.. include:: options/common_get.rst
 
-.. option:: --analyze
+.. option:: -A|--args <stat>
 
-    Analyze and print differences of a server cluster. A memory and uptime comparison is performed by default.
+    Stat args.
 
-    Available additional modes:
+    **DEPRECATED:** use positional arguments.
 
-    --analyze=latency
-        Network latency comparison
+.. option:: -a|--analyze [<arg>]
+
+    Analyze and print differences of a server cluster.
+    A memory and uptime comparison is performed by default.
 
+    Options:
+    
+    --analyze[=default]
+        Memory and uptime comparison.
 
+    --analyze=latency
+        Network latency comparison.
 
-.. option:: --server-version
+.. option:: -S|-server-version
 
     Obtain and print server version(s) only.
 
-ENVIRONMENT
------------
+.. option:: --iterations
+
+    Iteration count of GETs sent by the latency test (default: 1000).
+
+
+.. include:: common/env.rst
 
-.. envvar:: MEMCACHED_SERVERS
+NOTES
+-----
 
-    Specify the list of servers.
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/memtouch.rst libmemcached-1.1.4/docs/source/bin/memtouch.rst
--- libmemcached-1.1.3/docs/source/bin/memtouch.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/memtouch.rst	2023-03-06 19:36:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 .. program:: memtouch
 
-memtouch [options] <key>
+|client_prefix|\touch [options] <key>
 
 DESCRIPTION
 -----------
@@ -16,11 +16,16 @@
 OPTIONS
 -------
 
-.. include:: options/all.rst
-.. include:: options/common.rst
-.. include:: options/expire.rst
+.. include:: options/common_get.rst
 .. include:: options/hash.rst
-.. include:: options/sasl.rst
+.. include:: options/expire.rst
+
+.. include:: common/env.rst
+
+NOTES
+-----
+
+.. include:: common/note_program_prefix.rst
 
 SEE ALSO
 --------
diff -Nru libmemcached-1.1.3/docs/source/bin/options/all.rst libmemcached-1.1.4/docs/source/bin/options/all.rst
--- libmemcached-1.1.3/docs/source/bin/options/all.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/all.rst	2023-03-06 19:36:56.000000000 +0100
@@ -1,8 +1,8 @@
-.. option:: --help
+.. option:: -h|--help
 
     Display help.
 
-.. option:: --version
+.. option:: -V|--version
 
     Display version.
 
diff -Nru libmemcached-1.1.3/docs/source/bin/options/common_get.rst libmemcached-1.1.4/docs/source/bin/options/common_get.rst
--- libmemcached-1.1.3/docs/source/bin/options/common_get.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/common_get.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,6 @@
+
+.. include:: /bin/options/all.rst
+.. include:: /bin/options/common.rst
+.. include:: /bin/options/net.rst
+.. include:: /bin/options/proto.rst
+.. include:: /bin/options/sasl.rst
diff -Nru libmemcached-1.1.3/docs/source/bin/options/common.rst libmemcached-1.1.4/docs/source/bin/options/common.rst
--- libmemcached-1.1.3/docs/source/bin/options/common.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/common.rst	2023-03-06 19:36:56.000000000 +0100
@@ -1,20 +1,11 @@
-.. option:: --quiet
+.. option:: -q|--quiet
 
     Operate quietly.
 
-.. option:: --verbose
+.. option:: -v|--verbose
 
     Operate more verbosely.
 
-.. option:: --debug
-
-    See :option:`--verbose`.
-
-.. option:: --servers <list of servers>
-
-    Specify the list of servers as *hostname[:port][,hostname[:port]...]*.
-
-.. option:: --binary
-
-    Enable binary protocol.
+.. option:: -d|--debug
 
+    See :option:`-v\|--verbose`.
diff -Nru libmemcached-1.1.3/docs/source/bin/options/common_set.rst libmemcached-1.1.4/docs/source/bin/options/common_set.rst
--- libmemcached-1.1.3/docs/source/bin/options/common_set.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/common_set.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,8 @@
+
+.. include:: /bin/options/all.rst
+.. include:: /bin/options/common.rst
+.. include:: /bin/options/expire.rst
+.. include:: /bin/options/hash.rst
+.. include:: /bin/options/net.rst
+.. include:: /bin/options/proto.rst
+.. include:: /bin/options/sasl.rst
diff -Nru libmemcached-1.1.3/docs/source/bin/options/expire.rst libmemcached-1.1.4/docs/source/bin/options/expire.rst
--- libmemcached-1.1.3/docs/source/bin/options/expire.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/expire.rst	2023-03-06 19:36:56.000000000 +0100
@@ -1,4 +1,4 @@
-.. option:: --expire <expiration>
+.. option:: -e|--expire <expiration>
 
     Use *expiration* seconds (or a UNIX timestamp).
 
diff -Nru libmemcached-1.1.3/docs/source/bin/options/file_out.rst libmemcached-1.1.4/docs/source/bin/options/file_out.rst
--- libmemcached-1.1.3/docs/source/bin/options/file_out.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/file_out.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,6 @@
+
+.. option:: -f|--file [<file>]
+
+    Output to file instead of standard output.
+    
+    *NOTE:* defaults to <key> if no argument was provided.
diff -Nru libmemcached-1.1.3/docs/source/bin/options/flag.rst libmemcached-1.1.4/docs/source/bin/options/flag.rst
--- libmemcached-1.1.3/docs/source/bin/options/flag.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/flag.rst	1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-.. option:: --flag <number>
-
-    Use *number* as flag.
-
diff -Nru libmemcached-1.1.3/docs/source/bin/options/flags_noarg.rst libmemcached-1.1.4/docs/source/bin/options/flags_noarg.rst
--- libmemcached-1.1.3/docs/source/bin/options/flags_noarg.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/flags_noarg.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,4 @@
+.. option:: -F|--flags
+
+    Display key's flags.
+
diff -Nru libmemcached-1.1.3/docs/source/bin/options/flags_reqarg.rst libmemcached-1.1.4/docs/source/bin/options/flags_reqarg.rst
--- libmemcached-1.1.3/docs/source/bin/options/flags_reqarg.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/flags_reqarg.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,4 @@
+.. option:: -F|--flags <number>
+
+    Use *number* as key's flags.
+
diff -Nru libmemcached-1.1.3/docs/source/bin/options/hash.rst libmemcached-1.1.4/docs/source/bin/options/hash.rst
--- libmemcached-1.1.3/docs/source/bin/options/hash.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/hash.rst	2023-03-06 19:36:56.000000000 +0100
@@ -1,4 +1,4 @@
-.. option:: --hash <algorithm>
+.. option:: -H|--hash <algorithm>
 
     Use *algorithm* as key hash algo.
     See :enumerator:`memcached_behavior_t::MEMCACHED_BEHAVIOR_HASH`.
diff -Nru libmemcached-1.1.3/docs/source/bin/options/net.rst libmemcached-1.1.4/docs/source/bin/options/net.rst
--- libmemcached-1.1.3/docs/source/bin/options/net.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/net.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,12 @@
+
+.. option:: -s|--servers <list of servers>
+
+    Specify the list of servers as *hostname[:port][,hostname[:port]...]*.
+
+.. option:: -n|--non-blocking
+
+    Enable non-blocking operations.
+
+.. option:: -N|--tcp-nodelay
+
+    Disable Nagle's algorithm.
diff -Nru libmemcached-1.1.3/docs/source/bin/options/proto.rst libmemcached-1.1.4/docs/source/bin/options/proto.rst
--- libmemcached-1.1.3/docs/source/bin/options/proto.rst	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/proto.rst	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,8 @@
+
+.. option:: -b|--binary
+
+    Enable binary protocol.
+
+.. option:: -B|--buffer
+
+    Buffer requests.
diff -Nru libmemcached-1.1.3/docs/source/bin/options/sasl.rst libmemcached-1.1.4/docs/source/bin/options/sasl.rst
--- libmemcached-1.1.3/docs/source/bin/options/sasl.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/sasl.rst	2023-03-06 19:36:56.000000000 +0100
@@ -1,8 +1,8 @@
-.. option:: --username <username>
+.. option:: -u|--username <username>
 
     Use *username* for SASL authentication.
 
-.. option:: --password <password>
+.. option:: -p|--password <password>
 
     Use *password* for SASL authentication.
 
diff -Nru libmemcached-1.1.3/docs/source/bin/options/udp.rst libmemcached-1.1.4/docs/source/bin/options/udp.rst
--- libmemcached-1.1.3/docs/source/bin/options/udp.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/bin/options/udp.rst	2023-03-06 19:36:56.000000000 +0100
@@ -1,4 +1,4 @@
-.. option:: --udp
+.. option:: -U|--udp
 
     Enable UDP operation mode.
 
diff -Nru libmemcached-1.1.3/docs/source/ChangeLog-1.1.rst libmemcached-1.1.4/docs/source/ChangeLog-1.1.rst
--- libmemcached-1.1.3/docs/source/ChangeLog-1.1.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/ChangeLog-1.1.rst	2023-03-06 19:36:56.000000000 +0100
@@ -5,6 +5,28 @@
 ChangeLog v1.1
 ==============
 
+v 1.1.4
+-------
+
+..
+
+   released 2022-03-06
+
+
+
+* Fix `gh #107 <https://github.com/awesomized/libmemcached/issues/107>`_\ :
+  macOS: deprecated sasl API (improve detection of ``libsasl2``\ ).
+* Fix `gh #131 <https://github.com/awesomized/libmemcached/issues/131>`_\ :
+  Consider renaming tools (add ``CLIENT_PREFIX`` build option; default: ``mem``\ )
+* Fix `gh #132 <https://github.com/awesomized/libmemcached/issues/132>`_\ :
+  Add build of static library (add ``BUILD_SHARED_LIBS`` build option; default: ``ON``\ ).
+* Fix `gh #134 <https://github.com/awesomized/libmemcached/issues/134>`_\ :
+  Update client option documentation.
+* Fix `gh #136 <https://github.com/awesomized/libmemcached/issues/136>`_\ :
+  ``libmemcachedutil`` is underlinked (link against libmemcached).
+* Fix `gh php-memcached#531 <https://github.com/php-memcached-dev/php-memcached/issues/531>`_\ :
+  ``get`` returns random values when lower than default ``OPT_POLL_TIMEOUT`` is set.
+
 v 1.1.3
 -------
 
diff -Nru libmemcached-1.1.3/docs/source/libmemcached/memcached_analyze.rst libmemcached-1.1.4/docs/source/libmemcached/memcached_analyze.rst
--- libmemcached-1.1.3/docs/source/libmemcached/memcached_analyze.rst	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/docs/source/libmemcached/memcached_analyze.rst	2023-03-06 19:36:56.000000000 +0100
@@ -28,7 +28,7 @@
 and sets the result to the `memcached_analysis_st` structure. The return value
 must be freed by the calling application.
 
-.. seealso:: :option:`memstat --analyze`
+.. seealso:: :option:`memstat -a|--analyze [<arg>]`
     A command line tool to analyze a memcached server.
 
 
diff -Nru libmemcached-1.1.3/.github/workflows/cmake-build-ci.gen libmemcached-1.1.4/.github/workflows/cmake-build-ci.gen
--- libmemcached-1.1.3/.github/workflows/cmake-build-ci.gen	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/.github/workflows/cmake-build-ci.gen	2023-03-06 19:36:56.000000000 +0100
@@ -5,102 +5,156 @@
 
 const DEF = [
   "os" => "Linux",
-  "Linux" => "ubuntu-20.04",
-  "Windows" => "windows-2019",
-  "macOS" => "macos-10.15",
-  "ubuntu-20.04" => "gnu",
-  "windows-2019" => "msvc",
-  "macos-10.15" => "clang",
+
+  "Linux"   => "ubuntu-22.04", "ubuntu-22.04" => "gnu",
+  "Windows" => "windows-2022", "windows-2022" => "msvc",
+  "macOS"   => "macos-12",     "macos-12"     => "clang",
+
   "gnu" => [
-    "ver" => "cur",
     "CC"  => "gcc",
     "CXX"  => "g++",
   ],
   "clang" => [
-    "ver" => "cur",
     "CC"  => "clang",
     "CXX"  => "clang++",
   ],
-  "msvc" => [ // dummy
-    "ver" => "cur",
-    "CC" => "msvc",
-    "CXX" => "msvc",
+  "msvc" => [
+    "CMAKE_GENERATOR" => "Visual Studio"
   ],
-  "mingw" => [ // dummy
-    "ver" => "cur",
-    "CC" => "mingw",
-    "CXX" => "mingw",
+  "mingw" => [
+    "CMAKE_GENERATOR" => "MinGW Makefiles"
   ]
 ];
 const MAP = [
-  'env.OS_VER' => [
-    "ubuntu-20.04" => [
-      'env.CC_VND' => [
-        "gnu" => [
-          'env.CC_VER' => [
-            "new"  => "-10",
-            "cur"  => "-9",
+  "Linux" => [
+    'env.OS_VER' => [
+      "ubuntu-22.04" => [
+        'env.CC_VND' => [
+          "gnu" => [
+            'env.CC_VER' => [
+              "new"  => "-12",
+              "cur"  => "-11",
+              "old"  => "-10",
+            ]
+          ],
+          "clang" => [
+            'env.CC_VER' => [
+              "new"  => "-14",
+              "cur"  => "-13",
+            ]
           ]
-        ],
-        "clang" => [
-          'env.CC_VER' => [
-            "new"  => "-12",
-            "cur"  => "-11",
-            "old"  => "-10"
+        ]
+      ],
+      "ubuntu-20.04" => [
+        'env.CC_VND' => [
+          "gnu" => [
+            'env.CC_VER' => [
+              "new"  => "-10",
+              "cur"  => "-9",
+            ]
+          ],
+          "clang" => [
+            'env.CC_VER' => [
+              "new"  => "-12",
+              "cur"  => "-11",
+              "old"  => "-10"
+            ]
           ]
         ]
-      ]
+      ],
     ],
-    "ubuntu-18.04" => [
-      'env.CC_VND' => [
-        "gnu" => [
-          'env.CC_VER' => [
-            "new"  => "-10",
-            "cur"  => "-9",
-            "old"  => "-7"
+  ],
+  "Windows" => [
+    'env.OS_VER' => [
+      "windows-2022" => [
+        'env.CC_VND' => [
+          "msvc" => [
+            "env.CC_VER" => [
+              "cur" => " 17 2022"
+            ]
+          ],
+          "mingw" => [
+            "env.CC_VER" => [
+              "cur" => ""
+            ]
           ]
-        ],
-        "clang" => [
-          'env.CC_VER' => [
-            "cur"  => "-9",
+        ]
+      ],
+      "windows-2019" => [
+        'env.CC_VND' => [
+          "msvc" => [
+            "env.CC_VER" => [
+              "cur" => " 16 2019"
+            ]
+          ],
+          "mingw" => [
+            "env.CC_VER" => [
+              "cur" => ""
+            ]
           ]
         ]
-      ]
-    ],
-  ]
+      ],
+    ]
+  ],
+  "macOS" => []
 ];
 const ENV = [
-  "ubuntu-20.04" => [
+  "ubuntu-22.04" => [
     "clang" => [
       "new" => [
         "CXXFLAGS" => "-stdlib=libc++",
-        "INSTALL_CXX" => "libc++-12-dev libc++abi-12-dev"
+        "INSTALL_CXX" => "libc++-14-dev libc++abi-14-dev"
       ],
       "cur" => [
         "CXXFLAGS" => "-stdlib=libc++",
-        "INSTALL_CXX" => "libc++-11-dev libc++abi-11-dev"
-      ],
-      "old" => [
-        "CXXFLAGS" => "-stdlib=libc++",
-        "INSTALL_CXX" => "libc++-10-dev libc++abi-10-dev"
+        "INSTALL_CXX" => "libc++-13-dev libc++abi-13-dev"
       ],
     ]
   ],
-  "ubuntu-18.04" => [
+  "ubuntu-20.04" => [
     "clang" => [
       "new" => [
-        "CXXFLAGS" => "-stdlib=libc++"
+        "CXXFLAGS" => "-stdlib=libc++",
+        "INSTALL_CXX" => "libc++-12-dev libc++abi-12-dev"
       ],
       "cur" => [
-        "CXXFLAGS" => "-stdlib=libc++"
+        "CXXFLAGS" => "-stdlib=libc++",
+        "INSTALL_CXX" => "libc++-11-dev libc++abi-11-dev"
       ],
       "old" => [
-        "CXXFLAGS" => "-stdlib=libc++"
+        "CXXFLAGS" => "-stdlib=libc++",
+        "INSTALL_CXX" => "libc++-10-dev libc++abi-10-dev"
       ],
     ]
-  ]
+  ],
 ];
 
+function set_addpath($os_vnd, $paths) {
+  foreach ((array) $paths as $path) if ($os_vnd == "Windows") {
+?>
+          echo "<?=$path?>" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+<?php
+  } else {
+?>
+          echo 'PATH="$PATH:<?=$path?>"' >> ${GITHUB_ENV}
+<?php
+  }
+}
+function step_setenv($os_vnd, $var, $val) {
+  if ($var === "PATH") {
+    return set_addpath($os_vnd, $val);
+  }
+  if ($os_vnd == "Windows") {
+?>
+          echo '<?=$var?>=<?=$val?>' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+<?php
+  } else {
+?>
+          echo <?=$var?>="<?=$val?>" >> ${GITHUB_ENV}
+<?php
+  }
+}
+
 /**
  * @var bool $splat_map false = no splat map, null = default splat map, true = full splat map
  */
@@ -111,14 +165,10 @@
         run: |
           echo "c:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
           echo "c:\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
-          echo 'CMAKE_GENERATOR=Visual Studio 16 2019' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-      - name: Prepare environment (MinGW)
-        if: env.CC_VND == 'mingw'
-        run: |
-          echo 'CMAKE_GENERATOR=MinGW Makefiles' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
 <?php
-  } elseif ($splat_map !== false) {
-    foreach (MAP as $os_is => $os_vers) {
+  }
+  if ($splat_map !== false) {
+    foreach (MAP[$os_vnd] as $os_is => $os_vers) {
       foreach ($os_vers as $os_ver => $cc_vnds_) {
         if (!$splat_map && DEF[DEF["os"]] != $os_ver) continue;
         foreach ($cc_vnds_ as $cc_vnd_is => $cc_vnds) {
@@ -126,19 +176,18 @@
             if (!$splat_map && DEF[DEF[DEF["os"]]] != $cc_vnd) continue;
             foreach ($cc_vers_ as $cc_ver_is => $cc_vers) {
               foreach ($cc_vers as $cc_ver => $ver) {
-                if (!$splat_map && DEF[DEF[DEF[DEF["os"]]]]["ver"] != $cc_ver) continue;
+                if (!$splat_map && "cur" != $cc_ver) continue;
 ?>
       - name: Prepare environment (<?= "for $cc_ver $cc_vnd on $os_ver" ?>)
         if: (<?="$os_is=='$os_ver') && ($cc_vnd_is=='$cc_vnd') && ($cc_ver_is=='$cc_ver'"?>)
         run: |
-          echo CC="<?=DEF[$cc_vnd]["CC"] . $ver?>" >> ${GITHUB_ENV}
-          echo CXX="<?=DEF[$cc_vnd]["CXX"] . $ver?>" >> ${GITHUB_ENV}
 <?php
+                foreach (DEF[$cc_vnd] as $env => $val) {
+                  step_setenv($os_vnd, $env, $val . $ver);
+                }
                 if (isset(ENV[$os_ver][$cc_vnd][$cc_ver])) {
                   foreach (ENV[$os_ver][$cc_vnd][$cc_ver] as $env => $val) {
-?>
-          echo <?=$env?>="<?=$val?>" >> ${GITHUB_ENV}
-<?php
+                    step_setenv($os_vnd, $env, $val);
                   }
                 }
               }
@@ -172,7 +221,7 @@
   if ($os_vnd === "macOS") :
 ?>
         run: |
-          brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
+          brew install bison flex libevent pkg-config sphinx-doc ${INSTALL_MEMCACHED}
           brew services stop memcached || true
           echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
 <?php
@@ -184,6 +233,8 @@
           release: false
           path-type: inherit
           install: >-
+            bison
+            flex
             rsync
             openssh
 <?php
@@ -197,7 +248,8 @@
           then
             cd memcached
             ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
               --prefix=${MEMCACHED_PREFIX} \
               --enable-sasl \
               --enable-sasl-pwdb \
@@ -244,7 +296,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
@@ -276,8 +328,7 @@
 function defaults($os_vnd = DEF["os"]) {
   $os_ver = DEF[$os_vnd];
   $cc_vnd = DEF[$os_ver];
-  $cc_ver = DEF[$cc_vnd]["ver"];
-  return "$os_ver, $cc_vnd, $cc_ver";
+  return "$os_ver, $cc_vnd";
 }
 
 function env_override($os_vnd, $cc_vnd = null) {
@@ -286,7 +337,7 @@
       OS_VND:   <?=$os_vnd?> #
       OS_VER:   <?=DEF[$os_vnd]?> #
       CC_VND:   <?=$cc_vnd?> #
-      CC_VER:   <?=DEF[$cc_vnd]["ver"]?> #
+      CC_VER:   cur
 <?php
 }
 
@@ -320,51 +371,77 @@
   OS_VND:   <?=DEF["os"]?> #
   OS_VER:   <?=DEF[DEF["os"]]?> #
   CC_VND:   <?=DEF[DEF[DEF["os"]]]?> #
-  CC_VER:   <?=DEF[DEF[DEF[DEF["os"]]]]["ver"]?> #
+  CC_VER:   cur
 
 jobs:
 
-  # new memcached
-  dbg-new:
-    name: dbg-new (<?=defaults()?>)
+  # sanitizer
+  debug-sanitizer:
+    name: debug sanitizer
     runs-on: <?=DEF[DEF["os"]]?> #
+    strategy:
+      matrix:
+        sanitizer: ['address;undefined', 'thread']
+    env:
+      CMAKE_BUILD_TYPE:   "Debug"
+      BUILD_TESTING:      "ON"
+      VERBOSE:            "ON"
+      ENABLE_SANITIZERS:  ${{ matrix.sanitizer }}
+    steps:
+      - uses: actions/checkout@v3
+<?php steps("Linux"); ?>
+
+# memcached
+  debug-memcached:
+    name: debug memcached
+    runs-on: <?=DEF[DEF["os"]]?> #
+    continue-on-error: true
+    strategy:
+      matrix:
+        memcached: ['master', '1.6.17', '1.6.9', '1.5.22', '1.5.6']
     env:
       CMAKE_BUILD_TYPE:   "Debug"
       BUILD_TESTING:      "ON"
       VERBOSE:            "ON"
-      CFLAGS:             "-O0 --coverage"
-      CXXFLAGS:           "-O0 --coverage"
       INSTALL_MEMCACHED:  ""
       MEMCACHED_PREFIX:   "/tmp"
       ENABLE_SASL:        "ON"
     steps:
-      - uses: actions/checkout@v2
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
+      - uses: actions/checkout@v3
         with:
           repository: memcached/memcached
           path: memcached
-          ref: 1.6.7
+          ref: ${{ matrix.memcached }}
 <?php steps("Linux"); ?>
-      - uses: codecov/codecov-action@v1.0.13
 
-  # sanitizer build
-  sanitizer:
+# coverage linux
+  debug-coverage-linux:
+    name: debug coverage (<?=defaults()?>)
     runs-on: <?=DEF[DEF["os"]]?> #
-    strategy:
-      matrix:
-        sanitizer: ['address;undefined', 'thread']
     env:
       CMAKE_BUILD_TYPE:   "Debug"
       BUILD_TESTING:      "ON"
       VERBOSE:            "ON"
-      ENABLE_SANITIZERS:  ${{ matrix.sanitizer }}
+      CFLAGS:             "-O0 --coverage"
+      CXXFLAGS:           "-O0 --coverage"
+      INSTALL_MEMCACHED:  ""
+      MEMCACHED_PREFIX:   "/tmp"
+      ENABLE_SASL:        "ON"
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
+      - uses: actions/checkout@v3
+        with:
+          repository: memcached/memcached
+          path: memcached
+          ref: 1.6.7
 <?php steps("Linux"); ?>
+      - uses: codecov/codecov-action@v3
+
 
-  # mac debug
-  dbg-mac:
-    name: dbg-mac (<?=DEF["macOS"]?>, <?=DEF[DEF["macOS"]]?>, <?=DEF[DEF[DEF["macOS"]]]["ver"]?>)
+  # coverage mac
+  debug-coverage-mac:
+    name: debug coverage (<?=defaults("macOS")?>)
     runs-on: <?=DEF["macOS"]?> #
     env:
       CMAKE_BUILD_TYPE:   "Debug"
@@ -375,31 +452,36 @@
 <?php env_override("macOS")?>
     continue-on-error: true
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 <?php steps("macOS", false); ?>
-      - uses: codecov/codecov-action@v1.0.13
+      - uses: codecov/codecov-action@v3
 
-  # mac release
-  rel-mac:
-    name: rel-mac (<?=DEF["macOS"]?>, <?=DEF[DEF["macOS"]]?>, <?=DEF[DEF[DEF["macOS"]]]["ver"]?>)
-    runs-on: <?=DEF["macOS"]?> #
+  # mac release builds
+  mac:
+    name: release
+    strategy:
+      fail-fast: false
+      matrix:
+        os_ver: [macos-12, macos-11, macos-10.15]
+    runs-on: ${{ matrix.os_ver }}
     env:
       CMAKE_BUILD_TYPE:   "Release"
       BUILD_DOCS_MANGZ:   "ON"
 <?php env_override("macOS")?>
     continue-on-error: true
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
 <?php steps("macOS", false); ?>
 
   # windows release builds
   windows:
+    name: release
     strategy:
       fail-fast: false
       matrix:
-        os_ver: [<?=DEF["Windows"]?>]
+        os_ver: [windows-2022, windows-2019]
         cc_vnd: [msvc, mingw]
         cc_ver: [cur]
     runs-on: ${{ matrix.os_ver }}
@@ -411,7 +493,7 @@
       CC_VND: ${{ matrix.cc_vnd }}
       CC_VER: ${{ matrix.cc_ver }}
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
 <?php steps("Windows", true); ?>
@@ -421,7 +503,7 @@
     strategy:
       fail-fast: false
       matrix:
-        os_ver: [ubuntu-20.04, ubuntu-18.04]
+        os_ver: [ubuntu-22.04, ubuntu-20.04]
         cc_vnd: [gnu, clang]
         cc_ver: [new, cur, old]
     runs-on: ${{ matrix.os_ver }}
@@ -434,7 +516,7 @@
       CC_VND: ${{ matrix.cc_vnd }}
       CC_VER: ${{ matrix.cc_ver }}
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
 <?php steps("Linux", true); ?>
diff -Nru libmemcached-1.1.3/.github/workflows/cmake-build-ci.yml libmemcached-1.1.4/.github/workflows/cmake-build-ci.yml
--- libmemcached-1.1.3/.github/workflows/cmake-build-ci.yml	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/.github/workflows/cmake-build-ci.yml	2023-03-06 19:36:56.000000000 +0100
@@ -26,37 +26,122 @@
   ENABLE_HASH_HSIEH:  "ON"
   ENABLE_DTRACE:      "OFF"
   OS_VND:   Linux #
-  OS_VER:   ubuntu-20.04 #
+  OS_VER:   ubuntu-22.04 #
   CC_VND:   gnu #
-  CC_VER:   cur #
+  CC_VER:   cur
 
 jobs:
 
-  # new memcached
-  dbg-new:
-    name: dbg-new (ubuntu-20.04, gnu, cur)
-    runs-on: ubuntu-20.04 #
+  # sanitizer
+  debug-sanitizer:
+    name: debug sanitizer
+    runs-on: ubuntu-22.04 #
+    strategy:
+      matrix:
+        sanitizer: ['address;undefined', 'thread']
+    env:
+      CMAKE_BUILD_TYPE:   "Debug"
+      BUILD_TESTING:      "ON"
+      VERBOSE:            "ON"
+      ENABLE_SANITIZERS:  ${{ matrix.sanitizer }}
+    steps:
+      - uses: actions/checkout@v3
+      - name: Prepare environment (for cur gnu on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
+        run: |
+          echo CC="gcc-11" >> ${GITHUB_ENV}
+          echo CXX="g++-11" >> ${GITHUB_ENV}
+      - name: Install dependencies (Linux)
+        if: runner.os == 'Linux'
+        run: |
+          sudo apt-get update -y
+          sudo apt-get install -my \
+            libevent-dev \
+            libsasl2-dev \
+            libtbb-dev \
+            python3-sphinx \
+            ${INSTALL_MEMCACHED} \
+            ${INSTALL_CC} ${INSTALL_CXX}
+          sudo systemctl stop memcached || true
+      - name: Build memcached
+        if: runner.os != 'Windows'
+        run: |
+          if test -d memcached
+          then
+            cd memcached
+            ./autogen.sh
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
+              --prefix=${MEMCACHED_PREFIX} \
+              --enable-sasl \
+              --enable-sasl-pwdb \
+              --disable-coverage \
+              --disable-dependency-tracking \
+              --disable-docs \
+              --disable-extstore \
+              --disable-option-checking \
+              ;
+            make -j2
+            make install
+            cd ..
+            echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
+          fi
+      - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
+        run: cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
+      - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
+        run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
+      - name: Test
+        if: env.BUILD_TESTING == 'ON'
+        run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
+      - name: Install
+        if: env.BUILD_TESTING == 'ON'
+        run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
+      - name: Failed tests log
+        if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
+        run: cat build/Testing/Temporary/LastTest.log || true
+      - name: Package
+        env:
+          PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
+        run: |
+          cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
+          cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
+          cmake -DCPACK_COMPONENT_INSTALL=ON build
+          cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
+          cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
+      - name: Notify Gitter
+        env:
+          GITTER: ${{ secrets.GITTER }}
+        if: (success() || failure()) && env.GITTER != ''
+        run: bash .github/notify-gitter.sh ${{ job.status }}
+
+# memcached
+  debug-memcached:
+    name: debug memcached
+    runs-on: ubuntu-22.04 #
+    continue-on-error: true
+    strategy:
+      matrix:
+        memcached: ['master', '1.6.17', '1.6.9', '1.5.22', '1.5.6']
     env:
       CMAKE_BUILD_TYPE:   "Debug"
       BUILD_TESTING:      "ON"
       VERBOSE:            "ON"
-      CFLAGS:             "-O0 --coverage"
-      CXXFLAGS:           "-O0 --coverage"
       INSTALL_MEMCACHED:  ""
       MEMCACHED_PREFIX:   "/tmp"
       ENABLE_SASL:        "ON"
     steps:
-      - uses: actions/checkout@v2
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
+      - uses: actions/checkout@v3
         with:
           repository: memcached/memcached
           path: memcached
-          ref: 1.6.7
-      - name: Prepare environment (for cur gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
+          ref: ${{ matrix.memcached }}
+      - name: Prepare environment (for cur gnu on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
         run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
+          echo CC="gcc-11" >> ${GITHUB_ENV}
+          echo CXX="g++-11" >> ${GITHUB_ENV}
       - name: Install dependencies (Linux)
         if: runner.os == 'Linux'
         run: |
@@ -76,7 +161,8 @@
           then
             cd memcached
             ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
               --prefix=${MEMCACHED_PREFIX} \
               --enable-sasl \
               --enable-sasl-pwdb \
@@ -107,7 +193,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
@@ -119,26 +205,32 @@
           GITTER: ${{ secrets.GITTER }}
         if: (success() || failure()) && env.GITTER != ''
         run: bash .github/notify-gitter.sh ${{ job.status }}
-      - uses: codecov/codecov-action@v1.0.13
 
-  # sanitizer build
-  sanitizer:
-    runs-on: ubuntu-20.04 #
-    strategy:
-      matrix:
-        sanitizer: ['address;undefined', 'thread']
+# coverage linux
+  debug-coverage-linux:
+    name: debug coverage (ubuntu-22.04, gnu)
+    runs-on: ubuntu-22.04 #
     env:
       CMAKE_BUILD_TYPE:   "Debug"
       BUILD_TESTING:      "ON"
       VERBOSE:            "ON"
-      ENABLE_SANITIZERS:  ${{ matrix.sanitizer }}
+      CFLAGS:             "-O0 --coverage"
+      CXXFLAGS:           "-O0 --coverage"
+      INSTALL_MEMCACHED:  ""
+      MEMCACHED_PREFIX:   "/tmp"
+      ENABLE_SASL:        "ON"
     steps:
-      - uses: actions/checkout@v2
-      - name: Prepare environment (for cur gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
+      - uses: actions/checkout@v3
+      - uses: actions/checkout@v3
+        with:
+          repository: memcached/memcached
+          path: memcached
+          ref: 1.6.7
+      - name: Prepare environment (for cur gnu on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
         run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
+          echo CC="gcc-11" >> ${GITHUB_ENV}
+          echo CXX="g++-11" >> ${GITHUB_ENV}
       - name: Install dependencies (Linux)
         if: runner.os == 'Linux'
         run: |
@@ -158,7 +250,8 @@
           then
             cd memcached
             ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
               --prefix=${MEMCACHED_PREFIX} \
               --enable-sasl \
               --enable-sasl-pwdb \
@@ -189,7 +282,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
@@ -201,11 +294,13 @@
           GITTER: ${{ secrets.GITTER }}
         if: (success() || failure()) && env.GITTER != ''
         run: bash .github/notify-gitter.sh ${{ job.status }}
+      - uses: codecov/codecov-action@v3
+
 
-  # mac debug
-  dbg-mac:
-    name: dbg-mac (macos-10.15, clang, cur)
-    runs-on: macos-10.15 #
+  # coverage mac
+  debug-coverage-mac:
+    name: debug coverage (macos-12, clang)
+    runs-on: macos-12 #
     env:
       CMAKE_BUILD_TYPE:   "Debug"
       BUILD_TESTING:      "ON"
@@ -213,16 +308,16 @@
       CFLAGS:             "-O0 --coverage"
       CXXFLAGS:           "-O0 --coverage"
       OS_VND:   macOS #
-      OS_VER:   macos-10.15 #
+      OS_VER:   macos-12 #
       CC_VND:   clang #
-      CC_VER:   cur #
+      CC_VER:   cur
     continue-on-error: true
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
       - name: Install dependencies (macOS)
         if: runner.os == 'macOS'
         run: |
-          brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
+          brew install bison flex libevent pkg-config sphinx-doc ${INSTALL_MEMCACHED}
           brew services stop memcached || true
           echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
       - name: Build memcached
@@ -232,7 +327,8 @@
           then
             cd memcached
             ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
               --prefix=${MEMCACHED_PREFIX} \
               --enable-sasl \
               --enable-sasl-pwdb \
@@ -263,7 +359,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
@@ -275,28 +371,32 @@
           GITTER: ${{ secrets.GITTER }}
         if: (success() || failure()) && env.GITTER != ''
         run: bash .github/notify-gitter.sh ${{ job.status }}
-      - uses: codecov/codecov-action@v1.0.13
+      - uses: codecov/codecov-action@v3
 
-  # mac release
-  rel-mac:
-    name: rel-mac (macos-10.15, clang, cur)
-    runs-on: macos-10.15 #
+  # mac release builds
+  mac:
+    name: release
+    strategy:
+      fail-fast: false
+      matrix:
+        os_ver: [macos-12, macos-11, macos-10.15]
+    runs-on: ${{ matrix.os_ver }}
     env:
       CMAKE_BUILD_TYPE:   "Release"
       BUILD_DOCS_MANGZ:   "ON"
       OS_VND:   macOS #
-      OS_VER:   macos-10.15 #
+      OS_VER:   macos-12 #
       CC_VND:   clang #
-      CC_VER:   cur #
+      CC_VER:   cur
     continue-on-error: true
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
       - name: Install dependencies (macOS)
         if: runner.os == 'macOS'
         run: |
-          brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
+          brew install bison flex libevent pkg-config sphinx-doc ${INSTALL_MEMCACHED}
           brew services stop memcached || true
           echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
       - name: Build memcached
@@ -306,7 +406,8 @@
           then
             cd memcached
             ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
               --prefix=${MEMCACHED_PREFIX} \
               --enable-sasl \
               --enable-sasl-pwdb \
@@ -337,7 +438,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
@@ -352,10 +453,11 @@
 
   # windows release builds
   windows:
+    name: release
     strategy:
       fail-fast: false
       matrix:
-        os_ver: [windows-2019]
+        os_ver: [windows-2022, windows-2019]
         cc_vnd: [msvc, mingw]
         cc_ver: [cur]
     runs-on: ${{ matrix.os_ver }}
@@ -367,16 +469,27 @@
       CC_VND: ${{ matrix.cc_vnd }}
       CC_VER: ${{ matrix.cc_ver }}
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
       - name: Prepare environment (Windows)
         run: |
           echo "c:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
           echo "c:\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+      - name: Prepare environment (for cur msvc on windows-2022)
+        if: (env.OS_VER=='windows-2022') && (env.CC_VND=='msvc') && (env.CC_VER=='cur')
+        run: |
+          echo 'CMAKE_GENERATOR=Visual Studio 17 2022' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+      - name: Prepare environment (for cur mingw on windows-2022)
+        if: (env.OS_VER=='windows-2022') && (env.CC_VND=='mingw') && (env.CC_VER=='cur')
+        run: |
+          echo 'CMAKE_GENERATOR=MinGW Makefiles' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+      - name: Prepare environment (for cur msvc on windows-2019)
+        if: (env.OS_VER=='windows-2019') && (env.CC_VND=='msvc') && (env.CC_VER=='cur')
+        run: |
           echo 'CMAKE_GENERATOR=Visual Studio 16 2019' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
-      - name: Prepare environment (MinGW)
-        if: env.CC_VND == 'mingw'
+      - name: Prepare environment (for cur mingw on windows-2019)
+        if: (env.OS_VER=='windows-2019') && (env.CC_VND=='mingw') && (env.CC_VER=='cur')
         run: |
           echo 'CMAKE_GENERATOR=MinGW Makefiles' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
       - name: Install dependencies (Windows)
@@ -386,6 +499,8 @@
           release: false
           path-type: inherit
           install: >-
+            bison
+            flex
             rsync
             openssh
       - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
@@ -404,7 +519,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
@@ -422,7 +537,7 @@
     strategy:
       fail-fast: false
       matrix:
-        os_ver: [ubuntu-20.04, ubuntu-18.04]
+        os_ver: [ubuntu-22.04, ubuntu-20.04]
         cc_vnd: [gnu, clang]
         cc_ver: [new, cur, old]
     runs-on: ${{ matrix.os_ver }}
@@ -435,9 +550,38 @@
       CC_VND: ${{ matrix.cc_vnd }}
       CC_VER: ${{ matrix.cc_ver }}
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
         with:
           fetch-depth: 0
+      - name: Prepare environment (for new gnu on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
+        run: |
+          echo CC="gcc-12" >> ${GITHUB_ENV}
+          echo CXX="g++-12" >> ${GITHUB_ENV}
+      - name: Prepare environment (for cur gnu on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
+        run: |
+          echo CC="gcc-11" >> ${GITHUB_ENV}
+          echo CXX="g++-11" >> ${GITHUB_ENV}
+      - name: Prepare environment (for old gnu on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
+        run: |
+          echo CC="gcc-10" >> ${GITHUB_ENV}
+          echo CXX="g++-10" >> ${GITHUB_ENV}
+      - name: Prepare environment (for new clang on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
+        run: |
+          echo CC="clang-14" >> ${GITHUB_ENV}
+          echo CXX="clang++-14" >> ${GITHUB_ENV}
+          echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
+          echo INSTALL_CXX="libc++-14-dev libc++abi-14-dev" >> ${GITHUB_ENV}
+      - name: Prepare environment (for cur clang on ubuntu-22.04)
+        if: (env.OS_VER=='ubuntu-22.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
+        run: |
+          echo CC="clang-13" >> ${GITHUB_ENV}
+          echo CXX="clang++-13" >> ${GITHUB_ENV}
+          echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
+          echo INSTALL_CXX="libc++-13-dev libc++abi-13-dev" >> ${GITHUB_ENV}
       - name: Prepare environment (for new gnu on ubuntu-20.04)
         if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
         run: |
@@ -469,27 +613,6 @@
           echo CXX="clang++-10" >> ${GITHUB_ENV}
           echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
           echo INSTALL_CXX="libc++-10-dev libc++abi-10-dev" >> ${GITHUB_ENV}
-      - name: Prepare environment (for new gnu on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
-        run: |
-          echo CC="gcc-10" >> ${GITHUB_ENV}
-          echo CXX="g++-10" >> ${GITHUB_ENV}
-      - name: Prepare environment (for cur gnu on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
-        run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
-      - name: Prepare environment (for old gnu on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
-        run: |
-          echo CC="gcc-7" >> ${GITHUB_ENV}
-          echo CXX="g++-7" >> ${GITHUB_ENV}
-      - name: Prepare environment (for cur clang on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
-        run: |
-          echo CC="clang-9" >> ${GITHUB_ENV}
-          echo CXX="clang++-9" >> ${GITHUB_ENV}
-          echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
       - name: Install dependencies (Linux)
         if: runner.os == 'Linux'
         run: |
@@ -509,7 +632,8 @@
           then
             cd memcached
             ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
+            cp configure{,.old} && sed -e 's/-Werror//g' <configure.old >configure
+            ./configure CFLAGS="-O2 -pipe -fcommon" \
               --prefix=${MEMCACHED_PREFIX} \
               --enable-sasl \
               --enable-sasl-pwdb \
@@ -540,7 +664,7 @@
       - name: Package
         env:
           PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
-        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new  ')
+        if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release'
         run: |
           cmake -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -S . -B build
           cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
diff -Nru libmemcached-1.1.3/src/bin/CMakeLists.txt libmemcached-1.1.4/src/bin/CMakeLists.txt
--- libmemcached-1.1.3/src/bin/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/bin/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -1,8 +1,8 @@
 add_subdirectory(common)
 
 foreach(CLIENT IN LISTS CLIENTS)
-    add_executable(${CLIENT} ${CLIENT}.cc)
-    set_property(TARGET ${CLIENT} PROPERTY CXX_STANDARD ${CXX_STANDARD})
+    add_executable(${CLIENT} mem${CLIENT}.cc)
+    set_target_properties(${CLIENT} PROPERTIES CXX_STANDARD ${CXX_STANDARD} OUTPUT_NAME ${CLIENT_PREFIX}${CLIENT})
     target_include_directories(${CLIENT} PRIVATE ..)
     target_link_libraries(${CLIENT} PRIVATE libclient_common)
     if(CMAKE_INSTALL_RPATH)
@@ -14,9 +14,9 @@
 
 # extra sources
 
-target_sources(memcapable PRIVATE ../libmemcached/byteorder.cc)
+target_sources(capable PRIVATE ../libmemcached/byteorder.cc)
 
 # extra libs
 
-target_link_libraries(memping PRIVATE libmemcachedutil)
-target_link_libraries(memslap PRIVATE Threads::Threads)
+target_link_libraries(ping PRIVATE libmemcachedutil)
+target_link_libraries(slap PRIVATE Threads::Threads)
diff -Nru libmemcached-1.1.3/src/libhashkit/CMakeLists.txt libmemcached-1.1.4/src/libhashkit/CMakeLists.txt
--- libmemcached-1.1.3/src/libhashkit/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libhashkit/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -21,12 +21,12 @@
         strerror.cc
         string.cc
         )
-add_library(libhashkit SHARED)
+add_library(libhashkit)
 add_library(hashkit ALIAS libhashkit)
 set_target_properties(libhashkit PROPERTIES
         CXX_STANDARD ${CXX_STANDARD}
-        LIBRARY_OUTPUT_NAME hashkit
-        LIBRARY_OUTPUT_NAME_DEBUG hashkit-dbg
+        OUTPUT_NAME hashkit
+        OUTPUT_NAME_DEBUG hashkit-dbg
         SOVERSION ${LIBHASHKIT_SO_SOVERSION}
         VERSION ${LIBHASHKIT_SO_VERSION})
 target_compile_options(libhashkit PRIVATE -DBUILDING_HASHKIT)
diff -Nru libmemcached-1.1.3/src/libmemcached/CMakeLists.txt libmemcached-1.1.4/src/libmemcached/CMakeLists.txt
--- libmemcached-1.1.3/src/libmemcached/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libmemcached/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -85,12 +85,12 @@
         )
 endif()
 
-add_library(libmemcached SHARED)
+add_library(libmemcached)
 add_library(memcached ALIAS libmemcached)
 set_target_properties(libmemcached PROPERTIES
         CXX_STANDARD ${CXX_STANDARD}
-        LIBRARY_OUTPUT_NAME memcached
-        LIBRARY_OUTPUT_NAME_DEBUG memcached-dbg
+        OUTPUT_NAME memcached
+        OUTPUT_NAME_DEBUG memcached-dbg
         SOVERSION ${LIBMEMCACHED_SO_SOVERSION}
         VERSION ${LIBMEMCACHED_SO_VERSION})
 target_compile_definitions(libmemcached PRIVATE -DBUILDING_LIBMEMCACHED)
@@ -147,7 +147,7 @@
 
 add_library(libmemcachedinternal STATIC)
 add_library(memcachedinternal ALIAS libmemcachedinternal)
-set_target_properties(libmemcachedinternal PROPERTIES CXX_STANDARD ${CXX_STANDARD} LIBRARY_OUTPUT_NAME memcachedinternal)
+set_target_properties(libmemcachedinternal PROPERTIES CXX_STANDARD ${CXX_STANDARD} OUTPUT_NAME memcachedinternal)
 target_compile_definitions(libmemcachedinternal PRIVATE -DBUILDING_LIBMEMCACHEDINTERNAL)
 target_link_libraries(libmemcachedinternal PUBLIC libhashkit Threads::Threads ${CMAKE_DL_LIBS})
 target_link_libraries(libmemcachedinternal PRIVATE p9y)
diff -Nru libmemcached-1.1.3/src/libmemcached/purge.cc libmemcached-1.1.4/src/libmemcached/purge.cc
--- libmemcached-1.1.3/src/libmemcached/purge.cc	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libmemcached/purge.cc	2023-03-06 19:36:56.000000000 +0100
@@ -108,9 +108,6 @@
         WATCHPOINT_ERROR(rc);
         is_successful = false;
       }
-      if (rc == MEMCACHED_TIMEOUT) {
-        break;
-      }
 
       if (ptr->root->callbacks) {
         memcached_callback_st cb = *ptr->root->callbacks;
diff -Nru libmemcached-1.1.3/src/libmemcached/response.cc libmemcached-1.1.4/src/libmemcached/response.cc
--- libmemcached-1.1.3/src/libmemcached/response.cc	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libmemcached/response.cc	2023-03-06 19:36:56.000000000 +0100
@@ -761,7 +761,7 @@
     rc = textual_read_one_response(instance, buffer, buffer_length, result);
   }
 
-  if (memcached_fatal(rc) && rc != MEMCACHED_TIMEOUT) {
+  if (memcached_fatal(rc)) {
     memcached_io_reset(instance);
   }
 
diff -Nru libmemcached-1.1.3/src/libmemcached/sasl.cc libmemcached-1.1.4/src/libmemcached/sasl.cc
--- libmemcached-1.1.3/src/libmemcached/sasl.cc	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libmemcached/sasl.cc	2023-03-06 19:36:56.000000000 +0100
@@ -92,7 +92,11 @@
 extern "C" {
 
 static void sasl_shutdown_function() {
+#if HAVE_SASL_CLIENT_DONE
+  (void) sasl_client_done();
+#else
   sasl_done();
+#endif
 }
 
 static std::atomic<int> sasl_startup_state(SASL_OK);
diff -Nru libmemcached-1.1.3/src/libmemcachedprotocol/CMakeLists.txt libmemcached-1.1.4/src/libmemcachedprotocol/CMakeLists.txt
--- libmemcached-1.1.3/src/libmemcachedprotocol/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libmemcachedprotocol/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -9,12 +9,12 @@
         pedantic.c
         ../libmemcached/byteorder.cc
         )
-add_library(libmemcachedprotocol SHARED)
+add_library(libmemcachedprotocol)
 add_library(memcachedprotocol ALIAS libmemcachedprotocol)
 set_target_properties(libmemcachedprotocol PROPERTIES
         CXX_STANDARD ${CXX_STANDARD}
-        LIBRARY_OUTPUT_NAME memcachedprotocol
-        LIBRARY_OUTPUT_NAME_DEBUG memcachedprotocol-dbg
+        OUTPUT_NAME memcachedprotocol
+        OUTPUT_NAME_DEBUG memcachedprotocol-dbg
         SOVERSION ${LIBMEMCACHEDPROTOCOL_SO_SOVERSION}
         VERSION ${LIBMEMCACHEDPROTOCOL_SO_VERSION})
 target_compile_definitions(libmemcachedprotocol PRIVATE -DBUILDING_LIBMEMCACHED)
diff -Nru libmemcached-1.1.3/src/libmemcachedutil/CMakeLists.txt libmemcached-1.1.4/src/libmemcachedutil/CMakeLists.txt
--- libmemcached-1.1.3/src/libmemcachedutil/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/libmemcachedutil/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -6,15 +6,15 @@
         ping.cc
         version.cc
         )
-add_library(libmemcachedutil SHARED)
+add_library(libmemcachedutil)
 add_library(memcachedutil ALIAS libmemcachedutil)
 if(CMAKE_USE_PTHREADS_INIT)
     target_sources(libmemcachedutil PRIVATE pool.cc)
 endif()
 set_target_properties(libmemcachedutil PROPERTIES
         CXX_STANDARD ${CXX_STANDARD}
-        LIBRARY_OUTPUT_NAME memcachedutil
-        LIBRARY_OUTPUT_NAME_DEBUG memcachedutil-dbg
+        OUTPUT_NAME memcachedutil
+        OUTPUT_NAME_DEBUG memcachedutil-dbg
         SOVERSION ${LIBMEMCACHEDUTIL_SO_SOVERSION}
         VERSION ${LIBMEMCACHEDUTIL_SO_VERSION})
 target_compile_definitions(libmemcachedutil PRIVATE -DBUILDING_LIBMEMCACHED)
@@ -23,10 +23,7 @@
 		LINK_FLAGS "-Wl,-undefined,dynamic_lookup"
 		)
 endif()
-if(MSVC OR MINGW)
-    target_link_libraries(libmemcachedutil PUBLIC libmemcached)
-endif()
-target_link_libraries(libmemcachedutil PUBLIC Threads::Threads)
+target_link_libraries(libmemcachedutil PUBLIC libmemcached Threads::Threads)
 if(HAVE_LIBSASL)
     target_link_libraries(libmemcachedutil PUBLIC ${LIBSASL})
 endif()
diff -Nru libmemcached-1.1.3/src/p9y/CMakeLists.txt libmemcached-1.1.4/src/p9y/CMakeLists.txt
--- libmemcached-1.1.3/src/p9y/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/src/p9y/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -20,6 +20,17 @@
     ${CMAKE_BINARY_DIR}/include
     )
 
+install(TARGETS p9y EXPORT p9y-targets
+        RUNTIME COMPONENT bin DESTINATION ${CMAKE_INSTALL_BINDIR}
+        ARCHIVE COMPONENT lib DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        LIBRARY COMPONENT lib DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        ${TARGET_NAMELINK_COMPONENT}
+        )
+export(EXPORT p9y-targets NAMESPACE libmemcached::)
+install(EXPORT p9y-targets NAMESPACE libmemcached::
+        COMPONENT dev
+        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+
 if(NOT HAVE_GETOPT_H)
     target_sources(p9y PRIVATE getopt.c)
 endif()
diff -Nru libmemcached-1.1.3/test/CMakeLists.txt libmemcached-1.1.4/test/CMakeLists.txt
--- libmemcached-1.1.3/test/CMakeLists.txt	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/test/CMakeLists.txt	2023-03-06 19:36:56.000000000 +0100
@@ -70,7 +70,7 @@
 add_dependencies(runtests ${CLIENTS} timeout)
 if(TARGET memaslap)
     configure_set(HAVE_MEMASLAP 1)
-    add_dependencies(runtests memaslap)
+    add_dependencies(runtests aslap)
 endif()
 
 configure_file(${CONFIGURE_FILE_IN} ${CONFIGURE_FILE_OUT} @ONLY)
diff -Nru libmemcached-1.1.3/test/lib/ReturnMatcher.cpp libmemcached-1.1.4/test/lib/ReturnMatcher.cpp
--- libmemcached-1.1.3/test/lib/ReturnMatcher.cpp	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/test/lib/ReturnMatcher.cpp	2023-03-06 19:36:56.000000000 +0100
@@ -24,7 +24,7 @@
 }
 
 string ReturnMatcher::describe() const {
-  return "is " + to_string(expected)
-         + "\n  actual: " + memcached_last_error_message(memc);
+  return "// but '" + to_string(expected) + "' was expected\n"
+         + "last error: " + memcached_last_error_message(memc);
 }
 
diff -Nru libmemcached-1.1.3/test/tests/memcached/noblock.cpp libmemcached-1.1.4/test/tests/memcached/noblock.cpp
--- libmemcached-1.1.3/test/tests/memcached/noblock.cpp	2023-02-03 11:59:40.000000000 +0100
+++ libmemcached-1.1.4/test/tests/memcached/noblock.cpp	2023-03-06 19:36:56.000000000 +0100
@@ -10,7 +10,7 @@
   REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, 1));
   REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout));
 
-  auto num = timeout ? 10'000 : 1'000'000;
+  auto num = 10000;
   auto hit = 0u;
   auto rnd = random_ascii_string(512);
   for (auto i = 0; i < num; ++i) {
@@ -23,20 +23,16 @@
       break;
     case MEMCACHED_TIMEOUT:
     case MEMCACHED_WRITE_FAILURE:
-      if(!timeout) {
-        --i;
-      }
       ++hit;
-      REQUIRE(true);
       break;
     default:
       REQUIRE(false);
     }
   }
-  INFO("failures triggered: " << hit);
+  INFO("timeout=" << timeout << " failures triggered: " << hit);
   if (timeout) {
-    CHECK_FALSE(hit);
+    REQUIRE_FALSE(hit);
   } else {
-    CHECK(hit > 0);
+    REQUIRE(hit > 0);
   }
 }
diff -Nru libmemcached-1.1.3/test/tests/memcached/regression/gh-php-memcached_0531.cpp libmemcached-1.1.4/test/tests/memcached/regression/gh-php-memcached_0531.cpp
--- libmemcached-1.1.3/test/tests/memcached/regression/gh-php-memcached_0531.cpp	1970-01-01 01:00:00.000000000 +0100
+++ libmemcached-1.1.4/test/tests/memcached/regression/gh-php-memcached_0531.cpp	2023-03-06 19:36:56.000000000 +0100
@@ -0,0 +1,29 @@
+#include "test/lib/common.hpp"
+#include "test/lib/MemcachedCluster.hpp"
+
+TEST_CASE("memcached_regression_gh-php-memcached_0531") {
+  auto test = MemcachedCluster{Cluster{Server{MEMCACHED_BINARY, {"-p", random_socket_or_port_string("-p")}}, 1}};
+  auto memc = &test.memc;
+  auto nonblock = GENERATE(0, 1);
+
+  INFO("nonblock=" << nonblock);
+
+  REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, nonblock));
+
+  REQUIRE_SUCCESS(memcached_set(memc, S("first"), S("first"), 0, 0));
+  REQUIRE_SUCCESS(memcached_set(memc, S("second"), S("second"), 0, 0));
+
+  REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, 0));
+
+  memcached_return_t rc;
+  size_t len;
+  Malloced value1(memcached_get(memc, S("first"), &len, nullptr, &rc));
+  REQUIRE_RC(MEMCACHED_TIMEOUT, rc);
+  REQUIRE_FALSE(*value1);
+
+  REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, 100));
+
+  Malloced value2(memcached_get(memc, S("second"), &len, nullptr, &rc));
+  REQUIRE_SUCCESS(rc);
+  REQUIRE(string(*value2) == string("second"));
+}

--- End Message ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply to: