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

Bug#1033034: unblock: libmemcached/1.1.4-1



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"));
+}

Reply to: