]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
dco-win: simplify do_close_link_socket()
authorLev Stipakov <lev@openvpn.net>
Tue, 31 Dec 2024 14:54:17 +0000 (15:54 +0100)
committerGert Doering <gert@greenie.muc.de>
Tue, 31 Dec 2024 15:27:08 +0000 (16:27 +0100)
c->c2.link_socket_owned is true in client mode
and for the global context in the server mode -
those are exactly the cases when we want to
set sd to undefined when using dco-win.

Change-Id: I3232dd8d855ca3f198b4ca3b2ef4f67cec49f3d4
Signed-off-by: Lev Stipakov <lev@openvpn.net>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20241231145417.12128-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg30328.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/init.c

index 850cd126109b589b77c2615a622570c424663b97..2bd5518992deea3970eb8a5d4c94db39c7827936 100644 (file)
@@ -4018,21 +4018,18 @@ do_close_free_key_schedule(struct context *c, bool free_ssl_ctx)
 static void
 do_close_link_socket(struct context *c)
 {
-    /* in dco-win case, link socket is a tun handle which is
-     * closed in do_close_tun(). Set it to UNDEFINED so
-     * we won't use WinSock API to close it. */
-    if (tuntap_is_dco_win(c->c1.tuntap) && c->c2.link_sockets)
-    {
-        for (int i = 0; i < c->c1.link_sockets_num; i++)
-        {
-            c->c2.link_sockets[i]->sd = SOCKET_UNDEFINED;
-        }
-    }
-
     if (c->c2.link_sockets && c->c2.link_socket_owned)
     {
         for (int i = 0; i < c->c1.link_sockets_num; i++)
         {
+            /* in dco-win case, link socket is a tun handle which is
+             * closed in do_close_tun(). Set it to UNDEFINED so
+             * we won't use WinSock API to close it. */
+            if (tuntap_is_dco_win(c->c1.tuntap))
+            {
+                c->c2.link_sockets[i]->sd = SOCKET_UNDEFINED;
+            }
+
             link_socket_close(c->c2.link_sockets[i]);
         }
         c->c2.link_sockets = NULL;