@@ -11,7 +11,7 @@ pub trait Processor {
1111 fn routing_header ( & mut self ) -> & mut RoutingHandler ;
1212
1313 fn handle_msg ( & mut self , msg : Vec < u8 > , from : NodeId , session_id : u64 ) ;
14- fn handle_command ( & mut self , cmd : Box < dyn Any > ) ;
14+ fn handle_command ( & mut self , cmd : Box < dyn Any > ) -> Result < ( ) , ( ) > ;
1515
1616 /// Handles a packet in a standard way
1717 /// # Errors
@@ -20,11 +20,15 @@ pub trait Processor {
2020 let router = self . routing_header ( ) ;
2121 match pkt. pack_type {
2222 PacketType :: MsgFragment ( fragment) => {
23+ let idx = fragment. fragment_index ;
2324 if let Some ( msg) = self . assembler ( ) . add_fragment (
2425 fragment,
2526 pkt. session_id ,
2627 pkt. routing_header . hops [ 0 ] ,
2728 ) {
29+ let mut shr = pkt. routing_header . clone ( ) ;
30+ shr. reverse ( ) ;
31+ self . routing_header ( ) . send_ack ( shr, pkt. session_id , idx) ?;
2832 self . handle_msg ( msg, pkt. routing_header . hops [ 0 ] , pkt. session_id ) ;
2933 }
3034 }
@@ -49,15 +53,16 @@ pub trait Processor {
4953 select_biased ! {
5054 recv( self . controller_recv( ) ) -> cmd => {
5155 if let Ok ( cmd) = cmd {
52- self . handle_command( cmd) ;
56+ if self . handle_command( cmd) . is_err( ) {
57+ return
58+ }
5359 }
5460 }
5561
5662 recv( self . packet_recv( ) ) -> pkt => {
5763 if let Ok ( pkt) = pkt {
58- match self . handle_packet( pkt) {
59- Ok ( ( ) ) => { } ,
60- Err ( _) => return
64+ if self . handle_packet( pkt) . is_err( ) {
65+ return
6166 }
6267 }
6368 }
0 commit comments