Session Level rejections

Imported from previous forum

Hello guys,

I’ve got a question on Reject messages (MsgType 3):

If my Fix engine receives a Message in which a mandatory field is missing, it simply rejects it using the Session level Reject message. In that case it doesn’t increment the SeqNum_done.
Unfortunately that leads to the problem, that the following messages with higher sequence numbers won’t be handled …

So, would it be better to increment the SeqNum_done also in case of rejection to allow the handling of further messages? Or would that just result in a rat-tail of other problems I didn’t have thought about?

How do you handle these rejections?

Thanks for your help,
Eva

[ original email was from SENTHIL SUBRAMANIAM - sensubra@lehman.com ]
I am not sure whether you are referring to session level or message level mandatory fields, in any case if a session level message could be generated for the invalid incoming message, it means message could be decrypted,bodylength and checksum are passed.

In this case, Rejected messages should be logged and the incoming sequence number incremented. Otherwise it may end up with infinite resend loop.

Hello guys,

I’ve got a question on Reject messages (MsgType 3):

If my Fix engine receives a Message in which a mandatory field is
missing, it simply rejects it using the Session level Reject message. In
that case it doesn’t increment the SeqNum_done. Unfortunately that leads
to the problem, that the following messages with higher sequence numbers
won’t be handled …

So, would it be better to increment the SeqNum_done also in case of
rejection to allow the handling of further messages? Or would that just
result in a rat-tail of other problems I didn’t have thought about?

How do you handle these rejections?

Thanks for your help, Eva

Hi Senthil,

thanks for your reply.

I am not sure whether you are referring to session level or message
level mandatory fields, in any case if a session level message could be
generated for the invalid incoming message, it means message could be
decrypted,bodylength and checksum are passed.

In my case a good example would be an ExecutionReport Message without the mandatory Symbol tag (55). This will be rejected by my engine with a Session Level Reject Message.

In this case, Rejected messages should be logged and the incoming
sequence number incremented. Otherwise it may end up with infinite
resend loop.

So, ok - in this case it would be better to increment the SeqNum. Are there any cases in which incrementing could lead to a desaster situation? Should I difference Session Level mandatory fields (like TargetCompID, Checksum etc.) from Application Level mandatory fields?

Thanks a lot,
Eva

If my Fix engine receives a Message in which a mandatory field is
missing, it simply rejects it using the Session level Reject message. In
that case it doesn’t increment the SeqNum_done.

FIX.4.0 spec (word document Page 20 / 72) states

“Rejected messages should be logged and the incoming sequence number incremented.”

FIX.4.4 spec (pdf document Volume 2 Page 29 of 58) explains in more detail as

“When to send a Session Reject vs. when to ignore the message”.