From e64c376834690b670ff735b9f5214b61db931707 Mon Sep 17 00:00:00 2001 From: bhaan Date: Tue, 26 Jul 2016 19:59:37 +0000 Subject: [PATCH] increment target seq num on logout --- in_session.go | 8 +++++--- logout_state.go | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/in_session.go b/in_session.go index a2e7f06c6..e9cd5dc29 100644 --- a/in_session.go +++ b/in_session.go @@ -34,17 +34,19 @@ func (state inSession) VerifyMsgIn(session *session, msg Message) (err MessageRe } func (state inSession) FixMsgIn(session *session, msg Message) (nextState sessionState) { + nextState = state + var msgType FIXString if err := msg.Header.GetField(tagMsgType, &msgType); err == nil { switch string(msgType) { case enum.MsgType_LOGON: session.handleLogon(msg) - return state + return case enum.MsgType_LOGOUT: session.log.OnEvent("Received logout request") session.log.OnEvent("Sending logout response") session.sendLogout("") - return latentState{} + nextState = latentState{} case enum.MsgType_TEST_REQUEST: return state.handleTestRequest(session, msg) case enum.MsgType_RESEND_REQUEST: @@ -55,7 +57,7 @@ func (state inSession) FixMsgIn(session *session, msg Message) (nextState sessio } session.store.IncrNextTargetMsgSeqNum() - return state + return } func (state inSession) FixMsgInRej(session *session, msg Message, rej MessageRejectError) (nextState sessionState) { diff --git a/logout_state.go b/logout_state.go index 35c58e161..48c5ecb9e 100644 --- a/logout_state.go +++ b/logout_state.go @@ -18,6 +18,7 @@ func (state logoutState) FixMsgIn(session *session, msg Message) (nextState sess switch string(msgType) { case enum.MsgType_LOGOUT: session.log.OnEvent("Received logout response") + session.store.IncrNextTargetMsgSeqNum() return latentState{} default: return state