Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Using the electron package when acknowledging messages (Accept(), Reject() or Release() on a ReceivedMessage) a segmentation fault occurs if the Receiver was already closed.
This happens because the underlying link of the receiver gets freed which, according to the docs of pn_link_free, also frees any unsettled deliveries.
As the actual acknowledgement needs to run in the engine goroutine the check for an active receiver has to happen inside the electron package.
I'd suggest adding a check if the receiver is still alive in the injected function in func (rm *ReceivedMessage) acknowledge(status uint64) error.
I plan to do a PR to fix this but it will take a couple of weeks until I get there as this is a low priority fix on our end.