From: Zebediah Figura zfigura@codeweavers.com
--- dlls/ws2_32/tests/sock.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 3e6faaffa4c..644f88ece66 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -8675,6 +8675,26 @@ static void test_shutdown(void) closesocket(client); closesocket(server);
+ /* Send data to a peer which is closed. */ + + tcp_socketpair(&client, &server); + + WSASetLastError(0xdeadbeef); + ret = shutdown(client, SD_SEND); + ok(!ret, "expected success\n"); + ok(!WSAGetLastError() || WSAGetLastError() == 0xdeadbeef /* < 7 */, "got error %u\n", WSAGetLastError()); + closesocket(client); + + ret = send(server, "test", 5, 0); + ok(ret == 5, "got %d\n", ret); + + WSASetLastError(0xdeadbeef); + ret = recv(server, buffer, sizeof(buffer), 0); + ok(ret == -1, "got %d\n", ret); + todo_wine ok(WSAGetLastError() == WSAECONNABORTED, "got error %u\n", WSAGetLastError()); + + closesocket(server); + /* Test shutting down with async I/O pending. */
client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);