Skip to content

Commit d632726

Browse files
authored
Merge pull request #592 from inejge/tls-hang-fix
Read/Write impl rework for rustls
2 parents 20f62f8 + 215e1ff commit d632726

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

Cargo.lock

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/download/src/lib.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ pub mod rustls {
366366
use hyper_base;
367367
use self::hyper::error::Result as HyperResult;
368368
use self::hyper::net::{SslClient, NetworkStream};
369+
use self::rustls::Session;
369370
use std::io::Result as IoResult;
370371
use std::io::{Read, Write};
371372
use std::net::{SocketAddr, Shutdown};
@@ -491,8 +492,18 @@ pub mod rustls {
491492
.and_then(|mut t| {
492493
let (ref mut stream, ref mut tls) = *t;
493494
while tls.wants_read() {
494-
tls.read_tls(stream).unwrap(); // FIXME
495-
tls.process_new_packets().unwrap(); // FIXME
495+
match tls.read_tls(stream) {
496+
Ok(_) => {
497+
match tls.process_new_packets() {
498+
Ok(_) => (),
499+
Err(e) => return Err(io::Error::new(io::ErrorKind::Other, format!("{:?}", e)))
500+
}
501+
while tls.wants_write() {
502+
try!(tls.write_tls(stream));
503+
}
504+
},
505+
Err(e) => return Err(e),
506+
}
496507
}
497508

498509
tls.read(buf)
@@ -507,11 +518,9 @@ pub mod rustls {
507518
self.lock()
508519
.and_then(|mut t| {
509520
let (ref mut stream, ref mut tls) = *t;
510-
511521
let res = tls.write(buf);
512-
513522
while tls.wants_write() {
514-
tls.write_tls(stream).unwrap(); // FIXME
523+
try!(tls.write_tls(stream));
515524
}
516525

517526
res

0 commit comments

Comments
 (0)