shm_mq: Repair breakage from previous commit.
If the counterparty writes some data into the queue and then detaches, it's wrong to return SHM_MQ_DETACHED right away. If we do that, we fail to read whatever was written.
This commit is contained in:
parent
872101bede
commit
a1480ec1d3
@ -501,10 +501,12 @@ shm_mq_receive(shm_mq_handle *mqh, Size *nbytesp, void **datap, bool nowait)
|
|||||||
{
|
{
|
||||||
if (nowait)
|
if (nowait)
|
||||||
{
|
{
|
||||||
if (shm_mq_counterparty_gone(mq, mqh->mqh_handle))
|
|
||||||
return SHM_MQ_DETACHED;
|
|
||||||
if (shm_mq_get_sender(mq) == NULL)
|
if (shm_mq_get_sender(mq) == NULL)
|
||||||
|
{
|
||||||
|
if (shm_mq_counterparty_gone(mq, mqh->mqh_handle))
|
||||||
|
return SHM_MQ_DETACHED;
|
||||||
return SHM_MQ_WOULD_BLOCK;
|
return SHM_MQ_WOULD_BLOCK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!shm_mq_wait_internal(mq, &mq->mq_sender, mqh->mqh_handle)
|
else if (!shm_mq_wait_internal(mq, &mq->mq_sender, mqh->mqh_handle)
|
||||||
&& shm_mq_get_sender(mq) == NULL)
|
&& shm_mq_get_sender(mq) == NULL)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user