This issue has been present in all versions of epicsMessageQueue.
I see two fixes which could combine to address this issue in myReceive().
Similar changes will likely be required in mySend() as it also supports timeout.
1. Return success in threadNode.eventSent regardless of timeout status.
2. Handle the case where getEventNode() returns an epicsEvent which
has already been triggered. Maybe getEventNode() calls epicsEventTryWait() ?
This issue has been present in all versions of epicsMessageQueue.
I see two fixes which could combine to address this issue in myReceive().
Similar changes will likely be required in mySend() as it also supports timeout.
1. Return success in threadNode. eventSent regardless of timeout status.
2. Handle the case where getEventNode() returns an epicsEvent which
has already been triggered. Maybe getEventNode() calls epicsEventTryWait() ?