Refactor redis_session

Use strpprintf instead of zend_string_alloc + memcpy.
This commit is contained in:
Pavlo Yatsukhnenko
2019-07-27 21:03:23 +03:00
parent 7d4470a735
commit 91a8e73441
+2 -6
View File
@@ -207,7 +207,7 @@ static int set_session_lock_key(RedisSock *redis_sock, char *cmd, int cmd_len
static int lock_acquire(RedisSock *redis_sock, redis_session_lock_status *lock_status
)
{
char *cmd, hostname[HOST_NAME_MAX] = {0}, suffix[] = "_LOCK", pid[32];
char *cmd, hostname[HOST_NAME_MAX] = {0}, suffix[] = "_LOCK";
int cmd_len, lock_wait_time, retries, i, set_lock_key_result, expiry;
/* Short circuit if we are already locked or not using session locks */
@@ -240,12 +240,8 @@ static int lock_acquire(RedisSock *redis_sock, redis_session_lock_status *lock_s
/* Calculate lock secret */
gethostname(hostname, HOST_NAME_MAX);
size_t hostname_len = strlen(hostname);
size_t pid_len = snprintf(pid, sizeof(pid), "|%ld", (long)getpid());
if (lock_status->lock_secret) zend_string_release(lock_status->lock_secret);
lock_status->lock_secret = zend_string_alloc(hostname_len + pid_len, 0);
memcpy(ZSTR_VAL(lock_status->lock_secret), hostname, hostname_len);
memcpy(ZSTR_VAL(lock_status->lock_secret) + hostname_len, pid, pid_len);
lock_status->lock_secret = strpprintf(0, "%s|%ld", hostname, (long)getpid());
if (expiry > 0) {
cmd_len = REDIS_SPPRINTF(&cmd, "SET", "SSssd", lock_status->lock_key,