Эх сурвалжийг харах

todo: socket close 及 port 接触占用

Samuka007 5 сар өмнө
parent
commit
251e1bca41

+ 10 - 11
kernel/src/net/socket/inet/stream/mod.rs

@@ -303,18 +303,17 @@ impl Socket for TcpSocket {
     }
 
     fn close(&self) -> Result<(), SystemError> {
-        match self.inner.read().as_ref().expect("Tcp Inner is None") {
-            Inner::Init(_) => {}
-            Inner::Connecting(_) => {
-                return Err(EINPROGRESS);
-            }
-            Inner::Established(es) => {
-                es.close();
-                es.release();
+        self.inner.read().as_ref().map(
+            |inner| match inner {
+                Inner::Connecting(_) => Err(EINPROGRESS),
+                Inner::Established(es) => {
+                    es.close();
+                    es.release();
+                    Ok(())
+                }
+                _ => Ok(()),
             }
-            Inner::Listening(_) => {}
-        }
-        Ok(())
+        ).unwrap_or(Ok(()))
     }
 }