From b54b282a4f89da3809ae0e166a096bc0ebd6d52b Mon Sep 17 00:00:00 2001 From: Daniel Santos Date: Thu, 17 Jul 2008 13:52:51 -0500 Subject: [PATCH] ws2_32: WSASendTo() should clear last error on success. --- dlls/ws2_32/socket.c | 2 ++ dlls/ws2_32/tests/sock.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 6624c96c116..451de49d52f 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2766,6 +2766,7 @@ INT WINAPI WSASendTo( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, } else NtQueueApcThread( GetCurrentThread(), (PNTAPCFUNC)ws2_async_apc, (ULONG_PTR)wsa, (ULONG_PTR)iosb, 0 ); + WSASetLastError(0); return 0; } @@ -2830,6 +2831,7 @@ INT WINAPI WSASendTo( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, TRACE(" -> %i bytes\n", *lpNumberOfBytesSent); release_sock_fd( s, fd ); + WSASetLastError(0); return 0; error: diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 1256c2dcb73..e2d21621303 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -2180,6 +2180,34 @@ end: closesocket(v6); } +static void test_WSASendTo(void) +{ + SOCKET s; + struct sockaddr_in addr; + char buf[12] = "hello world"; + WSABUF data_buf; + DWORD bytesSent; + + addr.sin_family = AF_INET; + addr.sin_port = htons(139); + addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + data_buf.len = sizeof(buf); + data_buf.buf = buf; + + if( (s = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) { + ok(0, "socket() failed error: %d\n", WSAGetLastError()); + return; + } + + WSASetLastError(12345); + if(WSASendTo(s, &data_buf, 1, &bytesSent, 0, (struct sockaddr*)&addr, sizeof(addr), NULL, NULL)) { + ok(0, "WSASendTo() failed error: %d\n", WSAGetLastError()); + return; + } + ok(!WSAGetLastError(), "WSAGetLastError() should return zero after " + "a successful call to WSASendTo()\n"); +} + /**************** Main program ***************/ START_TEST( sock ) @@ -2219,6 +2247,8 @@ START_TEST( sock ) test_send(); test_write_events(); + test_WSASendTo(); + test_ipv6only(); Exit(); -- 2.11.4.GIT