ws2_32: implement AcceptEx and GetAcceptExSockaddrs (try 3)
mike.kaplinskiy at gmail.com
Wed Sep 22 21:18:04 CDT 2010
On Wed, Sep 22, 2010 at 6:13 PM, James Mckenzie
<jjmckenzie51 at earthlink.net> wrote:
> -----Original Message-----
>>From: Ricardo Filipe <ricardojdfilipe at gmail.com>
>>Sent: Sep 22, 2010 1:18 PM
>>To: wine-devel at winehq.org
>>Subject: Re: ws2_32: implement AcceptEx and GetAcceptExSockaddrs (try 3)
>>2010/9/21 Mike Kaplinskiy <mike.kaplinskiy at 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.
More information about the wine-devel