Close socket in case of errors in setting non-blocking
authorDaniel Gustafsson <[email protected]>
Wed, 17 Jan 2024 10:24:11 +0000 (11:24 +0100)
committerDaniel Gustafsson <[email protected]>
Wed, 17 Jan 2024 10:24:11 +0000 (11:24 +0100)
If configuring the newly created socket non-blocking fails we
error out and return INVALID_SOCKET, but the socket that had
been created wasn't closed. Fix by issuing closesocket in the
errorpath.

Backpatch to all supported branches.

Author: Ranier Vilela <[email protected]>
Discussion: https://postgr.es/m/CAEudQApmU5CrKefH85VbNYE2y8H=-qqEJbg6RAPU65+vCe+89A@mail.gmail.com
Backpatch-through: v12

src/backend/port/win32/socket.c

index 6fbd1ed6fb49f5ecc6f98c0aca9c98f248007783..10b85483062ff9e1913ae837479c96e32468b901 100644 (file)
@@ -290,6 +290,7 @@ pgwin32_socket(int af, int type, int protocol)
    if (ioctlsocket(s, FIONBIO, &on))
    {
        TranslateSocketError();
+       closesocket(s);
        return INVALID_SOCKET;
    }
    errno = 0;