@@ -142,22 +142,23 @@ static int session_gc_maxlifetime(void) {
142142
143143/* Retrieve redis.session.compression from php.ini */
144144static 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
189190session_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 */
818819PS_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) {
12811282PS_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