Resend request responses with PossDupeFlag=N

Imported from previous forum

I have a question regarding a situation where a Resend Request is sent for a range of messages and the messages are resent with the PossDupeFlag=N instead of Y. Would I disregard these resent messages and resend the resend request or just logoff. This situation could cause serious errors.

[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> I have a question regarding a situation where a Resend Request is sent for a range of messages and the messages are resent with the PossDupeFlag=N instead of Y. Would I disregard these resent messages and resend the resend request or just logoff. This situation could cause serious errors.

It is (theoretically, if using something unreliable like UDP instead of TCP) possible for FIX messages to be reordered. I.e. Party A sends business messages 10, 11, 12, and Party B gets 10, 12, 11. Party B, after receiving 12, would ask for a Resend Request of 11 - 0. However, 11 NOT Poss Dupe would be the next message encountered due to the reordering. Hence, 11 should be processed even though it is not Poss Dupe, as its sequence number matches what is expected. Party A will then send 11 Poss Dupe (which B ignores) and 12 Poss Dupe (which B processes.)

So I would say, in general terms (see exceptions below), that if you send a Resend Request message and receive business messages not poss dupe, and they are in order, you should process them. If the sequence number is greater than expected, you send another Resend Request (while watching for infinite Resend Request loops.) If the sequence number is less than expected, you log the other party off.

Note that multiple Resend Requests often get sent. Hence a party that responds with business messages that are not market Poss Dupe will likely cause the other party to log them off. Failure to use Poss Dupe properly is a pretty serious incompatibility with the FIX spec, and I don’t think compliant FIX engines would be able to interoperate reliably with such an engine.

Exceptions to the statement above include some admin messages, as listed in the spec, that are proecessed even if the sequence number is greater than expected, and Seq Reset - Reset, which is processed even if the sequence number is less than expected.