[QFJ-286] Sequence number not correct after ResendRequest when PersistMessages=N (ATServer configuration) Created: 10/Jan/08 Updated: 15/Nov/12 Resolved: 18/Feb/09 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | Engine |
Affects Version/s: | 1.3.0 |
Fix Version/s: | 1.5.0 |
Type: | Bug | Priority: | Default |
Reporter: | Peter Eriksson | Assignee: | Steve Bate |
Resolution: | Fixed | Votes: | 1 |
Labels: | None | ||
Environment: |
WinXP x64 |
Description |
Case 8_OnlyAminMessages.def faild. Suggestion for solution in Session.java: private void nextResendRequest(Message resendRequest) throws IOException, RejectLogon, int beginSeqNo = resendRequest.getInt(BeginSeqNo.FIELD); getLog().onEvent("Received ResendRequest FROM: " + beginSeqNo + " TO: " + endSeqNo); String beginString = sessionID.getBeginString();
if (!persistMessages) { generateSequenceReset(beginSeqNo, endSeqNo); } int msgSeqNum = 0; for (String message : messages) { if ((current != msgSeqNum) && begin == 0) { begin = current; } if (msgType.length() == 1 && "0A12345".indexOf(msgType) != -1) { } else { send(msg.toString()); } if (begin != 0) { generateSequenceReset(begin, msgSeqNum + 1); }if (endSeqNo > msgSeqNum) { endSeqNo = endSeqNo + 1; int next = state.getNextSenderMsgSeqNum(); if (endSeqNo > next) endSeqNo = next; generateSequenceReset(beginSeqNo, endSeqNo); }} int tMsgSeqNum = resendRequest.getHeader().getInt(MsgSeqNum.FIELD); } |
Comments |
Comment by Staffan Ulfberg [ 06/Feb/08 ] |
I found this when googling for this issue since I discovered it in the C++ version a few hours ago. The fix above is the equivalent to what I would suggest for the C++ code. I checked the bug tracker for the quickfix (not j) project but could not find anything about this. |
Comment by Jason Aubrey [ 15/Jan/09 ] |
Just to summarize a bit (since the indenting is a bit lost), the key parts of this code are: Any other changes I see here seem superfluous in my local revision (899). |