Close socket in case of errors in setting non-blocking
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Wed, 17 Jan 2024 10:24:11 +0000 (11:24 +0100)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
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 <ranier.vf@gmail.com>
Discussion: https://postgr.es/m/CAEudQApmU5CrKefH85VbNYE2y8H=-qqEJbg6RAPU65+vCe+89A@mail.gmail.com
Backpatch-through: v12

src/backend/port/win32/socket.c

index d5b5e771e910688eada6e95039e718cee2f2a94d..2fcfc68a315b963936a77dcfff794ff0526712c5 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;