Prioritize Relay Flow Cancellation over Buffered Writes

This commit is contained in:
Alexey
2026-05-21 20:35:25 +03:00
parent 98c985091c
commit 885258b85e

View File

@@ -437,8 +437,9 @@ where
W: AsyncWrite + Unpin + Send + 'static, W: AsyncWrite + Unpin + Send + 'static,
{ {
tokio::select! { tokio::select! {
result = client_writer.write_all(bytes) => result.map_err(ProxyError::Io), biased;
_ = cancel.cancelled() => Err(ProxyError::MiddleClientWriterCancelled), _ = cancel.cancelled() => Err(ProxyError::MiddleClientWriterCancelled),
result = client_writer.write_all(bytes) => result.map_err(ProxyError::Io),
} }
} }
@@ -450,7 +451,8 @@ where
W: AsyncWrite + Unpin + Send + 'static, W: AsyncWrite + Unpin + Send + 'static,
{ {
tokio::select! { tokio::select! {
result = client_writer.flush() => result.map_err(ProxyError::Io), biased;
_ = cancel.cancelled() => Err(ProxyError::MiddleClientWriterCancelled), _ = cancel.cancelled() => Err(ProxyError::MiddleClientWriterCancelled),
result = client_writer.flush() => result.map_err(ProxyError::Io),
} }
} }