ws2_32: Make closesocket() more robust.

This commit is contained in:
Bruno Jesus 2015-03-05 03:35:06 -03:00 committed by Alexandre Julliard
parent 81598be9cf
commit bf36fb0216
1 changed files with 17 additions and 3 deletions

View File

@ -2780,9 +2780,23 @@ int WINAPI WS_bind(SOCKET s, const struct WS_sockaddr* name, int namelen)
*/
int WINAPI WS_closesocket(SOCKET s)
{
TRACE("socket %04lx\n", s);
if (CloseHandle(SOCKET2HANDLE(s))) return 0;
return SOCKET_ERROR;
int res = SOCKET_ERROR, fd;
if (num_startup)
{
fd = get_sock_fd(s, FILE_READ_DATA, NULL);
if (fd >= 0)
{
release_sock_fd(s, fd);
if (CloseHandle(SOCKET2HANDLE(s)))
res = 0;
}
else
SetLastError(WSAENOTSOCK);
}
else
SetLastError(WSANOTINITIALISED);
TRACE("(socket %04lx) -> %d\n", s, res);
return res;
}
static int do_connect(int fd, const struct WS_sockaddr* name, int namelen)