Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
hiredis
Commits
7ec4df94
Commit
7ec4df94
authored
Jul 31, 2012
by
Pieter Noordhuis
Browse files
Spontaneous error reply can always happen
parent
f2ddeeae
Changes
1
Hide whitespace changes
Inline
Side-by-side
async.c
View file @
7ec4df94
...
...
@@ -386,14 +386,22 @@ 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
)
{
/* 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
)
{
/*
* A spontaneous reply in a not-subscribed context can 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.
*
* Another possibility is that the server is loading its dataset.
* In this case we also want to close the connection, and have the
* user wait until the server is ready to take our request.
*/
if
(((
redisReply
*
)
reply
)
->
type
==
REDIS_REPLY_ERROR
)
{
c
->
err
=
REDIS_ERR_OTHER
;
snprintf
(
c
->
errstr
,
sizeof
(
c
->
errstr
),
"%s"
,((
redisReply
*
)
reply
)
->
str
);
__redisAsyncDisconnect
(
ac
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment