[Quickfix-developers] Re: Rejecting resent application messages causes abrupt disconnection
Brought to you by:
orenmnero
From: <OM...@th...> - 2002-09-26 17:03:04
|
Yeah. I believe you are correct. --oren = =20 "Pasquale d'Aloise" = =20 <pasquale.daloise@g To: <quickfix-de= vel...@li...>, =20 atelab.com> <quickfix-developers-= ad...@li...>, <OM...@th...> =20 cc: = =20 09/26/2002 01:21 AM Subject: Rejecting re= sent application messages causes abrupt disconnection =20 = =20 = =20 I have problems with resent application messages rejected by QuickFIX library. Look at the following scenario: - local QuickFIX application sends a ResendRequest for an application message; - remote third-party application sends an old application message with PossDupFlag=3DY but no OrigSendingTime field (violation of FIX protocol); - QuickFIX rejects the resent message with a "Required tag missing" reason; - on receiving the next new message from remote application, QuickFIX abruptly closes the connection because the incoming message has a sequence number less than expected. Here is a partial logging report about the problem: 8=3DFIX.4.2=019=3D102=0135=3DA=0134=3D58=0149=3DGATELAB=0152=3D20020921= -16:10:26=0156=3DTS=0195=3D8=0198=3D0=01 1 08=3D30=01... 8=3DFIX.4.2=019=3D61=0135=3DA=0134=3D40=0149=3DTS=0152=3D20020921-16:10= :26=0156=3DGATELAB=0198=3D0=01108=3D30 =01 ... 8=3DFIX.4.2=019=3D84=0135=3D2=0134=3D59=0149=3DGATELAB=0152=3D20020921-= 16:10:30=0156=3DTS=017=3D36=0116=3D36 =01. .. 8=3DFIX.4.2=019=3D130=0135=3D8=0134=3D36=0143=3DY=0149=3DTS=0152=3D2002= 0921-16:10:30=0156=3DGATELAB=01 6=3D4.78 =0114=3D8000=01... 8=3DFIX.4.2=019=3D123=0135=3D3=0134=3D60=0149=3DGATELAB=0152=3D20020921= -16:10:30=0156=3DTS=0145=3D36=01 58=3DRe quired tag missing=01371=3D122=01372=3D8=01373=3D1=01... 8=3DFIX.4.2=019=3D49=0135=3D0=0134=3D41=0149=3DTS=0152=3D20020921-16:10= :56=0156=3DGATELAB=01... now QuickFIX forces an abrupt disconnection because it expects a target= sequence number '42' I think the bug is in methods Session::generateReject(), at code: if ( msgType !=3D "A" && msgType !=3D "4" ) m_pStore->incrNextTargetMsgSeqNum(); I think it should be added a check for resent messages (PossDupFlag=3DY= ) before issuing an "incrNextTargetMsgSeqNum()". Regards, P. d'Aloise ------------------------------------ Pasquale d'Aloise pas...@ga... GATE Tecnologie Informatiche S.S. 17 - Loc. Nunziatella 86170 ISERNIA - Italy Tel. 0039-0865-451890 = |