net: change listen() to accept(), which waits until the connection is established.

This commit is contained in:
Dario Nieuwenhuis 2022-04-23 05:14:44 +02:00
parent b578e060d7
commit 50e1d257bd

View File

@ -58,7 +58,7 @@ impl<'a> TcpSocket<'a> {
.await .await
} }
pub async fn listen<T>(&mut self, local_endpoint: T) -> Result<()> pub async fn accept<T>(&mut self, local_endpoint: T) -> Result<()>
where where
T: Into<IpEndpoint>, T: Into<IpEndpoint>,
{ {
@ -66,9 +66,7 @@ impl<'a> TcpSocket<'a> {
futures::future::poll_fn(|cx| { futures::future::poll_fn(|cx| {
self.with(|s, _| match s.state() { self.with(|s, _| match s.state() {
TcpState::Closed | TcpState::TimeWait => Poll::Ready(Err(Error::Unaddressable)), TcpState::Listen | TcpState::SynSent | TcpState::SynReceived => {
TcpState::Listen => Poll::Ready(Ok(())),
TcpState::SynSent | TcpState::SynReceived => {
s.register_send_waker(cx.waker()); s.register_send_waker(cx.waker());
Poll::Pending Poll::Pending
} }