Skip to content

Commit 2e7e077

Browse files
committed
Modify msg verify checks
1 parent 7194eee commit 2e7e077

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

session.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,8 @@ func (s *session) handleLogon(msg *Message) error {
509509

510510
nextSenderMsgNumAtLogonReceived := s.store.NextSenderMsgSeqNum()
511511

512-
if err := s.verifyIgnoreSeqNumTooHigh(msg); err != nil {
512+
// Make sure this is a valid session before resetting the store.
513+
if err := s.verifyMsgAgainstAppImpl(msg); err != nil {
513514
return err
514515
}
515516

@@ -529,6 +530,12 @@ func (s *session) handleLogon(msg *Message) error {
529530
}
530531
}
531532

533+
// Verify seq num too high but dont check against app implementation since we just did that.
534+
// Don't need to double check.
535+
if err := s.verifySelect(msg, false, true, false); err != nil {
536+
return err
537+
}
538+
532539
if !s.InitiateLogon {
533540
if !s.HeartBtIntOverride {
534541
var heartBtInt FIXInt
@@ -586,18 +593,18 @@ func (s *session) initiateLogoutInReplyTo(reason string, inReplyTo *Message) (er
586593
}
587594

588595
func (s *session) verify(msg *Message) MessageRejectError {
589-
return s.verifySelect(msg, true, true)
596+
return s.verifySelect(msg, true, true, true)
590597
}
591598

592599
func (s *session) verifyIgnoreSeqNumTooHigh(msg *Message) MessageRejectError {
593-
return s.verifySelect(msg, false, true)
600+
return s.verifySelect(msg, false, true, true)
594601
}
595602

596603
func (s *session) verifyIgnoreSeqNumTooHighOrLow(msg *Message) MessageRejectError {
597-
return s.verifySelect(msg, false, false)
604+
return s.verifySelect(msg, false, false, true)
598605
}
599606

600-
func (s *session) verifySelect(msg *Message, checkTooHigh bool, checkTooLow bool) MessageRejectError {
607+
func (s *session) verifySelect(msg *Message, checkTooHigh bool, checkTooLow bool, checkAppImpl bool) MessageRejectError {
601608
if reject := s.checkBeginString(msg); reject != nil {
602609
return reject
603610
}
@@ -626,6 +633,14 @@ func (s *session) verifySelect(msg *Message, checkTooHigh bool, checkTooLow bool
626633
}
627634
}
628635

636+
if checkAppImpl {
637+
return s.verifyMsgAgainstAppImpl(msg)
638+
}
639+
640+
return nil
641+
}
642+
643+
func (s *session) verifyMsgAgainstAppImpl(msg *Message) MessageRejectError {
629644
if s.Validator != nil {
630645
if reject := s.Validator.Validate(msg); reject != nil {
631646
return reject

0 commit comments

Comments
 (0)