Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Meissner <marius.meissner@sixt.com>2018-03-05 17:06:06 +0300
committerMarius Meissner <marius.meissner@sixt.com>2018-03-05 17:06:06 +0300
commit0a799af914cc1db953f5a56d66f9b788285b01c5 (patch)
tree3d2080bc079d690ac5a8b62a61491423ff860fcb /redis_session.c
parent92d90950b6393e710534acb6ced2b0b1fab04c8b (diff)
PR-1312: Only copy sesseion key if it changed
Diffstat (limited to 'redis_session.c')
-rw-r--r--redis_session.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/redis_session.c b/redis_session.c
index 053888bf..41177e73 100644
--- a/redis_session.c
+++ b/redis_session.c
@@ -738,12 +738,10 @@ PS_WRITE_FUNC(redis)
session = redis_session_key(rpm, key, strlen(key), &session_len);
/* We need to check for PHP5 if the session key changes (a bug with session_regenerate_id() is causing a missing PS_CREATE_SID call)*/
- char *session_key_nt = estrndup(session, session_len);
-
- int session_key_changed = strcmp(pool->lock_status->session_key, session_key_nt) != 0;
+ int session_key_changed = strlen(pool->lock_status->session_key) != session_len || strncmp(pool->lock_status->session_key, session, session_len) != 0;
if (session_key_changed) {
efree(pool->lock_status->session_key);
- pool->lock_status->session_key = session_key_nt;
+ pool->lock_status->session_key = estrndup(session, session_len);
}
if (session_key_changed && lock_acquire(redis_sock, pool->lock_status TSRMLS_CC) != SUCCESS) {