Commit 72688572 authored by Blake Matheny's avatar Blake Matheny
Browse files

Fix the case where an error reply is received before any callbacks are registered

parent 82ad9444
...@@ -361,7 +361,17 @@ void redisProcessCallbacks(redisAsyncContext *ac) { ...@@ -361,7 +361,17 @@ void redisProcessCallbacks(redisAsyncContext *ac) {
/* Even if the context is subscribed, pending regular callbacks will /* Even if the context is subscribed, pending regular callbacks will
* get a reply before pub/sub messages arrive. */ * get a reply before pub/sub messages arrive. */
if (__redisShiftCallback(&ac->replies,&cb) != REDIS_OK) { if (__redisShiftCallback(&ac->replies,&cb) != REDIS_OK) {
/* No more regular callbacks, the context *must* be subscribed. */ // error reply before any callbacks were setup
if ( ((redisReply*)reply)->type == REDIS_REPLY_ERROR ) {
c->err = REDIS_ERR_OTHER;
err_len = strlen(((redisReply*)reply)->str);
err_len = err_len < (sizeof(c->errstr)-1) ? err_len : (sizeof(c->errstr)-1);
memcpy(c->errstr, ((redisReply*)reply)->str, err_len);
c->errstr[err_len] = '\0';
__redisAsyncDisconnect(ac);
return;
}
/* No more regular callbacks and no errors, the context *must* be subscribed. */
assert(c->flags & REDIS_SUBSCRIBED); assert(c->flags & REDIS_SUBSCRIBED);
__redisGetSubscribeCallback(ac,reply,&cb); __redisGetSubscribeCallback(ac,reply,&cb);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment