Sitelet https://github.com/phpredis/phpredis/commit/91a8e734
Skip to content

Commit 91a8e73

Browse files
committed
Refactor redis_session
Use strpprintf instead of zend_string_alloc + memcpy.
1 parent 7d4470a commit 91a8e73

1 file changed

Lines changed: 2 additions & 6 deletions

File tree

‎redis_session.c‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ static int set_session_lock_key(RedisSock *redis_sock, char *cmd, int cmd_len
207207
static int lock_acquire(RedisSock *redis_sock, redis_session_lock_status *lock_status
208208
)
209209
{
210-
char *cmd, hostname[HOST_NAME_MAX] = {0}, suffix[] = "_LOCK", pid[32];
210+
char *cmd, hostname[HOST_NAME_MAX] = {0}, suffix[] = "_LOCK";
211211
int cmd_len, lock_wait_time, retries, i, set_lock_key_result, expiry;
212212

213213
/* 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
240240

241241
/* Calculate lock secret */
242242
gethostname(hostname, HOST_NAME_MAX);
243-
size_t hostname_len = strlen(hostname);
244-
size_t pid_len = snprintf(pid, sizeof(pid), "|%ld", (long)getpid());
245243
if (lock_status->lock_secret) zend_string_release(lock_status->lock_secret);
246-
lock_status->lock_secret = zend_string_alloc(hostname_len + pid_len, 0);
247-
memcpy(ZSTR_VAL(lock_status->lock_secret), hostname, hostname_len);
248-
memcpy(ZSTR_VAL(lock_status->lock_secret) + hostname_len, pid, pid_len);
244+
lock_status->lock_secret = strpprintf(0, "%s|%ld", hostname, (long)getpid());
249245

250246
if (expiry > 0) {
251247
cmd_len = REDIS_SPPRINTF(&cmd, "SET", "SSssd", lock_status->lock_key,

0 commit comments

Comments
 (0)