From 422af2eeff56c449d25aecbcf8b95771a35b3b80 Mon Sep 17 00:00:00 2001 From: Aaron Stone Date: Thu, 18 Jan 2018 04:42:21 -0800 Subject: [PATCH] Fix session persistence by checking memcached behavior values before setting --- php_memcached_session.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/php_memcached_session.c b/php_memcached_session.c index ab3e7222..d8e9be62 100644 --- a/php_memcached_session.c +++ b/php_memcached_session.c @@ -186,12 +186,15 @@ void s_unlock_session(memcached_st *memc) static zend_bool s_configure_from_ini_values(memcached_st *memc, zend_bool silent) { - memcached_return rc; - #define check_set_behavior(behavior, value) \ - if ((rc = memcached_behavior_set(memc, (behavior), (value))) != MEMCACHED_SUCCESS) { \ - if (!silent) { php_error_docref(NULL, E_WARNING, "failed to initialise session memcached configuration: %s", memcached_strerror(memc, rc)); } \ - return 0; \ + if ((value) != memcached_behavior_get(memc, (behavior))) { \ + memcached_return rc; \ + if ((rc = memcached_behavior_set(memc, (behavior), (value))) != MEMCACHED_SUCCESS) { \ + if (!silent) { \ + php_error_docref(NULL, E_WARNING, "failed to initialise session memcached configuration: %s", memcached_strerror(memc, rc)); \ + } \ + return 0; \ + } \ } if (MEMC_SESS_INI(binary_protocol_enabled)) { @@ -243,7 +246,7 @@ zend_bool s_configure_from_ini_values(memcached_st *memc, zend_bool silent) user_data->has_sasl_data = 1; } -#undef safe_set_behavior +#undef check_set_behavior return 1; }