http://bugs.winehq.org/show_bug.cgi?id=9787
--- Comment #226 from Scott Lindeneau slindeneau@gmail.com 2008-07-22 13:28:44 --- Created an attachment (id=14986) --> (http://bugs.winehq.org/attachment.cgi?id=14986) Partial AcceptEx impelementation. - Still Buggy
(In reply to comment #220)
Totally agree, it should be! Unfortunately, currently async code in wineserver does not allow restarting request after server->client call, or attaching same request to another fd, which is necessary to correctly implement AcceptEx (and also do the same for TransmitFile/TransmitPackets and maybe some other advanced i/o functions)
Git and patch sets hurt my brain. I finally got it all setup into one patch for you if you are interested. I borrowed heavily from what you had (if its not broken don't fix it), but I went about AcceptEx and WS2_async_accept functions differently. My patch works for a period of time before some critical event happens. I don't know what it is (yet) but I know it has to do with reusing the accept sockets and the overlapped data structure. Once the critical event happens nothing particularly interesting happens. The sockets that are in queue get dequeued and error off the winestack, and then the program acts like acceptex isn't implemented. I have had segfaults, but those happento the latest git branch, which seems to segfault randomly even without any patches applied.
War3 players. It should work for one game, maybe two, if war3 errors out when you join a game (not when the game starts) let me know (and if you have a trace that would be nice).