Skip to content

Commit 358abef

Browse files
authored
Merge pull request #645 from momin-javed/increment-target-seq
Do not increment NextTargetMsgSeqNum for out of sequence Logout and Test Requests
2 parents 7e71cbc + a60af80 commit 358abef

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

in_session.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,23 @@ func (state inSession) handleLogout(session *session, msg *Message) (nextState s
102102
session.log.OnEvent("Received logout response")
103103
}
104104

105-
if err := session.store.IncrNextTargetMsgSeqNum(); err != nil {
106-
session.logError(err)
107-
}
108-
109105
if session.ResetOnLogout {
110106
if err := session.dropAndReset(); err != nil {
111107
session.logError(err)
112108
}
109+
return latentState{}
110+
}
111+
112+
if err := session.checkTargetTooLow(msg); err != nil {
113+
return latentState{}
114+
}
115+
116+
if err := session.checkTargetTooHigh(msg); err != nil {
117+
return latentState{}
118+
}
119+
120+
if err := session.store.IncrNextTargetMsgSeqNum(); err != nil {
121+
session.logError(err)
113122
}
114123

115124
return latentState{}

in_session_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,23 @@ func (s *InSessionTestSuite) TestLogoutResetOnLogout() {
9696
s.NoMessageQueued()
9797
}
9898

99+
func (s *InSessionTestSuite) TestLogoutTargetTooHigh() {
100+
s.MessageFactory.seqNum = 5
101+
102+
s.MockApp.On("FromAdmin").Return(nil)
103+
s.MockApp.On("ToAdmin")
104+
s.MockApp.On("OnLogout")
105+
s.session.fixMsgIn(s.session, s.Logout())
106+
107+
s.MockApp.AssertExpectations(s.T())
108+
s.State(latentState{})
109+
110+
s.LastToAdminMessageSent()
111+
s.MessageType(string(msgTypeLogout), s.MockApp.lastToAdmin)
112+
s.NextTargetMsgSeqNum(1)
113+
s.NextSenderMsgSeqNum(2)
114+
}
115+
99116
func (s *InSessionTestSuite) TestTimeoutNeedHeartbeat() {
100117
s.MockApp.On("ToAdmin").Return(nil)
101118
s.session.Timeout(s.session, internal.NeedHeartbeat)

0 commit comments

Comments
 (0)