[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
=
|