Skip to content

Commit

Permalink
Clarify rationale behind issue redis#43
Browse files Browse the repository at this point in the history
  • Loading branch information
pietern committed May 29, 2011
1 parent 63dcf9b commit 1c29aaf
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions async.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,17 +361,20 @@ void redisProcessCallbacks(redisAsyncContext *ac) {
/* Even if the context is subscribed, pending regular callbacks will
* get a reply before pub/sub messages arrive. */
if (__redisShiftCallback(&ac->replies,&cb) != REDIS_OK) {
// error reply before any callbacks were setup
/* A spontaneous reply in a not-subscribed context can only be the
* error reply that is sent when a new connection exceeds the
* maximum number of allowed connections on the server side. This
* is seen as an error instead of a regular reply because the
* server closes the connection after sending it. To prevent the
* error from being overwritten by an EOF error the connection is
* closed here. See issue #43. */
if ( !(c->flags & REDIS_SUBSCRIBED) && ((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';
snprintf(c->errstr,sizeof(c->errstr),"%s",((redisReply*)reply)->str);
__redisAsyncDisconnect(ac);
return;
}
/* No more regular callbacks and no errors, the context *must* be subscribed. */
/* No more regular callbacks and no errors, the context *must* be subscribed. */
assert(c->flags & REDIS_SUBSCRIBED);
__redisGetSubscribeCallback(ac,reply,&cb);
}
Expand Down

0 comments on commit 1c29aaf

Please sign in to comment.