@@ -53,13 +53,8 @@ typedef struct redis_pool_member_ {
53
53
RedisSock * redis_sock ;
54
54
int weight ;
55
55
int database ;
56
-
57
- char * prefix ;
58
- size_t prefix_len ;
59
-
60
- char * auth ;
61
- size_t auth_len ;
62
-
56
+ zend_string * prefix ;
57
+ zend_string * auth ;
63
58
struct redis_pool_member_ * next ;
64
59
65
60
} redis_pool_member ;
@@ -80,18 +75,16 @@ redis_pool_new(TSRMLS_D) {
80
75
81
76
PHP_REDIS_API void
82
77
redis_pool_add (redis_pool * pool , RedisSock * redis_sock , int weight ,
83
- int database , char * prefix , char * auth TSRMLS_DC ) {
78
+ int database , zend_string * prefix , zend_string * auth TSRMLS_DC ) {
84
79
85
80
redis_pool_member * rpm = ecalloc (1 , sizeof (redis_pool_member ));
86
81
rpm -> redis_sock = redis_sock ;
87
82
rpm -> weight = weight ;
88
83
rpm -> database = database ;
89
84
90
85
rpm -> prefix = prefix ;
91
- rpm -> prefix_len = (prefix ?strlen (prefix ):0 );
92
86
93
87
rpm -> auth = auth ;
94
- rpm -> auth_len = (auth ?strlen (auth ):0 );
95
88
96
89
rpm -> next = pool -> head ;
97
90
pool -> head = rpm ;
@@ -108,8 +101,8 @@ redis_pool_free(redis_pool *pool TSRMLS_DC) {
108
101
next = rpm -> next ;
109
102
redis_sock_disconnect (rpm -> redis_sock TSRMLS_CC );
110
103
redis_free_socket (rpm -> redis_sock );
111
- if (rpm -> prefix ) efree (rpm -> prefix );
112
- if (rpm -> auth ) efree (rpm -> auth );
104
+ if (rpm -> prefix ) zend_string_release (rpm -> prefix );
105
+ if (rpm -> auth ) zend_string_release (rpm -> auth );
113
106
efree (rpm );
114
107
rpm = next ;
115
108
}
@@ -123,11 +116,11 @@ redis_pool_member_auth(redis_pool_member *rpm TSRMLS_DC) {
123
116
int response_len , cmd_len ;
124
117
125
118
/* Short circuit if we don't have a password */
126
- if (!rpm -> auth || ! rpm -> auth_len ) {
119
+ if (!rpm -> auth ) {
127
120
return ;
128
121
}
129
122
130
- cmd_len = REDIS_SPPRINTF (& cmd , "AUTH" , "s " , rpm -> auth , rpm -> auth_len );
123
+ cmd_len = REDIS_SPPRINTF (& cmd , "AUTH" , "S " , rpm -> auth );
131
124
if (redis_sock_write (redis_sock , cmd , cmd_len TSRMLS_CC ) >= 0 ) {
132
125
if ((response = redis_sock_read (redis_sock , & response_len TSRMLS_CC ))) {
133
126
efree (response );
@@ -163,7 +156,7 @@ redis_pool_get_sock(redis_pool *pool, const char *key TSRMLS_DC) {
163
156
for (i = 0 ; i < pool -> totalWeight ;) {
164
157
if (pos >= i && pos < i + rpm -> weight ) {
165
158
int needs_auth = 0 ;
166
- if (rpm -> auth && rpm -> auth_len && rpm -> redis_sock -> status != REDIS_SOCK_STATUS_CONNECTED ) {
159
+ if (rpm -> auth && rpm -> redis_sock -> status != REDIS_SOCK_STATUS_CONNECTED ) {
167
160
needs_auth = 1 ;
168
161
}
169
162
redis_sock_server_open (rpm -> redis_sock TSRMLS_CC );
@@ -208,7 +201,8 @@ PS_OPEN_FUNC(redis)
208
201
double timeout = 86400.0 , read_timeout = 0.0 ;
209
202
int persistent = 0 ;
210
203
int database = -1 ;
211
- char * prefix = NULL , * auth = NULL , * persistent_id = NULL ;
204
+ char * persistent_id = NULL ;
205
+ zend_string * prefix = NULL , * auth = NULL ;
212
206
long retry_interval = 0 ;
213
207
214
208
/* translate unix: into file: */
@@ -255,10 +249,10 @@ PS_OPEN_FUNC(redis)
255
249
persistent_id = estrndup (Z_STRVAL_P (param ), Z_STRLEN_P (param ));
256
250
}
257
251
if ((param = zend_hash_str_find (Z_ARRVAL (params ), "prefix" , sizeof ("prefix" ) - 1 )) != NULL ) {
258
- prefix = estrndup (Z_STRVAL_P (param ), Z_STRLEN_P (param ));
252
+ prefix = zend_string_init (Z_STRVAL_P (param ), Z_STRLEN_P (param ), 0 );
259
253
}
260
254
if ((param = zend_hash_str_find (Z_ARRVAL (params ), "auth" , sizeof ("auth" ) - 1 )) != NULL ) {
261
- auth = estrndup (Z_STRVAL_P (param ), Z_STRLEN_P (param ));
255
+ auth = zend_string_init (Z_STRVAL_P (param ), Z_STRLEN_P (param ), 0 );
262
256
}
263
257
if ((param = zend_hash_str_find (Z_ARRVAL (params ), "database" , sizeof ("database" ) - 1 )) != NULL ) {
264
258
database = zval_get_long (param );
@@ -273,8 +267,8 @@ PS_OPEN_FUNC(redis)
273
267
if ((url -> path == NULL && url -> host == NULL ) || weight <= 0 || timeout <= 0 ) {
274
268
php_url_free (url );
275
269
if (persistent_id ) efree (persistent_id );
276
- if (prefix ) efree (prefix );
277
- if (auth ) efree (auth );
270
+ if (prefix ) zend_string_release (prefix );
271
+ if (auth ) zend_string_release (auth );
278
272
redis_pool_free (pool TSRMLS_CC );
279
273
PS_SET_MOD_DATA (NULL );
280
274
return FAILURE ;
@@ -324,8 +318,8 @@ redis_session_key(redis_pool_member *rpm, const char *key, int key_len, int *ses
324
318
size_t prefix_len = sizeof (default_prefix )- 1 ;
325
319
326
320
if (rpm -> prefix ) {
327
- prefix = rpm -> prefix ;
328
- prefix_len = rpm -> prefix_len ;
321
+ prefix = ZSTR_VAL ( rpm -> prefix ) ;
322
+ prefix_len = ZSTR_LEN ( rpm -> prefix ) ;
329
323
}
330
324
331
325
/* build session key */
0 commit comments