8000 Minor session compression cleanup. · phpredis/phpredis@2b555c8 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2b555c8

Browse files
Minor session compression cleanup.
* We can compress without the need for sepearate buffers. * Allow both "" and "none" to mean "none" in terms of redis.session.compression.
1 parent dc39bd5 commit 2b555c8

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

redis_session.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -142,22 +142,23 @@ static int session_gc_maxlifetime(void) {
142142

143143
/* Retrieve redis.session.compression from php.ini */
144144
static int session_compression_type(void) {
145+
const char *compression = INI_STR("redis.session.compression");
145146
#ifdef HAVE_REDIS_LZF
146-
if(strncasecmp(INI_STR("redis.session.compression"), "lzf", sizeof("lzf") - 1) == 0) {
147+
if(strncasecmp(compression, "lzf", sizeof("lzf") - 1) == 0) {
147148
return REDIS_COMPRESSION_LZF;
148149
}
149150
#endif
150151
#ifdef HAVE_REDIS_ZSTD
151-
if(strncasecmp(INI_STR("redis.session.compression"), "zstd", sizeof("zstd") - 1) == 0) {
152+
if(strncasecmp(compression, "zstd", sizeof("zstd") - 1) == 0) {
152153
return REDIS_COMPRESSION_ZSTD;
153154
}
154155
#endif
155156
#ifdef HAVE_REDIS_LZ4
156-
if(strncasecmp(INI_STR("redis.session.compression"), "lz4", sizeof("lz4") - 1) == 0) {
157+
if(strncasecmp(compression, "lz4", sizeof("lz4") - 1) == 0) {
157158
return REDIS_COMPRESSION_LZ4;
158159
}
159160
#endif
160-
if(strncasecmp(INI_STR("redis.session.compression"), "none", sizeof("none") - 1) == 0) {
161+
if(*compression == '\0' || strncasecmp(compression, "none", sizeof("none") - 1) == 0) {
161162
return REDIS_COMPRESSION_NONE;
162163
}
163164

@@ -185,7 +186,7 @@ session_compress_data(RedisSock *redis_sock, char *data, size_t len,
185186
}
186187

187188
/* Helper to uncompress session data */
188-
static int
189+
static int
189190
session_uncompress_data(RedisSock *redis_sock, char *data, size_t len,
190191
char **decompressed_data, size_t *decompressed_len) {
191192
if (redis_sock->compression) {
@@ -817,10 +818,11 @@ PS_READ_FUNC(redis)
817818
*/
818819
PS_WRITE_FUNC(redis)
819820
{
820-
char *cmd, *response, *compressed_buf = NULL;
821-
int cmd_len, response_len, compressed_free = 0;
822-
const char *skey = ZSTR_VAL(key), *sval = ZSTR_VAL(val);
823-
size_t skeylen = ZSTR_LEN(key), svallen = ZSTR_LEN(val), compressed_len = 0;
821+
char *cmd, *response;
822+
int cmd_len, response_len, compressed_free;
823+
const char *skey = ZSTR_VAL(key);
824+
size_t skeylen = ZSTR_LEN(key), svallen = ZSTR_LEN(val);
825+
char *sval;
824826

825827
if (!skeylen) return FAILURE;
826828

@@ -835,14 +837,13 @@ PS_WRITE_FUNC(redis)
835837
/* send SET command */
836838
zend_string *session = redis_session_key(redis_sock, skey, skeylen);
837839

838-
compressed_free = session_compress_data(redis_sock, ZSTR_VAL(val), ZSTR_LEN(val), &compressed_buf, &compressed_len);
839-
sval = compressed_buf;
840-
svallen = compressed_len;
841-
840+
compressed_free = session_compress_data(redis_sock, ZSTR_VAL(val), ZSTR_LEN(val),
841+
&sval, &svallen);
842+
842843
cmd_len = REDIS_SPPRINTF(&cmd, "SETEX", "Sds", session, session_gc_maxlifetime(), sval, svallen);
843844
zend_string_release(session);
844845
if (compressed_free) {
845-
efree(compressed_buf);
846+
efree(sval);
846847
}
847848

848849
if (!write_allowed(redis_sock, &pool->lock_status)) {
@@ -1281,14 +1282,13 @@ PS_READ_FUNC(rediscluster) {
12811282
PS_WRITE_FUNC(rediscluster) {
12821283
redisCluster *c = PS_GET_MOD_DATA();
12831284
clusterReply *reply;
1284-
char *cmd, *skey, *compressed_buf = NULL, *sval = ZSTR_VAL(val);
1285-
int cmdlen, skeylen, compressed_free = 0, svallen = ZSTR_LEN(val);
1285+
char *cmd, *skey, *sval;
1286+
int cmdlen, skeylen, compressed_free;
1287+
size_t svallen;
12861288
short slot;
1287-
size_t compressed_len = 0;
12881289

1289-
compressed_free = session_compress_data(c->flags, sval, svallen, &compressed_buf, &compressed_len);
1290-
sval = compressed_buf;
1291-
svallen = compressed_len;
1290+
compressed_free = session_compress_data(c->flags, ZSTR_VAL(val), ZSTR_LEN(val),
1291+
&sval, &svallen);
12921292

12931293
/* Set up command and slot info */
12941294
skey = cluster_session_key(c, ZSTR_VAL(key), ZSTR_LEN(key), &skeylen, &slot);
@@ -1297,7 +1297,7 @@ PS_WRITE_FUNC(rediscluster) {
12971297
sval, svallen);
12981298
efree(skey);
12991299
if (compressed_free) {
1300-
efree(compressed_buf);
1300+
efree(sval);
13011301
}
13021302

13031303
/* Attempt to send command */

0 commit comments

Comments
 (0)
0