Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1929e9b

Browse files
committed
refactore stream closing
1 parent 54e5e5f commit 1929e9b

File tree

2 files changed

+16
-35
lines changed

2 files changed

+16
-35
lines changed

library.c

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ extern zend_class_entry *redis_ce;
1212
extern zend_class_entry *redis_exception_ce;
1313
extern zend_class_entry *spl_ce_RuntimeException;
1414

15+
PHPAPI void redis_stream_close(RedisSock *redis_sock TSRMLS_DC)
16+
{
17+
if (!redis_sock->persistent) {
18+
php_stream_close(redis_sock->stream);
19+
} else {
20+
php_stream_pclose(redis_sock->stream);
21+
}
22+
}
1523

1624
PHPAPI int redis_check_eof(RedisSock *redis_sock TSRMLS_DC)
1725
{
@@ -21,11 +29,7 @@ PHPAPI int redis_check_eof(RedisSock *redis_sock TSRMLS_DC)
2129
while(eof) {
2230
if(count++ == 10) { /* too many failures */
2331
if(redis_sock->stream) { /* close stream if still here */
24-
if (!redis_sock->persistent) {
25-
php_stream_close(redis_sock->stream);
26-
} else {
27-
php_stream_pclose(redis_sock->stream);
28-
}
32+
redis_stream_close(redis_sock TSRMLS_CC);
2933
redis_sock->stream = NULL;
3034
redis_sock->mode = ATOMIC;
3135
redis_sock->status = REDIS_SOCK_STATUS_FAILED;
@@ -34,11 +38,7 @@ PHPAPI int redis_check_eof(RedisSock *redis_sock TSRMLS_DC)
3438
return -1;
3539
}
3640
if(redis_sock->stream) { /* close existing stream before reconnecting */
37-
if (!redis_sock->persistent) {
38-
php_stream_close(redis_sock->stream);
39-
} else {
40-
php_stream_pclose(redis_sock->stream);
41-
}
41+
redis_stream_close(redis_sock TSRMLS_CC);
4242
redis_sock->stream = NULL;
4343
redis_sock->mode = ATOMIC;
4444
}
@@ -58,11 +58,7 @@ PHPAPI zval *redis_sock_read_multibulk_reply_zval(INTERNAL_FUNCTION_PARAMETERS,
5858
}
5959

6060
if(php_stream_gets(redis_sock->stream, inbuf, 1024) == NULL) {
61-
if (!redis_sock->persistent) {
62-
php_stream_close(redis_sock->stream);
63-
} else {
64-
php_stream_pclose(redis_sock->stream);
65-
}
61+
redis_stream_close(redis_sock TSRMLS_CC);
6662
redis_sock->stream = NULL;
6763
redis_sock->status = REDIS_SOCK_STATUS_FAILED;
6864
redis_sock->mode = ATOMIC;
@@ -132,11 +128,7 @@ PHPAPI char *redis_sock_read(RedisSock *redis_sock, int *buf_len TSRMLS_DC)
132128
}
133129

134130
if(php_stream_gets(redis_sock->stream, inbuf, 1024) == NULL) {
135-
if (!redis_sock->persistent) {
136-
php_stream_close(redis_sock->stream);
137-
} else {
138-
php_stream_pclose(redis_sock->stream);
139-
}
131+
redis_stream_close(redis_sock TSRMLS_CC);
140132
redis_sock->stream = NULL;
141133
redis_sock->status = REDIS_SOCK_STATUS_FAILED;
142134
redis_sock->mode = ATOMIC;
@@ -617,11 +609,7 @@ PHPAPI int redis_sock_read_multibulk_reply_zipped_with_flag(INTERNAL_FUNCTION_PA
617609
return -1;
618610
}
619611
if(php_stream_gets(redis_sock->stream, inbuf, 1024) == NULL) {
620-
if (!redis_sock->persistent) {
621-
php_stream_close(redis_sock->stream);
622-
} else {
623-
php_stream_pclose(redis_sock->stream);
624-
}
612+
redis_stream_close(redis_sock TSRMLS_CC);
625613
redis_sock->stream = NULL;
626614
redis_sock->stream = NULL;
627615
redis_sock->status = REDIS_SOCK_STATUS_FAILED;
@@ -875,11 +863,7 @@ PHPAPI int redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSo
875863
return -1;
876864
}
877865
if(php_stream_gets(redis_sock->stream, inbuf, 1024) == NULL) {
878-
if (!redis_sock->persistent) {
879-
php_stream_close(redis_sock->stream);
880-
} else {
881-
php_stream_pclose(redis_sock->stream);
882-
}
866+
redis_stream_close(redis_sock TSRMLS_CC);
883867
redis_sock->stream = NULL;
884868
redis_sock->status = REDIS_SOCK_STATUS_FAILED;
885869
redis_sock->mode = ATOMIC;
@@ -941,11 +925,7 @@ PHPAPI int redis_sock_read_multibulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, R
941925
return -1;
942926
}
943927
if(php_stream_gets(redis_sock->stream, inbuf, 1024) == NULL) {
944-
if (!redis_sock->persistent) {
945-
php_stream_close(redis_sock->stream);
946-
} else {
947-
php_stream_pclose(redis_sock->stream);
948-
}
928+
redis_stream_close(redis_sock TSRMLS_CC);
949929
redis_sock->stream = NULL;
950930
redis_sock->status = REDIS_SOCK_STATUS_FAILED;
951931
redis_sock->mode = ATOMIC;

library.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ PHPAPI int redis_sock_read_multibulk_reply_zipped(INTERNAL_FUNCTION_PARAMETERS,
2525
PHPAPI int redis_sock_read_multibulk_reply_zipped_strings(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, void *ctx);
2626
PHPAPI int redis_sock_read_multibulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, void *ctx);
2727
PHPAPI int redis_sock_write(RedisSock *redis_sock, char *cmd, size_t sz TSRMLS_DC);
28+
PHPAPI void redis_stream_close(RedisSock *redis_sock TSRMLS_DC);
2829
PHPAPI int redis_check_eof(RedisSock *redis_sock TSRMLS_DC);
2930
//PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC);
3031
PHPAPI void redis_free_socket(RedisSock *redis_sock);

0 commit comments

Comments
 (0)