When PersistMessages is NOT on, the target MsgSeqNum for ResendRequest messages is not updated.
Symptom: Two systems with this bug will work fine, until one system, say system A issues a ResendRequest for some reason to system B. B will respond correctly to the ResendRequest, but not update it's MsgSeqNum for the target, A. A will receive a SequenceReset from B and work correctly. Eventually A will send another message to B. B will now think A is out of sync because this message will have its MsgSeqNum one too high. B will issue a ResendRequest to A, and the issue will repeat with A and B reversed.
This way the two systems trade ResendRequests once per heartbeat in the absence of any other messages being issued.
I fixed it by strategically adding an else clause in Session::nextResendRequest, I attached the output of diff -u on Session.cpp.
output of diff -u on Session.cpp.