Crate tcp_stream

Source
Expand description

§std::net::TCP stream on steroids

tcp-stream is a library aiming at providing TLS support to std::net::TcpStream

§Examples

To connect to a remote server:

use tcp_stream::{HandshakeError, TcpStream, TLSConfig};

use std::io::{self, Read, Write};

let mut stream = TcpStream::connect("www.rust-lang.org:443").unwrap();
stream.set_nonblocking(true).unwrap();

while !stream.is_connected() {
    if stream.try_connect().unwrap() {
        break;
    }
}

let mut stream = stream.into_tls("www.rust-lang.org", TLSConfig::default());

while let Err(HandshakeError::WouldBlock(mid_handshake)) = stream {
    stream = mid_handshake.handshake();
}

let mut stream = stream.unwrap();

while let Err(err) = stream.write_all(b"GET / HTTP/1.0\r\n\r\n") {
    if err.kind() != io::ErrorKind::WouldBlock {
        panic!("error: {:?}", err);
    }
}
stream.flush().unwrap();
let mut res = vec![];
while let Err(err) = stream.read_to_end(&mut res) {
    if err.kind() != io::ErrorKind::WouldBlock {
        panic!("stream error: {:?}", err);
    }
}
println!("{}", String::from_utf8_lossy(&res));

Structs§

NativeTlsConnector
Reexport native-tls’s TlsConnector A builder for client-side TLS connections.
OpenSslConnector
Reexport openssl’s TlsConnector A type which wraps client-side streams in a TLS session.
OpenSslMethod
Reexport openssl’s TlsConnector A type specifying the kind of protocol an SslContext will speak.
OwnedTLSConfig
Holds extra TLS configuration
RustlsConnector
Reexport rustls-connector’s TlsConnector The connector
RustlsConnectorConfig
Reexport rustls-connector’s TlsConnector Configuration helper for RustlsConnector
TLSConfig
Holds extra TLS configuration

Enums§

HandshakeError
An error returned while performing the handshake
Identity
Holds one of:
MidHandshakeTlsStream
A TLS stream which has been interrupted during the handshake
OwnedIdentity
Holds one of:
TcpStream
Wrapper around plain or TLS TCP streams

Type Aliases§

HandshakeResult
Holds either the TLS TcpStream result or the current handshake state
NativeTlsHandshakeError
A HandshakeError from native-tls
NativeTlsMidHandshakeTlsStream
A MidHandshakeTlsStream from native-tls
NativeTlsStream
A TcpStream wrapped by native-tls
OpenSslErrorStack
An ErrorStack from openssl
OpenSslHandshakeError
A HandshakeError from openssl
OpenSslMidHandshakeTlsStream
A MidHandshakeTlsStream from openssl
OpenSslStream
A TcpStream wrapped by openssl
RustlsHandshakeError
A HandshakeError from rustls-connector
RustlsMidHandshakeTlsStream
A MidHandshakeTlsStream from rustls-connector
RustlsStream
A TcpStream wrapped by rustls