From 94e043ac8d40c3330a47ac681bcda141d8e9385e Mon Sep 17 00:00:00 2001 From: Ruihan Li Date: Tue, 18 Jun 2024 16:43:06 +0800 Subject: [PATCH] Update nonblocking flags of UNIX sockets correctly --- .../src/net/socket/unix/stream/endpoint.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/kernel/aster-nix/src/net/socket/unix/stream/endpoint.rs b/kernel/aster-nix/src/net/socket/unix/stream/endpoint.rs index 5f1a7f6d..94b04bf2 100644 --- a/kernel/aster-nix/src/net/socket/unix/stream/endpoint.rs +++ b/kernel/aster-nix/src/net/socket/unix/stream/endpoint.rs @@ -69,14 +69,14 @@ impl Endpoint { } pub(super) fn set_nonblocking(&self, is_nonblocking: bool) -> Result<()> { - let reader_flags = self.0.reader.status_flags(); - self.0 - .reader - .set_status_flags(reader_flags | StatusFlags::O_NONBLOCK)?; - let writer_flags = self.0.writer.status_flags(); - self.0 - .writer - .set_status_flags(writer_flags | StatusFlags::O_NONBLOCK)?; + let mut reader_flags = self.0.reader.status_flags(); + reader_flags.set(StatusFlags::O_NONBLOCK, is_nonblocking); + self.0.reader.set_status_flags(reader_flags)?; + + let mut writer_flags = self.0.writer.status_flags(); + writer_flags.set(StatusFlags::O_NONBLOCK, is_nonblocking); + self.0.writer.set_status_flags(writer_flags)?; + Ok(()) }