From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.131]) by sourceware.org (Postfix) with ESMTPS id 5AB3A3857819 for ; Tue, 6 Apr 2021 19:36:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5AB3A3857819 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=cygwin.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=corinna-cygwin@cygwin.com Received: from calimero.vinschen.de ([24.134.7.25]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M7v18-1lYnSJ0YhW-0054UN for ; Tue, 06 Apr 2021 21:36:45 +0200 Received: by calimero.vinschen.de (Postfix, from userid 500) id 3B52BA80773; Tue, 6 Apr 2021 21:36:44 +0200 (CEST) Date: Tue, 6 Apr 2021 21:36:44 +0200 From: Corinna Vinschen To: cygwin-developers@cygwin.com Subject: Re: Questions about select for sockets Message-ID: Reply-To: cygwin-developers@cygwin.com Mail-Followup-To: cygwin-developers@cygwin.com References: <6b50ec89-5c02-c49f-ad85-e581589d21d3@cornell.edu> <6306d8f3-cf05-07bb-e944-05aed69266f3@cornell.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Provags-ID: V03:K1:jfzOclXmO3pb8hkL5uglrf3/2jzKOioFWA8Cmd92LzFaE9rrL6x kv7nvPi+Vyzu8A77MOxvMH+rsxOsnOkBizbfle5/fb8uKFstTEgAeZ1f3UI1DS7R+oav7vh WGTlPmlHhtw4bnZKd78w0uaAQch+tbpQ5CvWWb0de1/yDZWqOgCYdULULE1elUQ01kVGXax 7fiSKyuehf6o4SyZlbQNg== X-UI-Out-Filterresults: notjunk:1;V03:K0:a26DCXvhX6o=:c0FhoLckuPCuv/wgzy9l1C BSsEH5RYh5/yGhwhEVzpJwZ/Z1UmGC0QV88RZzZPhPqywy+A+cI4eFplNVigA3wIv+rJ+7GUQ n4bRe9zv4vv8N/+BAXyv+taxjKrTDAANsJ4ysuwmYBbKMzHx//k+OQ6u701vuh7t5Hq+pIScp ytiegONBvvy3S8w/ZCmVJMiuUvQYIud/iv4rXfLb2W17lv0hxpjtxTRjkwgoGpFlfNvwkrdha FLgFqreaJLQ3TPRRqNoGuPOSLm3MtFPa3Z+Q7bDVoo1A+RZDtlQKtkhGRgzZuXog88DPqxBvm euEMor+LTz4tOX9Sy0ehop18cYY/3OQxfsFJeb7QOERKWxVvHBZGncwKhpEer/LAfyurG09PM waEqKSpP6rEHCWMDK2jFvOgvC8G1bOaI7zl5Wu0w8ZamYGeLplcGtEh98SWcUb16aO+cp6MXR cq5Uga0hF5bfjblSNAGmUMViByRxmaX07SYL9i5jsyFP6Izz4TGa X-Spam-Status: No, score=-101.0 required=5.0 tests=BAYES_00, GOOD_FROM_CORINNA_CYGWIN, JMQ_SPF_NEUTRAL, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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-developers@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component developers mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Apr 2021 19:36:48 -0000 On Apr 6 20:24, Corinna Vinschen wrote: > On Apr 6 13:37, Ken Brown wrote: > > On 4/6/2021 12:28 PM, Corinna Vinschen wrote: > > > On Apr 6 11:44, Ken Brown wrote: > > > > On 4/6/2021 10:33 AM, Corinna Vinschen wrote: > > > > > We may also have to change the saw_shutdown_read/saw_shutdown_write > > > > > handling. I checked this on Linux and what happens is: > > > > > > > > > > After shutdown (fd, SHUT_RD), the socket is ready for reading and writing > > > > > > > > This seems surprising to me. Is it really the shutdown that caused it to be > > > > ready for writing in your test, or was it ready for writing anyway (e.g., > > > > because the relevant buffer was empty)? > > > > > > I guess so, too. How to make sure the socket isn't ready for writing > > > without going to great lengths? > > > > I guess you could have a subprocess write to the socket in a loop, so that > > its buffer will quickly fill up and a further write will block. > > Yeah, I was trying to minimize work, but I now lazily created a blocking > server in the same process with a non-blocking client, calling send(2) > until it fails. > > And now everything is as expected. SHUT_RD -> ready for reading, > SHUT_WR -> ready for writing, SHUT_RDWR -> ready for both. > > I attached my STC, for completeness. Call with an argument > 0 (== SHUT_RD), 1 (== SHUT_WR), or 2 (== SHUT_RDWR). I pushed a patch to handle this better. Please have a look. Thanks, Corinna