Jinoh Kang : ws2_32/tests: Continue sending remaining data on short write in test_write_events.

Alexandre Julliard julliard at winehq.org
Tue Mar 22 16:46:29 CDT 2022


Module: wine
Branch: master
Commit: 29883e2db98b548e9c22b12e25b7f6d8360df220
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=29883e2db98b548e9c22b12e25b7f6d8360df220

Author: Jinoh Kang <jinoh.kang.kr at gmail.com>
Date:   Sun Mar 20 07:28:17 2022 +0900

ws2_32/tests: Continue sending remaining data on short write in test_write_events.

Today, we assert that a short write clears the FD_WRITE event bit;
however, short writes can never happen on Windows in the first place.
We're testing for a property of a socket behaviour that does not exist
on Windows, but currently happens to be exhibited by Wine.

Ignore short writes, and continue sending until it fails with
EWOULDBLOCK.  This way, the test won't care whether or not a short write
clears FD_WRITE.  This allows us some flexibility in implementation of
send().

Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ws2_32/tests/sock.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 6cb8ff0a7a8..cc74e301f60 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -5666,14 +5666,11 @@ static void test_write_events(struct event_test_ctx *ctx)
 
     if (!broken(1))
     {
-        while ((ret = send(server, buffer, buffer_size, 0)) == buffer_size);
         /* Windows will never send less than buffer_size bytes here, but Linux
          * may do a short write. */
-        todo_wine_if (ret > 0)
-        {
-            ok(ret == -1, "got %d\n", ret);
-            ok(WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());
-        }
+        while ((ret = send(server, buffer, buffer_size, 0)) > 0);
+        ok(ret == -1, "got %d\n", ret);
+        ok(WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());
 
         while (recv(client, buffer, buffer_size, 0) > 0);
         ok(WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());




More information about the wine-cvs mailing list