On Wed, Sep 22, 2010 at 6:13 PM, James Mckenzie jjmckenzie51@earthlink.net wrote:
-----Original Message-----
From: Ricardo Filipe ricardojdfilipe@gmail.com Sent: Sep 22, 2010 1:18 PM To: wine-devel@winehq.org Subject: Re: ws2_32: implement AcceptEx and GetAcceptExSockaddrs (try 3)
2010/9/21 Mike Kaplinskiy mike.kaplinskiy@gmail.com:
Thanks for the feedback Alexandre. The complexity of the wine APC & I/O system never stops amazing me. Third time's the charm?
try 3: correctly use an apc to free internal async structures (which would explain why we have the apc parameter...). Strangely moving SetEvent & AddCompletion to the apc makes it not work (...an exercise for another time) try 2: use the new async i/o callbacks
dlls/ws2_32/socket.c | 257 +++++++++++++++++++++++++++++++++++++++++++++- dlls/ws2_32/tests/sock.c | 14 ++- 2 files changed, 263 insertions(+), 8 deletions(-)
thank you for the perseverence to make this possible in the main tree.
+1. Thank you Mike.
James McKenzie
Thanks guys, but I think most of the credit should go to Alexandre for putting up with me over the last year and helping me do this correctly. If anything, I hope this goes to show the Alexandre is willing to accept correct solutions and it's our (developer's) job to make the patches correct. After all, he (more than likely) has a larger experience working on wine than those who complain that their work isn't accepted ;).
Anyway back to the patch - as an FYI this patch may not make things better. It gives a somewhat incomplete implementation (you can see the FIXME @ WS2_async_accept), and you may encounter various freezing issues since we don't cancel requests properly. That's something a lot more complicated to do and I do not yet have a good idea on how to do it correctly. There are also two minor things we need to implement to make sure we're not triggering this behavior too much (SO_UPDATE_ACCEPT_CONTEXT and SO_CONNECT_TIME). We will see how prevalent the freezes are.
Mike.