about summary refs log tree commit diff
path: root/src/libstd/sys_common
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-07-07 03:43:14 +0000
committerbors <bors@rust-lang.org>2017-07-07 03:43:14 +0000
commit54e3fe7af0c448858fb1ac9c2d48da8bc4f6f1f8 (patch)
tree764f8b3e0db4fcb873e062698d1e8eaf5dd6b1f4 /src/libstd/sys_common
parentb80b659d674fa19b2b48142e4f7974544bc8d5f6 (diff)
parent8c92da3c518111b28f0b5fb297ab719bf353cdc6 (diff)
downloadrust-54e3fe7af0c448858fb1ac9c2d48da8bc4f6f1f8.tar.gz
rust-54e3fe7af0c448858fb1ac9c2d48da8bc4f6f1f8.zip
Auto merge of #43062 - sfackler:connect-timeout, r=alexcrichton
Implement TcpStream::connect_timeout

This breaks the "single syscall rule", but it's really annoying to hand
write and is pretty foundational.

r? @alexcrichton

cc @rust-lang/libs
Diffstat (limited to 'src/libstd/sys_common')
-rw-r--r--src/libstd/sys_common/net.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libstd/sys_common/net.rs b/src/libstd/sys_common/net.rs
index 809b728379d..5775dd4f1fc 100644
--- a/src/libstd/sys_common/net.rs
+++ b/src/libstd/sys_common/net.rs
@@ -215,6 +215,14 @@ impl TcpStream {
         Ok(TcpStream { inner: sock })
     }
 
+    pub fn connect_timeout(addr: &SocketAddr, timeout: Duration) -> io::Result<TcpStream> {
+        init();
+
+        let sock = Socket::new(addr, c::SOCK_STREAM)?;
+        sock.connect_timeout(addr, timeout)?;
+        Ok(TcpStream { inner: sock })
+    }
+
     pub fn socket(&self) -> &Socket { &self.inner }
 
     pub fn into_socket(self) -> Socket { self.inner }