File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed
src/aero_kernel/src/socket Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -79,12 +79,19 @@ impl MessageQueue {
7979 }
8080
8181 pub fn read ( & mut self , buffer : & mut [ u8 ] ) -> usize {
82- if let Some ( message) = self . messages . pop_front ( ) {
82+ if let Some ( message) = self . messages . front_mut ( ) {
8383 let message_len = message. data . len ( ) ;
84- assert ! ( buffer. len( ) >= message_len) ;
84+ let size = core :: cmp :: min ( buffer. len ( ) , message_len) ;
8585
86- buffer[ ..message_len] . copy_from_slice ( message. data . as_slice ( ) ) ;
87- message_len
86+ buffer[ ..size] . copy_from_slice ( & message. data [ ..size] ) ;
87+
88+ if size < message_len {
89+ message. data . drain ( ..size) ;
90+ return size;
91+ }
92+
93+ self . messages . pop_front ( ) ;
94+ size
8895 } else {
8996 unreachable ! ( "MessageQueue::read() called when queue is empty" ) ;
9097 }
You can’t perform that action at this time.
0 commit comments