mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +03:00
Commita1480ec1d3purported to fix the problems with commitb2ccb5f4e6, but it didn't completely fix them. The problem is that the checks were performed in the wrong order, leading to a race condition. If the sender attached, sent a message, and detached after the receiver called shm_mq_get_sender and before the receiver called shm_mq_counterparty_gone, we'd incorrectly return SHM_MQ_DETACHED before all messages were read. Repair by reversing the order of operations, and add a long comment explaining why this new logic is (hopefully) correct.