From patchwork Fri Aug 19 22:47:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lev Stipakov X-Patchwork-Id: 2705 Return-Path: Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director14.mail.ord1d.rsapps.net ([172.31.255.6]) by backend30.mail.ord1d.rsapps.net with LMTP id aBifOsufAGNCQAAAIUCqbw (envelope-from ) for ; Sat, 20 Aug 2022 04:48:11 -0400 Received: from proxy14.mail.iad3b.rsapps.net ([172.31.255.6]) by director14.mail.ord1d.rsapps.net with LMTP id MCN8OsufAGMHeAAAeJ7fFg (envelope-from ) for ; Sat, 20 Aug 2022 04:48:11 -0400 Received: from smtp8.gate.iad3b ([172.31.255.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy14.mail.iad3b.rsapps.net with LMTPS id yMr8M8ufAGOAAwAA+7ETDg (envelope-from ) for ; Sat, 20 Aug 2022 04:48:11 -0400 X-Spam-Threshold: 95 X-Spam-Score: 0 X-Spam-Flag: NO X-Virus-Scanned: OK X-Orig-To: openvpnslackdevel@openvpn.net X-Originating-Ip: [216.105.38.7] Authentication-Results: smtp8.gate.iad3b.rsapps.net; iprev=pass policy.iprev="216.105.38.7"; spf=pass smtp.mailfrom="openvpn-devel-bounces@lists.sourceforge.net" smtp.helo="lists.sourceforge.net"; dkim=fail (signature verification failed) header.d=sourceforge.net; dkim=fail (signature verification failed) header.d=sf.net; dkim=fail (signature verification failed) header.d=gmail.com; dmarc=fail (p=none; dis=none) header.from=gmail.com X-Suspicious-Flag: YES X-Classification-ID: d1ecb5cc-2064-11ed-af8c-5254005eee35-1-1 Received: from [216.105.38.7] ([216.105.38.7:50166] helo=lists.sourceforge.net) by smtp8.gate.iad3b.rsapps.net (envelope-from ) (ecelerity 4.2.38.62370 r(:)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384) id AC/07-22706-BCF90036; Sat, 20 Aug 2022 04:48:11 -0400 Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1oPK8V-0004J3-IU; Sat, 20 Aug 2022 08:47:19 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1oPK8U-0004Iw-LI for openvpn-devel@lists.sourceforge.net; Sat, 20 Aug 2022 08:47:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=OjcraweyYOje0hHEmO5WXhJX7I tJEY8t9b/etu9KiAd6fJGrBduApoS7vW9CPLCBF7QIgNdmBvrJJa9wAcgp/iVO0VsDR9e+b5Mm6co 0bCcsksy7VLmXp109ttOKqCQSTkh7kM+az/nXHJ5BpmXa1Kno+fB3bK5PQ5XSSYPs1Bo=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject:Cc:To:From :Sender:Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=F MYb6fQ+lcv13BmUogxmKyqdEwCQhO8qWifc5VSKGPq37RZ+r/8dWM/66gVOK+1N3akrku6eIeEkGL iN/1BNWi4US6MDyxZJZTH6eNxSzPLt1UvDt1gxGc7+nTGnYjem8qX9gcVJ9H66eRUwMLLBaAQWvHk xyVO5jP8Ce2yM7hw=; Received: from mail-lf1-f53.google.com ([209.85.167.53]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1oPK8T-00AUrx-PZ for openvpn-devel@lists.sourceforge.net; Sat, 20 Aug 2022 08:47:18 +0000 Received: by mail-lf1-f53.google.com with SMTP id z25so8929594lfr.2 for ; Sat, 20 Aug 2022 01:47:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=dIoVSYdUcsyYbQtgs/nX9bZBScZrXYjMfSD9d9FstmRHt/ttJ5xLvL4inGAdQvyLE3 fYt2vSYUjlIroQqWHF7OsUk/BkFANzzjc+xbDA5gdCBu6urDhT1SOrXfeeuccm7JVhmg QaOZG/bRF+tVB2WFrA7D5Sru+G88bQUKpj7ya/M+8zoU710aYjO78jWkM5rSKVRS/8s7 eKrmcC3vmVVxfv5GYtoNdfo2pAwGyyAD3JZI9pf2HGIh7WslV8wKWmbzSPOduW9MtKjb Hy2YBdpNli6IKV8lXCHxmHI7xeXRrTtRRpX7tB9CJ4dDeCrjLwSZUpGGcW3Oq9CX/5/e /TGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=eP+Y9Cw9PVSTMLhYtJ3zKFWI7OgpWwPXWIAyUbApxiFWUOaibkRm6cTjx5y25qhRVb NYAk1HRKqH2PoS0bPqdpFh39gXe4sKhUSdb5cj6icJbEntwfKIuYlg/ZEOm+BSdWet2u BIMeqZWC7yPhoYB40OboXGDLM6sLNLWJ10Z1v6jSExbRJvTRTqFxR7AxeVPzbCjZAihz YFRgBJ/1tFBDf0miXKuj/hE7P1XojUrw8UeD50YH+znS6n4hvOjAzZQCvt2myvIZbLxI umUHaVBKSpr1WVFAMoJUwUEk9ozmLvguthqjM60nwidSwbZYZMkASF1ZUUTuBBHraKPv 9D0g== X-Gm-Message-State: ACgBeo2GecnZffYahF2O0532MkqGo3SsZ35LSTnlGeK8BjNEeYtYi4DD QrBPIduExPxWCbGHsSNvoZZbgMnbCKpnDsOT X-Google-Smtp-Source: AA6agR6msMmgSpu5QUSIWB/2DIriI5A7Ftlr4AJRlVimjoJMVU2n0vuyNV/yTsZZ/ojef55+gBsEfw== X-Received: by 2002:a05:6512:2390:b0:48c:ef98:4103 with SMTP id c16-20020a056512239000b0048cef984103mr3430169lfv.265.1660985230785; Sat, 20 Aug 2022 01:47:10 -0700 (PDT) Received: from LAPTOP-4L3N7KFS.localdomain (85-76-21-1-nat.elisa-mobile.fi. [85.76.21.1]) by smtp.gmail.com with ESMTPSA id c25-20020ac25f79000000b00492c1e36b22sm853428lfc.262.2022.08.20.01.47.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Aug 2022 01:47:10 -0700 (PDT) From: Lev Stipakov To: openvpn-devel@lists.sourceforge.net Date: Sat, 20 Aug 2022 11:47:19 +0300 Message-Id: <20220820084719.243-1-lstipakov@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Report: Spam detection software, running on the system "util-spamd-2.v13.lw.sourceforge.com", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Lev Stipakov This function is available starting from Windows 8. Calling it "as is" causes startup error on Windows 7. dco-win driver available on Windows 10 20H1 and newer. On older systems installer will not show nor install the driver and dco-win code won't be reached. It is safe to load GetOverlappedResultEx in ru [...] Content analysis details: (-0.2 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [lstipakov[at]gmail.com] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.167.53 listed in list.dnswl.org] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.167.53 listed in wl.mailspike.net] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Headers-End: 1oPK8T-00AUrx-PZ Subject: [Openvpn-devel] [PATCH] dco-win: use run-time dynamic linking for GetOverlappedResultEx X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Lev Stipakov Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox From: Lev Stipakov This function is available starting from Windows 8. Calling it "as is" causes startup error on Windows 7. dco-win driver available on Windows 10 20H1 and newer. On older systems installer will not show nor install the driver and dco-win code won't be reached. It is safe to load GetOverlappedResultEx in runtime and exit in case of error. Signed-off-by: Lev Stipakov Acked-by: Gert Doering --- src/openvpn/dco_win.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/openvpn/dco_win.c b/src/openvpn/dco_win.c index 28bcccd4..a2030866 100644 --- a/src/openvpn/dco_win.c +++ b/src/openvpn/dco_win.c @@ -107,6 +107,17 @@ dco_start_tun(struct tuntap *tt) static int dco_connect_wait(HANDLE handle, OVERLAPPED *ov, int timeout, volatile int *signal_received) { + /* GetOverlappedResultEx is available starting from Windows 8 */ + typedef BOOL (*get_overlapped_result_ex_t) (HANDLE, LPOVERLAPPED, LPDWORD, DWORD, BOOL); + get_overlapped_result_ex_t get_overlapped_result_ex = + (get_overlapped_result_ex_t)GetProcAddress(GetModuleHandle("Kernel32.dll"), + "GetOverlappedResultEx"); + + if (get_overlapped_result_ex == NULL) + { + msg(M_ERR, "Failed to load GetOverlappedResult()"); + } + DWORD timeout_msec = timeout * 1000; const int poll_interval_ms = 50; @@ -115,7 +126,7 @@ dco_connect_wait(HANDLE handle, OVERLAPPED *ov, int timeout, volatile int *signa timeout_msec -= poll_interval_ms; DWORD transferred; - if (GetOverlappedResultEx(handle, ov, &transferred, poll_interval_ms, FALSE) != 0) + if (get_overlapped_result_ex(handle, ov, &transferred, poll_interval_ms, FALSE) != 0) { /* TCP connection established by dco */ return 0;