We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 978577f commit ba7886cCopy full SHA for ba7886c
src/aero_kernel/src/socket/unix.rs
@@ -79,12 +79,19 @@ impl MessageQueue {
79
}
80
81
pub fn read(&mut self, buffer: &mut [u8]) -> usize {
82
- if let Some(message) = self.messages.pop_front() {
+ if let Some(message) = self.messages.front_mut() {
83
let message_len = message.data.len();
84
- assert!(buffer.len() >= message_len);
+ let size = core::cmp::min(buffer.len(), message_len);
85
86
- buffer[..message_len].copy_from_slice(message.data.as_slice());
87
- message_len
+ buffer[..size].copy_from_slice(&message.data[..size]);
+
88
+ if size < message_len {
89
+ message.data.drain(..size);
90
+ return size;
91
+ }
92
93
+ self.messages.pop_front();
94
+ size
95
} else {
96
unreachable!("MessageQueue::read() called when queue is empty");
97
0 commit comments