From 7d4b25663f0fa4aaf7b71e4f0a594e2eeedd9175 Mon Sep 17 00:00:00 2001 From: Gregory Terzian Date: Tue, 7 Jul 2020 10:59:25 +0800 Subject: [PATCH] net: in the absense of a request body, assume streaming it cannot fail --- components/net/http_loader.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 1c38f303f56..3d5bfe9612e 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -1690,12 +1690,22 @@ fn http_network_fetch( // The receiver will receive true if there has been an error streaming the request body. let (fetch_terminated_sender, fetch_terminated_receiver) = unbounded(); + let body = request.body.as_ref().map(|body| body.take_stream()); + + if body.is_none() { + // There cannot be an error streaming a non-existent body. + // However in such a case the channel will remain unused + // and drop inside `obtain_response`. + // Send the confirmation now, ensuring the receiver will not dis-connect first. + let _ = fetch_terminated_sender.send(false); + } + let response_future = obtain_response( &context.state.client, &url, &request.method, &mut request.headers, - request.body.as_ref().map(|body| body.take_stream()), + body, request .body .as_ref()