Skip to content

ResendRequest never re-sent after re-logon when previous request failed due to responder == null #1114

@RastlinLiu

Description

@RastlinLiu

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions