diff options
Diffstat (limited to 'src/filters/proxy.rs')
-rw-r--r-- | src/filters/proxy.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/filters/proxy.rs b/src/filters/proxy.rs index 40ebf17..0e1a556 100644 --- a/src/filters/proxy.rs +++ b/src/filters/proxy.rs @@ -75,13 +75,14 @@ pub async fn proxy_request( }; if do_upgrade { - let on_upgrade_upstream = resp.extensions_mut().remove::<OnUpgrade>(); + let on_upgrade_upstream = resp + .extensions_mut() + .remove::<OnUpgrade>() + .ok_or(ServiceError::UpgradeFailed)?; + let on_upgrade_downstream = on_upgrade_downstream.ok_or(ServiceError::UpgradeFailed)?; tokio::task::spawn(async move { debug!("about to upgrade connection, sending empty response"); - match ( - on_upgrade_upstream.unwrap().await, - on_upgrade_downstream.unwrap().await, - ) { + match (on_upgrade_upstream.await, on_upgrade_downstream.await) { (Ok(upgraded_upstream), Ok(upgraded_downstream)) => { debug!("upgrade successful"); match tokio::io::copy_bidirectional( |