summaryrefslogtreecommitdiff
path: root/extra/hiredis
diff options
context:
space:
mode:
Diffstat (limited to 'extra/hiredis')
-rw-r--r--extra/hiredis/libev.h4
-rw-r--r--extra/hiredis/libevent.h4
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. */