Skip to content

Commit da758f8

Browse files
committed
fix: refactor
1 parent 550f777 commit da758f8

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ tracing-futures = { version = "0.2", features = ["futures-03"] }
2323
sqlx = { version = "0.4.2", git = "https://github.com/launchbadge/sqlx", branch = "master", default-features = false, features = ["runtime-tokio-rustls", "macros", "migrate"] }
2424
tokio = { version = "1.0", features = ["rt-multi-thread", "net", "signal", "macros"] }
2525
tokio-stream = { version = "0.1", features = ["net"] }
26+
tokio-util = "0.6"
2627
tokio-rustls = "0.22"
2728
uuid = { version = "0.8", features = ["v4"] }
2829
bcrypt = "0.9"

src/api/proxy.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
use futures_util::stream::Stream;
2-
use futures_util::{TryStreamExt, FutureExt};
2+
use futures_util::TryStreamExt;
33
use ppp::error::ParseError;
44
use ppp::model::{Addresses, Header};
55
use std::future::Future;
66
use std::io::IoSlice;
77
use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6};
88
use std::pin::Pin;
99
use std::task::{Context, Poll};
10-
use tokio::io::{AsyncRead, AsyncWrite, Error as IoError, ErrorKind, ReadBuf, Result as IoResult, AsyncReadExt};
10+
use tokio::io::{AsyncRead, AsyncWrite, Error as IoError, ErrorKind, ReadBuf, Result as IoResult};
1111
use tokio::net::{TcpListener, TcpStream};
1212
use tokio_stream::wrappers::TcpListenerStream;
1313
use tracing::field::{display, Empty};
1414
use tracing::{debug_span, error, info, Instrument};
1515

1616
use crate::config::ProxyProtocol;
17+
use tokio_util::io::poll_read_buf;
1718

1819
pub(super) fn wrap(
1920
listener: TcpListener,
@@ -178,19 +179,15 @@ impl Future for PeerAddrFuture<'_> {
178179

179180
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
180181
let this = self.get_mut();
181-
let stream = &mut this.proxy_stream.stream;
182-
let data = &mut this.proxy_stream.data;
182+
let stream = Pin::new(&mut this.proxy_stream.stream);
183183

184-
let data = match data {
184+
let data = match &mut this.proxy_stream.data {
185185
Some(data) => data,
186186
None => return Poll::Ready(stream.local_addr()),
187187
};
188188

189-
190-
let stream = stream.read_buf(data);
191-
tokio::pin!(stream);
192-
match stream.poll_unpin(cx) {
193-
Poll::Ready(Ok(_)) => {},
189+
match poll_read_buf(stream, cx, data) {
190+
Poll::Ready(Ok(_)) => {}
194191
Poll::Ready(Err(e)) => return Poll::Ready(Err(e)),
195192
Poll::Pending => return Poll::Pending,
196193
};

0 commit comments

Comments
 (0)