@@ -13,7 +13,7 @@ const SENDING_TIME_THRESHOLD: u64 = 120;
1313pub ( crate ) fn verify_message (
1414 message : & Message ,
1515 config : & SessionConfig ,
16- expected_seq_number : u64 ,
16+ expected_seq_number : Option < u64 > ,
1717) -> Result < ( ) , MessageVerificationError > {
1818 check_begin_string ( message, config. begin_string . as_str ( ) ) ?;
1919 let actual_seq_number: u64 = message. header ( ) . get ( fix44:: MSG_SEQ_NUM ) . unwrap_or_default ( ) ;
@@ -33,7 +33,9 @@ pub(crate) fn verify_message(
3333 check_original_sending_time ( message, actual_seq_number, sending_time) ?;
3434 }
3535
36- check_sequence_number ( actual_seq_number, expected_seq_number, possible_duplicate) ?;
36+ if let Some ( expected_seq_number) = expected_seq_number {
37+ check_sequence_number ( actual_seq_number, expected_seq_number, possible_duplicate) ?;
38+ }
3739
3840 Ok ( ( ) )
3941}
@@ -217,7 +219,7 @@ mod tests {
217219 let config = build_test_config ( ) ;
218220 let msg = build_test_message ( "FIX.4.4" , "TARGET" , "SENDER" , 42 ) ;
219221
220- let result = verify_message ( & msg, & config, 42 ) ;
222+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
221223
222224 assert ! ( result. is_ok( ) ) ;
223225 }
@@ -227,7 +229,7 @@ mod tests {
227229 let config = build_test_config ( ) ;
228230 let msg = build_test_message ( "FIX.4.2" , "TARGET" , "SENDER" , 42 ) ;
229231
230- let result = verify_message ( & msg, & config, 42 ) ;
232+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
231233
232234 assert ! ( matches!(
233235 result,
@@ -243,7 +245,7 @@ mod tests {
243245 let config = build_test_config ( ) ;
244246 let msg = build_test_message ( "FIX.4.4" , "WRONG_SENDER" , "SENDER" , 42 ) ;
245247
246- let result = verify_message ( & msg, & config, 42 ) ;
248+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
247249
248250 assert ! ( matches!(
249251 result,
@@ -269,7 +271,7 @@ mod tests {
269271 let config = build_test_config ( ) ;
270272 let msg = build_test_message ( "FIX.4.4" , "TARGET" , "WRONG_TARGET" , 42 ) ;
271273
272- let result = verify_message ( & msg, & config, 42 ) ;
274+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
273275
274276 assert ! ( matches!(
275277 result,
@@ -295,7 +297,7 @@ mod tests {
295297 let config = build_test_config ( ) ;
296298 let msg = build_test_message ( "FIX.4.4" , "TARGET" , "SENDER" , 40 ) ;
297299
298- let result = verify_message ( & msg, & config, 42 ) ;
300+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
299301
300302 assert ! ( matches!(
301303 result,
@@ -321,7 +323,7 @@ mod tests {
321323 msg. header_mut ( )
322324 . set ( fix44:: ORIG_SENDING_TIME , Timestamp :: utc_now ( ) ) ;
323325
324- let result = verify_message ( & msg, & config, 42 ) ;
326+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
325327
326328 assert ! ( matches!(
327329 result,
@@ -344,7 +346,7 @@ mod tests {
344346 let config = build_test_config ( ) ;
345347 let msg = build_test_message ( "FIX.4.4" , "TARGET" , "SENDER" , 50 ) ;
346348
347- let result = verify_message ( & msg, & config, 42 ) ;
349+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
348350
349351 assert ! ( matches!(
350352 result,
@@ -363,7 +365,7 @@ mod tests {
363365 msg. header_mut ( ) . set ( fix44:: POSS_DUP_FLAG , true ) ;
364366 // Don't set OrigSendingTime
365367
366- let result = verify_message ( & msg, & config, 42 ) ;
368+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
367369
368370 assert ! ( matches!(
369371 result,
@@ -388,7 +390,7 @@ mod tests {
388390 msg. header_mut ( ) . pop ( fix44:: SENDING_TIME ) ;
389391 msg. header_mut ( ) . set ( fix44:: SENDING_TIME , sending_time) ;
390392
391- let result = verify_message ( & msg, & config, 42 ) ;
393+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
392394
393395 assert ! ( result. is_ok( ) ) ;
394396 }
@@ -407,7 +409,7 @@ mod tests {
407409 msg. header_mut ( ) . pop ( fix44:: SENDING_TIME ) ;
408410 msg. header_mut ( ) . set ( fix44:: SENDING_TIME , sending_time) ;
409411
410- let result = verify_message ( & msg, & config, 42 ) ;
412+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
411413
412414 assert ! ( matches!(
413415 result,
@@ -437,7 +439,7 @@ mod tests {
437439 msg. header_mut ( ) . pop ( fix44:: SENDING_TIME ) ;
438440 msg. header_mut ( ) . set ( fix44:: SENDING_TIME , timestamp) ;
439441
440- let result = verify_message ( & msg, & config, 42 ) ;
442+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
441443
442444 // equal timestamps should be valid (orig <= sending)
443445 assert ! ( result. is_ok( ) ) ;
@@ -455,7 +457,7 @@ mod tests {
455457 // remove begin string, which is automatically added by `Message::new`
456458 msg. header_mut ( ) . pop ( fix44:: BEGIN_STRING ) ;
457459
458- let result = verify_message ( & msg, & config, 42 ) ;
460+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
459461
460462 assert ! ( matches!(
461463 result,
@@ -471,7 +473,7 @@ mod tests {
471473 msg. set ( fix44:: MSG_SEQ_NUM , 42u64 ) ;
472474 msg. set ( fix44:: SENDING_TIME , Timestamp :: utc_now ( ) ) ;
473475
474- let result = verify_message ( & msg, & config, 42 ) ;
476+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
475477
476478 assert ! ( matches!(
477479 result,
@@ -490,7 +492,7 @@ mod tests {
490492 msg. set ( fix44:: MSG_SEQ_NUM , 42u64 ) ;
491493 msg. set ( fix44:: SENDING_TIME , Timestamp :: utc_now ( ) ) ;
492494
493- let result = verify_message ( & msg, & config, 42 ) ;
495+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
494496
495497 assert ! ( matches!(
496498 result,
@@ -509,7 +511,7 @@ mod tests {
509511 msg. set ( fix44:: TARGET_COMP_ID , "SENDER" ) ;
510512 msg. set ( fix44:: SENDING_TIME , Timestamp :: utc_now ( ) ) ;
511513
512- let result = verify_message ( & msg, & config, 42 ) ;
514+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
513515
514516 // missing seq num defaults to 0, which will be too low
515517 assert ! ( matches!(
@@ -523,7 +525,7 @@ mod tests {
523525 let config = build_test_config ( ) ;
524526 let msg = build_test_message ( "FIX.4.4" , "TARGET" , "SENDER" , 0 ) ;
525527
526- let result = verify_message ( & msg, & config, 1 ) ;
528+ let result = verify_message ( & msg, & config, Some ( 1 ) ) ;
527529
528530 assert ! ( matches!(
529531 result,
@@ -536,7 +538,7 @@ mod tests {
536538 let config = build_test_config ( ) ;
537539 let msg = build_test_message ( "FIX.4.4" , "TARGET" , "SENDER" , 1 ) ;
538540
539- let result = verify_message ( & msg, & config, 1 ) ;
541+ let result = verify_message ( & msg, & config, Some ( 1 ) ) ;
540542
541543 assert ! ( result. is_ok( ) ) ;
542544 }
@@ -547,7 +549,7 @@ mod tests {
547549 // wrong begin string AND wrong seq num - begin string error should come first
548550 let msg = build_test_message ( "FIX.4.2" , "TARGET" , "SENDER" , 100 ) ;
549551
550- let result = verify_message ( & msg, & config, 42 ) ;
552+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
551553
552554 assert ! ( matches!(
553555 result,
@@ -561,7 +563,7 @@ mod tests {
561563 // wrong sender and wrong target - sender error should come first
562564 let msg = build_test_message ( "FIX.4.4" , "WRONG_SENDER" , "WRONG_TARGET" , 42 ) ;
563565
564- let result = verify_message ( & msg, & config, 42 ) ;
566+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
565567
566568 assert ! ( matches!(
567569 result,
@@ -580,7 +582,7 @@ mod tests {
580582 msg. set ( fix44:: TARGET_COMP_ID , "SENDER" ) ;
581583 msg. set ( fix44:: MSG_SEQ_NUM , 42u64 ) ;
582584
583- let result = verify_message ( & msg, & config, 42 ) ;
585+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
584586
585587 assert ! ( matches!(
586588 result,
@@ -607,7 +609,7 @@ mod tests {
607609 let past_timestamp: Timestamp = past_time. naive_utc ( ) . into ( ) ;
608610 msg. set ( fix44:: SENDING_TIME , past_timestamp) ;
609611
610- let result = verify_message ( & msg, & config, 42 ) ;
612+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
611613
612614 assert ! ( matches!(
613615 result,
@@ -634,7 +636,7 @@ mod tests {
634636 let future_timestamp: Timestamp = future_time. naive_utc ( ) . into ( ) ;
635637 msg. set ( fix44:: SENDING_TIME , future_timestamp) ;
636638
637- let result = verify_message ( & msg, & config, 42 ) ;
639+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
638640
639641 assert ! ( matches!(
640642 result,
@@ -661,7 +663,7 @@ mod tests {
661663 let boundary_timestamp: Timestamp = boundary_time. naive_utc ( ) . into ( ) ;
662664 msg. set ( fix44:: SENDING_TIME , boundary_timestamp) ;
663665
664- let result = verify_message ( & msg, & config, 42 ) ;
666+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
665667
666668 assert ! ( result. is_ok( ) ) ;
667669 }
@@ -682,7 +684,7 @@ mod tests {
682684 let valid_timestamp: Timestamp = valid_time. naive_utc ( ) . into ( ) ;
683685 msg. set ( fix44:: SENDING_TIME , valid_timestamp) ;
684686
685- let result = verify_message ( & msg, & config, 42 ) ;
687+ let result = verify_message ( & msg, & config, Some ( 42 ) ) ;
686688
687689 assert ! ( result. is_ok( ) ) ;
688690 }
0 commit comments