aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorAaron Weiss <[email protected]>2015-03-02 16:32:25 -0500
committerAaron Weiss <[email protected]>2015-03-02 16:32:25 -0500
commitc3eee3b19438ddd7c9bd3ef57fdfd4838f9b416c (patch)
tree8e95095410dc06d5c80b0b98e2c95e0278907d14 /openssl/src
parentRelease v0.5.0 (diff)
downloadrust-openssl-c3eee3b19438ddd7c9bd3ef57fdfd4838f9b416c.tar.xz
rust-openssl-c3eee3b19438ddd7c9bd3ef57fdfd4838f9b416c.zip
Added try_clone to SslStream for SslStream<TcpStream>.
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/lib.rs2
-rw-r--r--openssl/src/ssl/mod.rs12
2 files changed, 13 insertions, 1 deletions
diff --git a/openssl/src/lib.rs b/openssl/src/lib.rs
index 12b0a887..df998ff0 100644
--- a/openssl/src/lib.rs
+++ b/openssl/src/lib.rs
@@ -1,4 +1,4 @@
-#![feature(unsafe_destructor, core, io, std_misc, path, os, unique)]
+#![feature(unsafe_destructor, core, io, std_misc, net, path, os, unique)]
#![cfg_attr(test, feature(net, fs))]
#![doc(html_root_url="https://sfackler.github.io/rust-openssl/doc/openssl")]
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs
index ecf12905..06e37aac 100644
--- a/openssl/src/ssl/mod.rs
+++ b/openssl/src/ssl/mod.rs
@@ -5,6 +5,7 @@ use std::io;
use std::io::prelude::*;
use std::ffi::AsOsStr;
use std::mem;
+use std::net;
use std::num::FromPrimitive;
use std::num::Int;
use std::path::Path;
@@ -437,6 +438,17 @@ pub struct SslStream<S> {
buf: Vec<u8>
}
+impl SslStream<net::TcpStream> {
+ /// Create a new independently owned handle to the underlying socket.
+ pub fn try_clone(&self) -> io::Result<SslStream<net::TcpStream>> {
+ Ok(SslStream {
+ stream: try!(self.stream.try_clone()),
+ ssl: self.ssl.clone(),
+ buf: self.buf.clone(),
+ })
+ }
+}
+
impl<S> fmt::Debug for SslStream<S> where S: fmt::Debug {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "SslStream {{ stream: {:?}, ssl: {:?} }}", self.stream, self.ssl)