https://bugs.winehq.org/show_bug.cgi?id=38224
Bug ID: 38224 Summary: AcceptEx detaches the socket from its IO completion port Product: Wine Version: 1.6.2 Hardware: x86 OS: Mac OS X Status: UNCONFIRMED Severity: normal Priority: P2 Component: winsock Assignee: wine-bugs@winehq.org Reporter: mterrisse@free.fr
Created attachment 51024 --> https://bugs.winehq.org/attachment.cgi?id=51024 Source + binary for BugAcceptEx
Hello,
On a server I have a listening socket lListeningSocket := socket (PF_INET, SOCK_STREAM, IPPROTO_TCP); CreateIoCompletionPort (lListeningSocket, lIoCompletionPort, 0, 0); bind (lListeningSocket, PSockAddr (@lAddress)^, SizeOf (TSockAddrIn)); listen (lListeningSocket, 1); and I prepare a socket for a new connection lSocket := socket (PF_INET, SOCK_STREAM, IPPROTO_TCP); CreateIoCompletionPort (lSocket, lIoCompletionPort, 0, 0); then call AcceptEx lPtrAcceptEx (lListeningSocket, lSocket, ...);
GetQueuedCompletionStatus (lIoCompletionPort, ...) signals completion for AcceptEx for an incoming connection (so CreateIoCompletionPort (lListeningSocket, ...) works fine), but never signals completion for events on lSocket, not even a disconnection.
If I call again CreateIoCompletionPort (lSocket, lIoCompletionPort, 0, 0); after the completion of AcceptEx, it works fine. So AcceptEx as detached lSocket from the IO completion port.
To help reproducting it, I created a little command line server BugAcceptEx.exe Here attached is the code (Delphi) and the executable.
In a command prompt run BugAcceptEx 1234 and in another command prompt telnet localhost 1234 and press a key
Under Windows it works fine, under Mac + Wine the server signals the incoming connection but never signals data nor disconnection.
Now if you do BugAcceptEx 1235 WithPatch and telnet localhost 1235 it works fine
Thank you for your help.
Regards,
Michel Terrisse