|
1 | 1 | use futures_util::stream::Stream;
|
2 |
| -use futures_util::{TryStreamExt, FutureExt}; |
| 2 | +use futures_util::TryStreamExt; |
3 | 3 | use ppp::error::ParseError;
|
4 | 4 | use ppp::model::{Addresses, Header};
|
5 | 5 | use std::future::Future;
|
6 | 6 | use std::io::IoSlice;
|
7 | 7 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6};
|
8 | 8 | use std::pin::Pin;
|
9 | 9 | 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}; |
11 | 11 | use tokio::net::{TcpListener, TcpStream};
|
12 | 12 | use tokio_stream::wrappers::TcpListenerStream;
|
13 | 13 | use tracing::field::{display, Empty};
|
14 | 14 | use tracing::{debug_span, error, info, Instrument};
|
15 | 15 |
|
16 | 16 | use crate::config::ProxyProtocol;
|
| 17 | +use tokio_util::io::poll_read_buf; |
17 | 18 |
|
18 | 19 | pub(super) fn wrap(
|
19 | 20 | listener: TcpListener,
|
@@ -178,19 +179,15 @@ impl Future for PeerAddrFuture<'_> {
|
178 | 179 |
|
179 | 180 | fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
|
180 | 181 | 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); |
183 | 183 |
|
184 |
| - let data = match data { |
| 184 | + let data = match &mut this.proxy_stream.data { |
185 | 185 | Some(data) => data,
|
186 | 186 | None => return Poll::Ready(stream.local_addr()),
|
187 | 187 | };
|
188 | 188 |
|
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(_)) => {} |
194 | 191 | Poll::Ready(Err(e)) => return Poll::Ready(Err(e)),
|
195 | 192 | Poll::Pending => return Poll::Pending,
|
196 | 193 | };
|
|
0 commit comments