@@ -522,24 +522,34 @@ func (s *session) fromCallback(msg Message) MessageRejectError {
522522}
523523
524524func (s * session ) checkTargetTooLow (msg Message ) MessageRejectError {
525- var seqNum FIXInt
526- switch err := msg .Header .GetField (tagMsgSeqNum , & seqNum ); {
527- case err != nil :
525+ if ! msg .Header .Has (tagMsgSeqNum ) {
528526 return RequiredTagMissing (tagMsgSeqNum )
529- case int (seqNum ) < s .store .NextTargetMsgSeqNum ():
530- return targetTooLow {ReceivedTarget : int (seqNum ), ExpectedTarget : s .store .NextTargetMsgSeqNum ()}
527+ }
528+
529+ seqNum , err := msg .Header .GetInt (tagMsgSeqNum )
530+ if err != nil {
531+ return err
532+ }
533+
534+ if seqNum < s .store .NextTargetMsgSeqNum () {
535+ return targetTooLow {ReceivedTarget : seqNum , ExpectedTarget : s .store .NextTargetMsgSeqNum ()}
531536 }
532537
533538 return nil
534539}
535540
536541func (s * session ) checkTargetTooHigh (msg Message ) MessageRejectError {
537- var seqNum FIXInt
538- switch err := msg .Header .GetField (tagMsgSeqNum , & seqNum ); {
539- case err != nil :
542+ if ! msg .Header .Has (tagMsgSeqNum ) {
540543 return RequiredTagMissing (tagMsgSeqNum )
541- case int (seqNum ) > s .store .NextTargetMsgSeqNum ():
542- return targetTooHigh {ReceivedTarget : int (seqNum ), ExpectedTarget : s .store .NextTargetMsgSeqNum ()}
544+ }
545+
546+ seqNum , err := msg .Header .GetInt (tagMsgSeqNum )
547+ if err != nil {
548+ return err
549+ }
550+
551+ if seqNum > s .store .NextTargetMsgSeqNum () {
552+ return targetTooHigh {ReceivedTarget : seqNum , ExpectedTarget : s .store .NextTargetMsgSeqNum ()}
543553 }
544554
545555 return nil
@@ -570,12 +580,12 @@ func (s *session) checkSendingTime(msg Message) MessageRejectError {
570580 return RequiredTagMissing (tagSendingTime )
571581 }
572582
573- sendingTime := new ( FIXUTCTimestamp )
574- if err := msg . Header . GetField ( tagSendingTime , sendingTime ); err != nil {
583+ sendingTime , err := msg . Header . GetTime ( tagSendingTime )
584+ if err != nil {
575585 return err
576586 }
577587
578- if delta := time .Since (sendingTime . Time ); delta <= - 1 * time .Duration (120 )* time .Second || delta >= time .Duration (120 )* time .Second {
588+ if delta := time .Since (sendingTime ); delta <= - 1 * time .Duration (120 )* time .Second || delta >= time .Duration (120 )* time .Second {
579589 return sendingTimeAccuracyProblem ()
580590 }
581591
0 commit comments