Imported from previous forum
Hello, I been looking over the FIX TestCase Session Layer protocol.
When you recive a message with an Incorrect Checksum this testcase says that you should ingonre the message, not increase your seqnumber and continue.
This will in general course a FixEngine (called Sender) to send the next sequance number that is 1 greater then the the FixEngine (called Reciver) that recived the incorrect Checksum message expect.
The Reciver engine will then issue a resend request to the sender for the missing message (same as the one that held the incorect checksum).
The reciver will then get another message with an incorrect checksum and ingore that one again. And wait for the correct message. Sender will continue to send even more messages with greater seqnum which each will triger an resend request? (I.E read infinite loop).
How do you recover from this error, if to have a correct session you can just throw away messages with incorrect checksums.
Text from Session Layer Test case.
- Consider garbled and ignore message (do not increment inbound MsgSeqNum) and continue accepting messages
- Generate a “warning” condition in test output.
[ original email was from Phil Johnston - phil.johnston@transacttools.net ]
Lars,
Within the 4.4 FIX Spec (volume 2) there contains the section: “When to send a Session Reject vs. when to ignore the message”
Which states:
“Note: The receiving application should disregard any message that is garbled, cannot be parsed or fails a data integrity check. Processing of the next valid FIX message will cause detection of a sequence gap and a Resend Request will be generated. Logic should be included in the FIX engine to recognize the possible infinite resend loop, which may be encountered in this situation.”
Within our TCM messaging engine, we provide a configurable option such that after x resend requests, we drop the connection to avoid the infinte loop.
Thanks,
Phil Johnston
TransactTools
Hello, I been looking over the FIX TestCase Session Layer protocol.
When you recive a message with an Incorrect Checksum this testcase
says that you should ingonre the message, not increase your seqnumber
and continue.This will in general course a FixEngine (called Sender) to send the next
sequance number that is 1 greater then the the FixEngine (called
Reciver) that recived the incorrect Checksum message expect.The Reciver engine will then issue a resend request to the sender for
the missing message (same as the one that held the incorect checksum).The reciver will then get another message with an incorrect checksum and
ingore that one again. And wait for the correct message. Sender will
continue to send even more messages with greater seqnum which each will
triger an resend request? (I.E read infinite loop).How do you recover from this error, if to have a correct session you can
just throw away messages with incorrect checksums.Text from Session Layer Test case. 1. Consider garbled and ignore
message (do not increment inbound MsgSeqNum) and continue
accepting messages
2. Generate a “warning” condition in test output.