http://bugs.winehq.org/show_bug.cgi?id=29168
Xolotl Loki xoloki@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #38023|0 |1 is obsolete| |
--- Comment #49 from Xolotl Loki xoloki@gmail.com 2011-12-18 19:34:50 CST --- Created attachment 38024 --> http://bugs.winehq.org/attachment.cgi?id=38024 WINEDEBUG=+winsock log with extra tracing
Here we have the entry points mapped as well. So it appears what happens is:
1. the game calls WSARecv 2. WS2_recv_base goes async 3. WS2_async_recv is alerted, so it reads data 4. WS2_async_recv reads 22 bytes, returns them via completion function
which is good. Then:
5. the game calls WSARecv 6. WS2_recv_base goes async 7. WS2_async_recv is called with a status of 0, so it doesn't read from the net 8. WS2_async_recv returns the default result of 0 via the completion function
I'm not sure step #8 is correct. Usually returning 0 from an async read function means the socket has shut down, which would likely trigger the calling code to initiate a shutdown itself. What does it mean when WS2_async_recv is called with a status of 0? Should this propagate to the async caller as a 0 result?