When a message is sent with DONT_LOOPBACK set, it is added to the retransmission table and then, all messages with DONT_LOOPBACK are removed, until a null (missing) message is found, or a message without the DONT_LOOPBACK flag set is found.
However, this stops the removal, e.g. in the following case:
M1 (DL set)
M2 (DL set)
M3
M4
M5 (DL set)
In this example, only messages M1 and M2 are removed!
The result is that the highest-delivered (HD) counter lags way behind the highest-received (HR) counter, and we start accummulating memory! Also, a low HD slows down message garbage collection (STABLE).
The effect is that - when sending a lot of DL messages - memory is accumulated in the send table of NAKACK, and that can lead to OOME.
Fix: the dont_loopback filter to remove messages in NAKACK2 needs to include mesages with DUMMY_OOB and OOB_DELIVERED flags.
Also fix in UNICAST3.