@@ -54,7 +54,9 @@ impl Socket {
5454 async fn write_with_meta ( & self , buffer : & [ u8 ] , meta : & UdpMetadata ) -> io:: Result < usize > {
5555 future:: poll_fn ( |cx| {
5656 self . with ( |socket| {
57- if socket. is_open ( ) {
57+ if !socket. is_open ( ) {
58+ Poll :: Ready ( Err ( Errno :: Io ) )
59+ } else {
5860 if socket. can_send ( ) {
5961 Poll :: Ready (
6062 socket
@@ -66,8 +68,6 @@ impl Socket {
6668 socket. register_recv_waker ( cx. waker ( ) ) ;
6769 Poll :: Pending
6870 }
69- } else {
70- Poll :: Ready ( Err ( Errno :: Io ) )
7171 }
7272 } )
7373 } )
@@ -157,25 +157,23 @@ impl ObjectInterface for Socket {
157157 async fn recvfrom ( & self , buf : & mut [ u8 ] ) -> io:: Result < ( usize , Endpoint ) > {
158158 future:: poll_fn ( |cx| {
159159 self . with ( |socket| {
160- if socket. is_open ( ) {
161- if socket. can_recv ( ) {
162- match socket. recv_slice ( buf) {
163- Ok ( ( len, meta) ) => {
164- if self . remote_endpoint . is_none_or ( |ep| ep == meta. endpoint ) {
165- Poll :: Ready ( Ok ( ( len, meta. endpoint ) ) )
166- } else {
167- socket. register_recv_waker ( cx. waker ( ) ) ;
168- Poll :: Pending
169- }
160+ if !socket. is_open ( ) {
161+ Poll :: Ready ( Err ( Errno :: Io ) )
162+ } else if !socket. can_recv ( ) {
163+ socket. register_recv_waker ( cx. waker ( ) ) ;
164+ Poll :: Pending
165+ } else {
166+ match socket. recv_slice ( buf) {
167+ Ok ( ( len, meta) ) => {
168+ if self . remote_endpoint . is_none_or ( |ep| ep == meta. endpoint ) {
169+ Poll :: Ready ( Ok ( ( len, meta. endpoint ) ) )
170+ } else {
171+ socket. register_recv_waker ( cx. waker ( ) ) ;
172+ Poll :: Pending
170173 }
171- _ => Poll :: Ready ( Err ( Errno :: Io ) ) ,
172174 }
173- } else {
174- socket. register_recv_waker ( cx. waker ( ) ) ;
175- Poll :: Pending
175+ _ => Poll :: Ready ( Err ( Errno :: Io ) ) ,
176176 }
177- } else {
178- Poll :: Ready ( Err ( Errno :: Io ) )
179177 }
180178 } )
181179 } )
@@ -186,25 +184,23 @@ impl ObjectInterface for Socket {
186184 async fn read ( & self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
187185 future:: poll_fn ( |cx| {
188186 self . with ( |socket| {
189- if socket. is_open ( ) {
190- if socket. can_recv ( ) {
191- match socket. recv_slice ( buf) {
192- Ok ( ( len, meta) ) => {
193- if self . remote_endpoint . is_none_or ( |ep| ep == meta. endpoint ) {
194- Poll :: Ready ( Ok ( len) )
195- } else {
196- socket. register_recv_waker ( cx. waker ( ) ) ;
197- Poll :: Pending
198- }
187+ if !socket. is_open ( ) {
188+ Poll :: Ready ( Err ( Errno :: Io ) )
189+ } else if !socket. can_recv ( ) {
190+ socket. register_recv_waker ( cx. waker ( ) ) ;
191+ Poll :: Pending
192+ } else {
193+ match socket. recv_slice ( buf) {
194+ Ok ( ( len, meta) ) => {
195+ if self . remote_endpoint . is_none_or ( |ep| ep == meta. endpoint ) {
196+ Poll :: Ready ( Ok ( len) )
197+ } else {
198+ socket. register_recv_waker ( cx. waker ( ) ) ;
199+ Poll :: Pending
199200 }
200- _ => Poll :: Ready ( Err ( Errno :: Io ) ) ,
201201 }
202- } else {
203- socket. register_recv_waker ( cx. waker ( ) ) ;
204- Poll :: Pending
202+ _ => Poll :: Ready ( Err ( Errno :: Io ) ) ,
205203 }
206- } else {
207- Poll :: Ready ( Err ( Errno :: Io ) )
208204 }
209205 } )
210206 } )
0 commit comments