diff --git a/services/libs/jinux-std/src/net/iface/any_socket.rs b/services/libs/jinux-std/src/net/iface/any_socket.rs index a962fce14..7c054c163 100644 --- a/services/libs/jinux-std/src/net/iface/any_socket.rs +++ b/services/libs/jinux-std/src/net/iface/any_socket.rs @@ -174,6 +174,7 @@ impl AnyBoundSocket { impl Drop for AnyBoundSocket { fn drop(&mut self) { self.close(); + self.iface.poll(); self.iface.common().remove_socket(self.handle); self.iface.common().release_port(self.port); self.iface.common().remove_bound_socket(self.weak_ref()); diff --git a/services/libs/jinux-std/src/net/iface/common.rs b/services/libs/jinux-std/src/net/iface/common.rs index 21541af1e..8ab3c771d 100644 --- a/services/libs/jinux-std/src/net/iface/common.rs +++ b/services/libs/jinux-std/src/net/iface/common.rs @@ -138,8 +138,9 @@ impl IfaceCommon { }; if has_events { self.bound_sockets.read().iter().for_each(|bound_socket| { - let bound_socket = bound_socket.upgrade().unwrap(); - bound_socket.update_socket_state(); + if let Some(bound_socket) = bound_socket.upgrade() { + bound_socket.update_socket_state(); + } }); }