use crate::backup::*;
-
#[derive(Clone)]
struct AuthInfo {
username: String,
builder.danger_accept_invalid_certs(true);
let tlsconnector = builder.build().unwrap();
let mut httpc = hyper::client::HttpConnector::new(1);
- //httpc.set_nodelay(true); // not sure if this help?
+ httpc.set_nodelay(true); // important for h2 download performance!
httpc.enforce_http(false); // we want https...
let mut https = hyper_tls::HttpsConnector::from((httpc, tlsconnector));
https.https_only(true); // force it!
}
})
.and_then(|upgraded| {
- h2::client::handshake(upgraded).map_err(Error::from)
+ let window_size = 32*1024*1024; // max = (1 << 31) - 2
+
+ h2::client::Builder::new()
+ .max_frame_size(4*1024*1024)
+ .initial_window_size(window_size)
+ .initial_connection_window_size(window_size)
+ .handshake(upgraded)
+ .map_err(Error::from)
})
.and_then(|(h2, connection)| {
let connection = connection
}
+#[derive(Clone)]
pub struct BackupReader {
h2: H2Client,
canceller: Option<Canceller>,
self.h2.download(path, Some(param), output)
}
+ pub fn download_chunk<W: Write>(
+ &self,
+ digest: &[u8; 32],
+ output: W,
+ ) -> impl Future<Item=W, Error=Error> {
+ let path = "chunk";
+ let param = json!({ "digest": proxmox::tools::digest_to_hex(digest) });
+ self.h2.download(path, Some(param), output)
+ }
+
pub fn force_close(mut self) {
if let Some(canceller) = self.canceller.take() {
canceller.cancel();