Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichael-grunder <michael.grunder@gmail.com>2013-02-12 00:42:49 +0400
committermichael-grunder <michael.grunder@gmail.com>2013-02-12 00:42:49 +0400
commit55dd05356d245c2e3aab91c8c40ffc2ff2db7fd1 (patch)
tree92a7642456465e5c62d1cf79f0c243d0d1e84834 /library.c
parent85ee61d19b6c387c19ccfeda507c3f0fd1e67cf4 (diff)
parent3764a6cd800c20db3aa18e4ddb094e5cb44a72db (diff)
Merge remote-tracking branch 'kotas/opt-read-timeout'
Conflicts: library.c
Diffstat (limited to 'library.c')
-rw-r--r--library.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/library.c b/library.c
index d8c7f275..7809ce42 100644
--- a/library.c
+++ b/library.c
@@ -861,6 +861,7 @@ PHPAPI RedisSock* redis_sock_create(char *host, int host_len, unsigned short por
redis_sock->port = port;
redis_sock->timeout = timeout;
+ redis_sock->read_timeout = timeout;
redis_sock->serializer = REDIS_SERIALIZER_NONE;
redis_sock->mode = ATOMIC;
@@ -880,7 +881,7 @@ PHPAPI RedisSock* redis_sock_create(char *host, int host_len, unsigned short por
*/
PHPAPI int redis_sock_connect(RedisSock *redis_sock TSRMLS_DC)
{
- struct timeval tv, *tv_ptr = NULL;
+ struct timeval tv, read_tv, *tv_ptr = NULL;
char *host = NULL, *persistent_id = NULL, *errstr = NULL;
int host_len, err = 0;
php_netstream_data_t *sock;
@@ -896,6 +897,9 @@ PHPAPI int redis_sock_connect(RedisSock *redis_sock TSRMLS_DC)
tv_ptr = &tv;
}
+ read_tv.tv_sec = (time_t)redis_sock->read_timeout;
+ read_tv.tv_usec = (int)((redis_sock->read_timeout - read_tv.tv_sec) * 1000000);
+
if(redis_sock->host[0] == '/' && redis_sock->port < 1) {
host_len = spprintf(&host, 0, "unix://%s", redis_sock->host);
} else {
@@ -937,7 +941,7 @@ PHPAPI int redis_sock_connect(RedisSock *redis_sock TSRMLS_DC)
if(tv.tv_sec != 0 || tv.tv_usec != 0) {
php_stream_set_option(redis_sock->stream, PHP_STREAM_OPTION_READ_TIMEOUT,
- 0, &tv);
+ 0, &read_tv);
}
php_stream_set_option(redis_sock->stream,
PHP_STREAM_OPTION_WRITE_BUFFER,