Revert "Revert "libasync: don't let TcpStream::read() call back for empty buffers""
Zero-length buffer is really a special case, as one must return Poll::Pending in this case.
This reverts commit 1ac10ba0d4
.
This commit is contained in:
parent
1ac10ba0d4
commit
be35be8d38
|
@ -141,12 +141,18 @@ impl TcpStream {
|
||||||
|
|
||||||
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
|
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
|
||||||
let result = self.stream.with_socket(|mut socket| {
|
let result = self.stream.with_socket(|mut socket| {
|
||||||
socket.recv(|buf| match (self.f)(buf) {
|
socket.recv(|buf| {
|
||||||
Poll::Ready((amount, result)) =>
|
if buf.len() > 0 {
|
||||||
(amount, Poll::Ready(Ok(result))),
|
match (self.f)(buf) {
|
||||||
Poll::Pending =>
|
Poll::Ready((amount, result)) =>
|
||||||
// 0 bytes consumed
|
(amount, Poll::Ready(Ok(result))),
|
||||||
(0, Poll::Pending),
|
Poll::Pending =>
|
||||||
|
// 0 bytes consumed
|
||||||
|
(0, Poll::Pending),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
(0, Poll::Pending)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
match result {
|
match result {
|
||||||
|
|
Loading…
Reference in New Issue