use hyper::upgrade::on

This commit is contained in:
Jun Kurihara 2023-12-15 15:36:00 +09:00
commit d85d7e6c39
No known key found for this signature in database
GPG key ID: 48ADFD173ED22B03
2 changed files with 18 additions and 16 deletions

View file

@ -143,7 +143,8 @@ where
// Upgrade in request header
let upgrade_in_request = extract_upgrade(req.headers());
let request_upgraded = req.extensions_mut().remove::<hyper::upgrade::OnUpgrade>();
// let request_upgraded = req.extensions_mut().remove::<hyper::upgrade::OnUpgrade>();
let req_on_upgrade = hyper::upgrade::on(&mut req);
// Build request from destination information
let _context = match self.generate_request_forwarded(
@ -209,19 +210,21 @@ where
upgrade_in_response, upgrade_in_request
)));
}
let Some(request_upgraded) = request_upgraded else {
return Err(HttpError::NoUpgradeExtensionInRequest);
};
let Some(onupgrade) = res_backend.extensions_mut().remove::<hyper::upgrade::OnUpgrade>() else {
return Err(HttpError::NoUpgradeExtensionInResponse);
};
// let Some(request_upgraded) = request_upgraded else {
// return Err(HttpError::NoUpgradeExtensionInRequest);
// };
// let Some(onupgrade) = res_backend.extensions_mut().remove::<hyper::upgrade::OnUpgrade>() else {
// return Err(HttpError::NoUpgradeExtensionInResponse);
// };
let res_on_upgrade = hyper::upgrade::on(&mut res_backend);
self.globals.runtime_handle.spawn(async move {
let mut response_upgraded = TokioIo::new(onupgrade.await.map_err(|e| {
let mut response_upgraded = TokioIo::new(res_on_upgrade.await.map_err(|e| {
error!("Failed to upgrade response: {}", e);
RpxyError::FailedToUpgradeResponse(e.to_string())
})?);
let mut request_upgraded = TokioIo::new(request_upgraded.await.map_err(|e| {
let mut request_upgraded = TokioIo::new(req_on_upgrade.await.map_err(|e| {
error!("Failed to upgrade request: {}", e);
RpxyError::FailedToUpgradeRequest(e.to_string())
})?);