-
Notifications
You must be signed in to change notification settings - Fork 658
Description
Is your feature request related to a problem? Please describe.
After a QuickFIX connection drops and we reconnect, we send a ResendRequest.
If the session disconnects again before the message actually goes out, responder becomes null and the request is not transmitted, but the ResendRange is still updated as if it had been sent.
When the counter-party eventually sends its next message, we should resend the ResendRequest.
Because ResendRange is already marked “sent”, the engine prints:
Already sent ResendRequest FROM: XXXX TO: XXXX. Not sending another.
and skips the request.
As a result we never obtain the missing messages and can never bring the session fully online.
QFJ Version [e.g. 2.1.1]
Describe the solution you'd like
A fix would be to let Session.sendResendRequest examine the boolean returned by sendRaw: if it returns false, the method should not update ResendRange.
I’m not aware of any side-effects this change might introduce, but in our case it appears to work cleanly—ensuring the request is only recorded after it has actually sent, so we neither lose messages nor spam the counter-party.
Describe alternatives you've considered
I know we could set SendRedundantResendRequests=Y to force a resend on every resend request, but both the counter-party owners and I are reluctant to do so for fear of flooding their service with duplicate requests.
Additional context
I originally hit this in QFJ 2.1.1; we now plan to upgrade to 2.3.2.
After scanning the 2.3.2 source I think this particular logic is unchanged.
Please confirm or correct my understanding—thank you.