summaryrefslogtreecommitdiff
path: root/hiredis.c
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2011-02-04 15:26:28 +0100
committerPieter Noordhuis <pcnoordhuis@gmail.com>2011-02-04 15:26:28 +0100
commit2fc0d8756e547dcc10f5337d2e60d2b91da6e467 (patch)
treebce5ae757cf8d211266b432be31d979ba89eae2a /hiredis.c
parent663d6d1258b3ef49178ed4120de5c91ecffe2512 (diff)
Use select(2) for enforce a timeout on blocking connect(2)
Diffstat (limited to 'hiredis.c')
-rw-r--r--hiredis.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/hiredis.c b/hiredis.c
index cd4ea50..3d6b421 100644
--- a/hiredis.c
+++ b/hiredis.c
@@ -821,28 +821,42 @@ void redisFree(redisContext *c) {
redisContext *redisConnect(const char *ip, int port) {
redisContext *c = redisContextInit();
c->flags |= REDIS_BLOCK;
- redisContextConnectTcp(c,ip,port);
+ redisContextConnectTcp(c,ip,port,NULL);
+ return c;
+}
+
+redisContext *redisConnectWithTimeout(const char *ip, int port, struct timeval tv) {
+ redisContext *c = redisContextInit();
+ c->flags |= REDIS_BLOCK;
+ redisContextConnectTcp(c,ip,port,&tv);
return c;
}
redisContext *redisConnectNonBlock(const char *ip, int port) {
redisContext *c = redisContextInit();
c->flags &= ~REDIS_BLOCK;
- redisContextConnectTcp(c,ip,port);
+ redisContextConnectTcp(c,ip,port,NULL);
return c;
}
redisContext *redisConnectUnix(const char *path) {
redisContext *c = redisContextInit();
c->flags |= REDIS_BLOCK;
- redisContextConnectUnix(c,path);
+ redisContextConnectUnix(c,path,NULL);
+ return c;
+}
+
+redisContext *redisConnectUnixWithTimeout(const char *path, struct timeval tv) {
+ redisContext *c = redisContextInit();
+ c->flags |= REDIS_BLOCK;
+ redisContextConnectUnix(c,path,&tv);
return c;
}
redisContext *redisConnectUnixNonBlock(const char *path) {
redisContext *c = redisContextInit();
c->flags &= ~REDIS_BLOCK;
- redisContextConnectUnix(c,path);
+ redisContextConnectUnix(c,path,NULL);
return c;
}