@@ -30,8 +30,7 @@ cfg_if::cfg_if! {
3030 use std:: ffi:: { c_longlong, c_uint} ;
3131 use windows_sys:: core:: { PCSTR , PSTR } ;
3232 use windows_sys:: Win32 :: Networking :: WinSock :: {
33- setsockopt, LPWSAOVERLAPPED_COMPLETION_ROUTINE , SEND_RECV_FLAGS , SOCKADDR , SOCKET , SOL_SOCKET ,
34- SO_UPDATE_ACCEPT_CONTEXT , WSABUF ,
33+ LPWSAOVERLAPPED_COMPLETION_ROUTINE , SEND_RECV_FLAGS , SOCKADDR , SOCKET , WSABUF ,
3534 } ;
3635 use windows_sys:: Win32 :: System :: IO :: OVERLAPPED ;
3736 }
@@ -301,34 +300,10 @@ impl<'e> EventLoop<'e> {
301300 if count > 0 {
302301 for cqe in & mut cq {
303302 let token = cqe. token ;
304- let bytes_transferred = cqe. bytes_transferred ;
305- // resolve completed read/write tasks
306- // todo refactor IOCP impl
307- let result = match cqe. syscall_name {
308- SyscallName :: accept => unsafe {
309- if setsockopt (
310- cqe. socket ,
311- SOL_SOCKET ,
312- SO_UPDATE_ACCEPT_CONTEXT ,
313- std:: ptr:: from_ref ( & cqe. from_fd ) . cast ( ) ,
314- c_int:: try_from ( size_of :: < SOCKET > ( ) ) . expect ( "overflow" ) ,
315- ) == 0
316- {
317- cqe. socket . try_into ( ) . expect ( "result overflow" )
318- } else {
319- -c_longlong:: from ( windows_sys:: Win32 :: Foundation :: GetLastError ( ) )
320- }
321- } ,
322- SyscallName :: recv
323- | SyscallName :: WSARecv
324- | SyscallName :: send
325- | SyscallName :: WSASend => bytes_transferred. into ( ) ,
326- _ => panic ! ( "unsupported" ) ,
327- } ;
328303 if let Some ( ( _, pair) ) = self . syscall_wait_table . remove ( & token) {
329304 let ( lock, cvar) = & * pair;
330305 let mut pending = lock. lock ( ) . expect ( "lock failed" ) ;
331- * pending = Some ( result) ;
306+ * pending = Some ( cqe . result ) ;
332307 cvar. notify_one ( ) ;
333308 }
334309 unsafe { self . resume ( token) } ;
0 commit comments