Logout scenario with message gap

Imported from previous forum

Hi,

I am considering a scenario where FIX Engine A sends Logout message (seq# 20) to FIX Engine B (FE_B).

FE_B, is expecting message with seq# 15, so having received Logout message, sends a resend request (Begin#=15, End#=0) to FE_A.

FE_A is happy to retransmit all messages starting from seq#15. However, as per specs, it is not suppose to retransmit “Logout” message. In this case, FE_B has no way to know, when to logout. (FE_B has requested resending of all messages starting 15, with no ending defined).

Is it FE_A’s responsibility to send Logout explicitly again, or FE_B should just count messages 15-19, and then Logout?

Nick

Nick, the answer to your question is that FE_B should just count messages 15-19, and then Logout. The FIX 4.0 protocol specification defines this explicitly. Have a look at page 8 and 9 under the SESSION PROTOCOL → Message Recovery section, reprinted in part below.


The table below lists the actions to be taken in the case where the incoming sequence number is greater than the expected incoming sequence number.

Message Type: Logout

Action to Be Taken on Sequence # mismatch:
If a message gap was detected, issue a ResendRequest to retrieve all missing messages followed by a Logout message which serves as a confirmation of the logout request. DO NOT terminate the session. The initiator of the Logout sequence has responsibility to terminate the session. This allows the Logout initiator to respond to any ResendRequest generated.

Hi,

I am considering a scenario where FIX Engine A sends Logout message (seq# 20) to FIX Engine B (FE_B).

FE_B, is expecting message with seq# 15, so having received Logout message, sends a resend request (Begin#=15, End#=0) to FE_A.

FE_A is happy to retransmit all messages starting from seq#15. However, as per specs, it is not suppose to retransmit “Logout” message. In this case, FE_B has no way to know, when to logout. (FE_B has requested resending of all messages starting 15, with no ending defined).

Is it FE_A’s responsibility to send Logout explicitly again, or FE_B should just count messages 15-19, and then Logout?

Nick

Hi,

I am considering a scenario where FIX Engine A sends Logout message (seq# 20) to FIX Engine B (FE_B).

FE_B, is expecting message with seq# 15, so having received Logout message, sends a resend request (Begin#=15, End#=0) to FE_A.

FE_A is happy to retransmit all messages starting from seq#15. However, as per specs, it is not suppose to retransmit “Logout” message. In this case, FE_B has no way to know, when to logout. (FE_B has requested resending of all messages starting 15, with no ending defined).

Is it FE_A’s responsibility to send Logout explicitly again, or FE_B should just count messages 15-19, and then Logout?

Nick

Hi Nick,
Just thought to share this point when we send resend request, FIX Engine will just ignores all the session/admin messages which are in between your begin and end sequence number, hope this info help you or pls correct me if am wrong.

Cheers,
Ashwaq