about summary refs log tree commit diff
path: root/src/libstd/sys/windows
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-03-20 20:13:49 -0700
committerbors <bors@rust-lang.org>2016-03-20 20:13:49 -0700
commit6c4b1f18f3c2a2de17c3562d6557a445b627bcc1 (patch)
tree13c1f428c6c41b4a59c9836c3862d0304834e0ec /src/libstd/sys/windows
parent7f5c568e0ad7014eda43798fd66fb7f2b8069ff2 (diff)
parentc0d989ed6b4b840a290a80ec0cdbc8edbce2ee57 (diff)
downloadrust-6c4b1f18f3c2a2de17c3562d6557a445b627bcc1.tar.gz
rust-6c4b1f18f3c2a2de17c3562d6557a445b627bcc1.zip
Auto merge of #32302 - sfackler:unix-socket, r=alexcrichton
Add unix socket support to the standard library

r? @alexcrichton
Diffstat (limited to 'src/libstd/sys/windows')
-rw-r--r--src/libstd/sys/windows/net.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libstd/sys/windows/net.rs b/src/libstd/sys/windows/net.rs
index bb3c79c5a84..3a2f06418cf 100644
--- a/src/libstd/sys/windows/net.rs
+++ b/src/libstd/sys/windows/net.rs
@@ -214,6 +214,15 @@ impl Socket {
         let raw: c::BYTE = try!(net::getsockopt(self, c::IPPROTO_TCP, c::TCP_NODELAY));
         Ok(raw != 0)
     }
+
+    pub fn take_error(&self) -> io::Result<Option<io::Error>> {
+        let raw: c_int = try!(net::getsockopt(self, c::SOL_SOCKET, c::SO_ERROR));
+        if raw == 0 {
+            Ok(None)
+        } else {
+            Ok(Some(io::Error::from_raw_os_error(raw as i32)))
+        }
+    }
 }
 
 #[unstable(reason = "not public", issue = "0", feature = "fd_read")]