Zebediah Figura zfigura@codeweavers.com writes:
The server might change the status. In particular, if we got a short but nonzero write on a nonblocking socket, try_send() would return STATUS_DEVICE_NOT_READY and hence leave the I/O status block unfilled. The server subsequently massages this into STATUS_SUCCESS, causing a garbage size to be eventually returned from ws2_32 send().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51439 Signed-off-by: Zebediah Figura zfigura@codeweavers.com
Despite the comment, I'd open to filling the IOSB in sock_transmit() anyway.
dlls/ntdll/unix/socket.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
This breaks the tests:
tools/runtest -q -P wine -T . -M ws2_32.dll -p dlls/ws2_32/tests/ws2_32_test.exe sock && touch dlls/ws2_32/tests/sock.ok sock.c:2422: Tests skipped: SOCK_RAW is not supported sock.c:2472: Tests skipped: IPX is not supported sock.c:8408: Tests skipped: Cannot test SIO_ADDRESS_LIST_CHANGE, interactive tests must be enabled sock.c:5084: Test failed: got error 0 sock.c:5084: Test failed: got error 0 make: *** [Makefile:144069: dlls/ws2_32/tests/sock.ok] Error 2