diff --git a/src/proxy/middle_relay/d2c.rs b/src/proxy/middle_relay/d2c.rs index 6adc442..92fe3c1 100644 --- a/src/proxy/middle_relay/d2c.rs +++ b/src/proxy/middle_relay/d2c.rs @@ -437,8 +437,9 @@ where W: AsyncWrite + Unpin + Send + 'static, { tokio::select! { - result = client_writer.write_all(bytes) => result.map_err(ProxyError::Io), + biased; _ = 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, { tokio::select! { - result = client_writer.flush() => result.map_err(ProxyError::Io), + biased; _ = cancel.cancelled() => Err(ProxyError::MiddleClientWriterCancelled), + result = client_writer.flush() => result.map_err(ProxyError::Io), } }