mirror of
https://github.com/phpredis/phpredis.git
synced 2026-06-19 07:35:31 +00:00
Refactor redis_session
Use strpprintf instead of zend_string_alloc + memcpy.
This commit is contained in:
+2
-6
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user