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 6b60a9f2201eb36a4b58db2e976943609e571730..0a819e07ae1328f10d3c7618eda4f495029a5d1d 100644 (file)
@@ -303,6 +303,7 @@ pgwin32_socket(int af, int type, int protocol)
    if (ioctlsocket(s, FIONBIO, &on))
    {
        TranslateSocketError();
+       closesocket(s);
        return INVALID_SOCKET;
    }
    errno = 0;