X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 127F3385701F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1593515541; bh=cVQpFzUo243cNfbIq14SVOT/RU2zDBFekHhBIsy6Pww=; h=Date:From:To:Subject:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Reply-To:From; b=VMnEKJa3B+kxXrBEzbgkR3iyLhfBCDlmibBZruCOTOybXT7K9c/BCVklaDDFODXg2 txgarxenYjBD99klzj35utGqraLDjq4tMmltEF6uICFJYWIs1SJ+MB+ymvgnMGDnGe Q+MV9xNYplCbNtupgrcegDTRexj0XpnkQwCNOgTk= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org BEB143857003 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cygwin.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=corinna-cygwin AT cygwin DOT com Date: Tue, 30 Jun 2020 13:12:15 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: TCP_KEEPINVTL and TCP_KEEPIDLE - Socket Keep Alives not working Message-ID: <20200630111215.GE3499@calimero.vinschen.de> Mail-Followup-To: cygwin AT cygwin DOT com References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Provags-ID: V03:K1:O4NoQY2bHH0WO2dVwY3nUnjCAQ9D2xmoui7adhq1aQO9/jlKq5m YysVUsmtTpBeINOE3H8hLv5q5Wic90Z3DFkU4GUWt3MiO+MzynPtq7pQ6z11D1RtezTCAC7 cxmGu+7XaP5qpaWqlg1Ry2V1MojL2FVgG9OjiiKCE8HJjPtPwJKoYOTozvraxuzpAcnfOEA scivSYoQzUmRpoFiJtCZQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:XLHgwYdyOeY=:wz789fvL5P1RBBPmJy9mea KHarGIb2ag1Q6HOWJGiaoTJdvlxE+ScWSjxS31J8KCUv9UruPPH8Begn9H24tj46unyQS12/y fm+20hn7C+9ny6MEhFbYwxWCKK2xFlmWjz8Lavjydcov++L91hGB2Qw4n02Wk+mzSXEGf5p10 8Ag+15TJllsmxhiWf4Ag5/80kG8T8sIdY5GRBYS/XCAGZYgd3I9roibcsuAE9PQfYIkntHwAC JF8AmpInj28exyO3sLW8vh71T/ewicQZ1tvme6OYXvuZdMNFQroncF+HlZtwjZ0vfaE7CNjOZ YlheK79NG8eCjxBBey7mvIQkO0arAqhXNi8LAMAz3iVYQir7JBYMOlWc7A81+yH3NnomqW+7q yQdsYY8rEv9IevKCANtKjjz5qqnXBZ6xKpdK3i5QcDpq5WA1LOoI249ibtri4G0E0V0QjDNI6 oHLjLX/K+Ayw2MeK7SR1uGxEq+JzAMIFEumq29N0tLJbtOXCGHmjqWqMLyhenHiCRAJWaj26Z yO0BkUXOMqr+e4KHiFaRFlDnoZUdGVij0AmZPkeHVp/eoYPlhVW6U/8F+buLjxWah1w1W4PST hKOgffzAcTNSMnVAXVvwlSrNADFMRtqoVoJMV/xgPVli9X1nubgv/1cdpSp6Od1LNiSzszTKX wD2ZGahVnH7EAAcFCXi1vyUJMR1EQziQ3AYyKROW/Be78/8VNZ8vssjzsPCYJSRFr2Ep0MW+I yOQTurSTZGxvyjTZNE1vW4ub2eMTQtRLhmNNGaefE1Dqrns+5sOEwVPMzj9CmwlaCYUxdWDdb uN2k1oZ+RxyKtrf/jbDdH2qvJfzs5MzPdDBjMiZ72y3fcFE9fptaXtkgJ/Zm6FFxeAzrSn4 X-Spam-Status: No, score=-99.5 required=5.0 tests=BAYES_00, GOOD_FROM_CORINNA_CYGWIN, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NEUTRAL, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: cygwin AT cygwin DOT com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces AT cygwin DOT com Sender: "Cygwin" On Jun 7 14:56, Cary Lewis via Cygwin wrote: > Thanks very much for the reply - I will wait for Corinna's take on this as > well - the patch shouldn't be too hard. It's not that easy, but not too hard either: - Windows 10 1709 and later actually support the TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT options natively, so all is fine here. - Older OS versions require the use of a single call WSAIoctl(SIO_KEEPALIVE_VALS), while TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT are three distinct calls, with TCP_KEEPCNT being no-op on pre W10 1709. > In fact the source code for curl in the lib/connect.c file has code to > enable the winsock options, so hopefully that code could be helpful. I But, here's the question: Even if neither one of SIO_KEEPALIVE_VALS, TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT are available, curl *still* uses SO_KEEPALIVE to enable TCP keep-alive. Given TCP keep-alive has default settings on Windows, too (2 hours, 1 sec, 10 times), and given SO_KEEPALIVE is supported on Cygwin as well, why isn't that sufficient? Keep in mind that none of the above WSAIoctl/setsockopt options are portable, only SO_KEEPALIVE is. So why should that work on, say, Solaris, but not on Windows? Corinna -- Corinna Vinschen Cygwin Maintainer -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple