fn connect()

in src/worker.rs [139:186]


    fn connect(
        &mut self,
        addr: SocketAddr,
        ssl_session: Option<SslSession>,
    ) -> Result<Token, std::io::Error> {
        CONNECT.increment();
        let stream = TcpStream::connect(addr)?;
        let mut session = if let Some(tls) = &self.tls {
            if let Ok(mut connect_config) = tls.configure() {
                if let Some(ssl_session) = ssl_session {
                    unsafe {
                        if connect_config.set_session(&ssl_session).is_err() {
                            return Err(Error::new(ErrorKind::Other, "tls session cache failure"));
                        }
                    }
                }

                match connect_config.connect("localhost", stream) {
                    Ok(stream) => {
                        if stream.ssl().session_reused() {
                            SESSION_REUSE.increment();
                        }
                        Session::tls_with_capacity(stream, 1024, 512 * 1024)
                    }
                    Err(HandshakeError::WouldBlock(stream)) => {
                        if stream.ssl().session_reused() {
                            SESSION_REUSE.increment();
                        }
                        Session::handshaking_with_capacity(stream, 1024, 512 * 1024)
                    }
                    Err(_) => {
                        return Err(Error::new(ErrorKind::Other, "tls failure"));
                    }
                }
            } else {
                return Err(Error::new(ErrorKind::Other, "tls connect config failure"));
            }
        } else {
            Session::plain_with_capacity(stream, 1024, 512 * 1024)
        };

        let entry = self.sessions.vacant_entry();
        let token = Token(entry.key());
        session.set_token(token);
        session.set_timestamp(Instant::now());
        entry.insert(session);
        Ok(token)
    }