From bf161d996fcab9cf351b2fdb851a9db5f275103b Mon Sep 17 00:00:00 2001 From: Fabien MARTY Date: Tue, 31 Jul 2012 23:38:08 +0200 Subject: [PATCH] Try again later for EINTR errors (see issue #99) --- hiredis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hiredis.c b/hiredis.c index 4709ee3..50028ee 100644 --- a/hiredis.c +++ b/hiredis.c @@ -1077,7 +1077,7 @@ int redisBufferRead(redisContext *c) { nread = read(c->fd,buf,sizeof(buf)); if (nread == -1) { - if (errno == EAGAIN && !(c->flags & REDIS_BLOCK)) { + if ((errno == EAGAIN && !(c->flags & REDIS_BLOCK)) || (errno == EINTR)) { /* Try again later */ } else { __redisSetError(c,REDIS_ERR_IO,NULL); @@ -1114,7 +1114,7 @@ int redisBufferWrite(redisContext *c, int *done) { if (sdslen(c->obuf) > 0) { nwritten = write(c->fd,c->obuf,sdslen(c->obuf)); if (nwritten == -1) { - if (errno == EAGAIN && !(c->flags & REDIS_BLOCK)) { + if ((errno == EAGAIN && !(c->flags & REDIS_BLOCK)) || (errno == EINTR)) { /* Try again later */ } else { __redisSetError(c,REDIS_ERR_IO,NULL);