Skip to content

Commit

Permalink
Merge pull request #44 from adamreichold/retry-interrupted-handshake
Browse files Browse the repository at this point in the history
Retry interrupted TLS handshake
  • Loading branch information
sbstp authored Jan 14, 2020
2 parents ebd7220 + 2714211 commit 42eb618
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/streams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,17 @@ impl BaseStream {
.danger_accept_invalid_hostnames(info.accept_invalid_hostnames)
.build()?;
let stream = BaseStream::connect_tcp(host, port, info)?;
let tls_stream = match connector.connect(host, stream) {
Ok(stream) => stream,
Err(HandshakeError::Failure(err)) => return Err(err.into()),
Err(HandshakeError::WouldBlock(_)) => panic!("socket configured in non-blocking mode"),
};
Ok(tls_stream)
match connector.connect(host, stream) {
Ok(stream) => Ok(stream),
Err(HandshakeError::Failure(err)) => Err(err.into()),
Err(HandshakeError::WouldBlock(mut stream)) => loop {
match stream.handshake() {
Ok(stream) => return Ok(stream),
Err(HandshakeError::Failure(err)) => return Err(err.into()),
Err(HandshakeError::WouldBlock(mid_stream)) => stream = mid_stream,
}
},
}
}

#[cfg(test)]
Expand Down

0 comments on commit 42eb618

Please sign in to comment.