@@ -2,6 +2,7 @@ pub(crate) mod admin_request;
22mod ctx;
33pub mod error;
44pub ( crate ) mod event;
5+ mod inbound;
56mod info;
67mod outbound;
78mod session_handle;
@@ -31,13 +32,13 @@ use crate::message::reject::Reject;
3132use crate :: message:: resend_request:: ResendRequest ;
3233use crate :: message:: sequence_reset:: SequenceReset ;
3334use crate :: message:: test_request:: TestRequest ;
34- use crate :: message:: verification:: verify_message;
3535use crate :: message:: verification_error:: { CompIdType , MessageVerificationError } ;
3636use crate :: session:: admin_request:: AdminRequest ;
3737use crate :: session:: ctx:: SessionCtx ;
3838use crate :: session:: error:: SessionCreationError ;
3939use crate :: session:: error:: { InternalSendError , InternalSendResultExt , SessionOperationError } ;
4040pub use crate :: session:: error:: { SendError , SendOutcome } ;
41+ use crate :: session:: inbound:: verify_message_with_ctx;
4142pub use crate :: session:: info:: { SessionInfo , Status } ;
4243pub use crate :: session:: session_handle:: SessionHandle ;
4344#[ cfg( not( feature = "test-utils" ) ) ]
@@ -242,7 +243,7 @@ where
242243 & mut self ,
243244 message : & Message ,
244245 ) -> Result < ( ) , SessionOperationError > {
245- match self . verify_message ( message, true , true ) {
246+ match verify_message_with_ctx ( & self . ctx , message, true , true ) {
246247 Ok ( _) => {
247248 match self . ctx . application . on_inbound_message ( message) . await {
248249 InboundDecision :: Accept => { }
@@ -315,26 +316,6 @@ where
315316 Ok ( ( ) )
316317 }
317318
318- fn verify_message (
319- & self ,
320- message : & Message ,
321- check_too_high : bool ,
322- check_too_low : bool ,
323- ) -> Result < ( ) , MessageVerificationError > {
324- let expected_seq_number = if check_too_high || check_too_low {
325- Some ( self . ctx . store . next_target_seq_number ( ) )
326- } else {
327- None
328- } ;
329- verify_message (
330- message,
331- & self . ctx . config ,
332- expected_seq_number,
333- check_too_high,
334- check_too_low,
335- )
336- }
337-
338319 async fn on_connect ( & mut self , writer : WriterRef ) -> Result < ( ) , SessionOperationError > {
339320 self . state = SessionState :: AwaitingLogon ( AwaitingLogonState {
340321 writer,
@@ -366,7 +347,7 @@ where
366347
367348 async fn on_logon ( & mut self , message : & Message ) -> Result < ( ) , SessionOperationError > {
368349 if let SessionState :: AwaitingLogon ( AwaitingLogonState { writer, .. } ) = & self . state {
369- match self . verify_message ( message, true , true ) {
350+ match verify_message_with_ctx ( & self . ctx , message, true , true ) {
370351 Ok ( _) => {
371352 // happy logon flow, the session is now active
372353 self . state = SessionState :: new_active (
@@ -386,7 +367,7 @@ where
386367 }
387368
388369 async fn on_logout ( & mut self , message : & Message ) -> Result < ( ) , SessionOperationError > {
389- if let Err ( err) = self . verify_message ( message, false , false ) {
370+ if let Err ( err) = verify_message_with_ctx ( & self . ctx , message, false , false ) {
390371 self . handle_verification_error ( err) . await ?;
391372 return Ok ( ( ) ) ;
392373 }
@@ -422,7 +403,7 @@ where
422403 }
423404
424405 async fn on_heartbeat ( & mut self , message : & Message ) -> Result < ( ) , SessionOperationError > {
425- if let Err ( err) = self . verify_message ( message, true , true ) {
406+ if let Err ( err) = verify_message_with_ctx ( & self . ctx , message, true , true ) {
426407 self . handle_verification_error ( err) . await ?;
427408 return Ok ( ( ) ) ;
428409 }
@@ -441,7 +422,7 @@ where
441422 }
442423
443424 async fn on_test_request ( & mut self , message : & Message ) -> Result < ( ) , SessionOperationError > {
444- if let Err ( err) = self . verify_message ( message, true , true ) {
425+ if let Err ( err) = verify_message_with_ctx ( & self . ctx , message, true , true ) {
445426 self . handle_verification_error ( err) . await ?;
446427 return Ok ( ( ) ) ;
447428 }
@@ -470,7 +451,7 @@ where
470451 // This is the key part of the QFJ-673 deadlock fix: when both sides send ResendRequest
471452 // simultaneously, each side's ResendRequest will have a seq number higher than expected.
472453 // By not treating that as an error, we allow the ResendRequest to be processed.
473- match self . verify_message ( message, false , true ) {
454+ match verify_message_with_ctx ( & self . ctx , message, false , true ) {
474455 Ok ( _) => { }
475456 Err ( err) => {
476457 self . handle_verification_error ( err) . await ?;
@@ -538,7 +519,7 @@ where
538519
539520 /// Handle Reject messages.
540521 async fn on_reject ( & mut self , message : & Message ) -> Result < ( ) , SessionOperationError > {
541- if let Err ( err) = self . verify_message ( message, false , true ) {
522+ if let Err ( err) = verify_message_with_ctx ( & self . ctx , message, false , true ) {
542523 self . handle_verification_error ( err) . await ?;
543524 return Ok ( ( ) ) ;
544525 }
@@ -550,7 +531,7 @@ where
550531 async fn on_sequence_reset ( & mut self , message : & Message ) -> Result < ( ) , SessionOperationError > {
551532 let msg_seq_num = get_msg_seq_num ( message) ;
552533 let is_gap_fill: bool = message. get ( GAP_FILL_FLAG ) . unwrap_or ( false ) ;
553- if let Err ( err) = self . verify_message ( message, is_gap_fill, is_gap_fill) {
534+ if let Err ( err) = verify_message_with_ctx ( & self . ctx , message, is_gap_fill, is_gap_fill) {
554535 self . handle_verification_error ( err) . await ?;
555536 return Ok ( ( ) ) ;
556537 }
0 commit comments