@@ -142,22 +142,23 @@ static int session_gc_maxlifetime(void) {
142
142
143
143
/* Retrieve redis.session.compression from php.ini */
144
144
static int session_compression_type (void ) {
145
+ const char * compression = INI_STR ("redis.session.compression" );
145
146
#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 ) {
147
148
return REDIS_COMPRESSION_LZF ;
148
149
}
149
150
#endif
150
151
#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 ) {
152
153
return REDIS_COMPRESSION_ZSTD ;
153
154
}
154
155
#endif
155
156
#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 ) {
157
158
return REDIS_COMPRESSION_LZ4 ;
158
159
}
159
160
#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 ) {
161
162
return REDIS_COMPRESSION_NONE ;
162
163
}
163
164
@@ -185,7 +186,7 @@ session_compress_data(RedisSock *redis_sock, char *data, size_t len,
185
186
}
186
187
187
188
/* Helper to uncompress session data */
188
- static int
189
+ static int
189
190
session_uncompress_data (RedisSock * redis_sock , char * data , size_t len ,
190
191
char * * decompressed_data , size_t * decompressed_len ) {
191
192
if (redis_sock -> compression ) {
@@ -817,10 +818,11 @@ PS_READ_FUNC(redis)
817
818
*/
818
819
PS_WRITE_FUNC (redis )
819
820
{
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 ;
824
826
825
827
if (!skeylen ) return FAILURE ;
826
828
@@ -835,14 +837,13 @@ PS_WRITE_FUNC(redis)
835
837
/* send SET command */
836
838
zend_string * session = redis_session_key (redis_sock , skey , skeylen );
837
839
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
+
842
843
cmd_len = REDIS_SPPRINTF (& cmd , "SETEX" , "Sds" , session , session_gc_maxlifetime (), sval , svallen );
843
844
zend_string_release (session );
844
845
if (compressed_free ) {
845
- efree (compressed_buf );
846
+ efree (sval );
846
847
}
847
848
848
849
if (!write_allowed (redis_sock , & pool -> lock_status )) {
@@ -1281,14 +1282,13 @@ PS_READ_FUNC(rediscluster) {
1281
1282
PS_WRITE_FUNC (rediscluster ) {
1282
1283
redisCluster * c = PS_GET_MOD_DATA ();
1283
1284
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 ;
1286
1288
short slot ;
1287
- size_t compressed_len = 0 ;
1288
1289
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 );
1292
1292
1293
1293
/* Set up command and slot info */
1294
1294
skey = cluster_session_key (c , ZSTR_VAL (key ), ZSTR_LEN (key ), & skeylen , & slot );
@@ -1297,7 +1297,7 @@ PS_WRITE_FUNC(rediscluster) {
1297
1297
sval , svallen );
1298
1298
efree (skey );
1299
1299
if (compressed_free ) {
1300
- efree (compressed_buf );
1300
+ efree (sval );
1301
1301
}
1302
1302
1303
1303
/* Attempt to send command */
0 commit comments