Fix potential race in pubsub
Former-commit-id: 427c5999f167256dc3a6a0f49ad28313f700a155
This commit is contained in:
parent
949270801e
commit
a55fe8a3ba
@ -301,9 +301,11 @@ int pubsubPublishMessage(robj *channel, robj *message) {
|
|||||||
client *c = reinterpret_cast<client*>(ln->value);
|
client *c = reinterpret_cast<client*>(ln->value);
|
||||||
if (c->flags & CLIENT_CLOSE_ASAP) // avoid blocking if the write will be ignored
|
if (c->flags & CLIENT_CLOSE_ASAP) // avoid blocking if the write will be ignored
|
||||||
continue;
|
continue;
|
||||||
fastlock_lock(&c->lock);
|
if (FCorrectThread(c))
|
||||||
|
fastlock_lock(&c->lock);
|
||||||
addReplyPubsubMessage(c,channel,message);
|
addReplyPubsubMessage(c,channel,message);
|
||||||
fastlock_unlock(&c->lock);
|
if (FCorrectThread(c))
|
||||||
|
fastlock_unlock(&c->lock);
|
||||||
receivers++;
|
receivers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -321,10 +323,12 @@ int pubsubPublishMessage(robj *channel, robj *message) {
|
|||||||
{
|
{
|
||||||
if (pat->pclient->flags & CLIENT_CLOSE_ASAP)
|
if (pat->pclient->flags & CLIENT_CLOSE_ASAP)
|
||||||
continue;
|
continue;
|
||||||
fastlock_lock(&pat->pclient->lock);
|
if (FCorrectThread(pat->pclient))
|
||||||
|
fastlock_lock(&pat->pclient->lock);
|
||||||
addReplyPubsubPatMessage(pat->pclient,
|
addReplyPubsubPatMessage(pat->pclient,
|
||||||
pat->pattern,channel,message);
|
pat->pattern,channel,message);
|
||||||
fastlock_unlock(&pat->pclient->lock);
|
if (FCorrectThread(pat->pclient))
|
||||||
|
fastlock_unlock(&pat->pclient->lock);
|
||||||
receivers++;
|
receivers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user