diff options
Diffstat (limited to 'extra/hiredis')
-rw-r--r-- | extra/hiredis/libev.h | 4 | ||||
-rw-r--r-- | extra/hiredis/libevent.h | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/extra/hiredis/libev.h b/extra/hiredis/libev.h index 4b36898..3246820 100644 --- a/extra/hiredis/libev.h +++ b/extra/hiredis/libev.h @@ -17,9 +17,11 @@ void libevRedisReadEvent(struct ev_loop *loop, ev_io *watcher, int revents) { libevRedisEvents *e = watcher->data; if (redisBufferRead(e->context) == REDIS_ERR) { + redisDisconnect(e->context); e->err(e->context); } else { if (redisProcessCallbacks(e->context) == REDIS_ERR) { + redisDisconnect(e->context); e->err(e->context); } } @@ -31,7 +33,7 @@ void libevRedisWriteEvent(struct ev_loop *loop, ev_io *watcher, int revents) { int done = 0; if (redisBufferWrite(e->context, &done) == REDIS_ERR) { - ev_io_stop(e->loop,&e->wev); + redisDisconnect(e->context); e->err(e->context); } else { /* Stop firing the write event when done */ diff --git a/extra/hiredis/libevent.h b/extra/hiredis/libevent.h index 6f7f9ad..be70b25 100644 --- a/extra/hiredis/libevent.h +++ b/extra/hiredis/libevent.h @@ -19,9 +19,11 @@ void libeventRedisReadEvent(int fd, short event, void *arg) { event_add(&e->rev,NULL); if (redisBufferRead(e->context) == REDIS_ERR) { + redisDisconnect(e->context); e->err(e->context); } else { if (redisProcessCallbacks(e->context) == REDIS_ERR) { + redisDisconnect(e->context); e->err(e->context); } } @@ -33,7 +35,7 @@ void libeventRedisWriteEvent(int fd, short event, void *arg) { int done = 0; if (redisBufferWrite(e->context,&done) == REDIS_ERR) { - /* Handle error */ + redisDisconnect(e->context); e->err(e->context); } else { /* Schedule write event again when writing is not done. */ |