From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2129.outbound.protection.outlook.com [40.107.93.129]) by sourceware.org (Postfix) with ESMTPS id D480A384601F for ; Tue, 6 Apr 2021 13:34:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D480A384601F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cornell.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=kbrown@cornell.edu ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mBmtuljlSBhld6X+BQcR91Y3WFWaJ158kRifvQLr+Dt2YEiYH+UTiy8uKWDf5EDK/aE1CRGtbEWK4uNoP4ntLolT0rtbUDhCYB7BtZ7zpJoVyBeC/4riu44BKs3dChlJNz8DN5WTgn49g0IbJ1yrX9O8FHSwHpeo7fTU+pZv1nw2H0eCTQBCT/d6PvJC6VYMCV25HZByVQCbH81U1PXHAPhR6MQOCc97RnN6HwRtCREPVrJeHpMvq7wsQNt07NLNRK0dMEg7ibCHqV6+6GjS+vpvQr/zVTaPY7PiCxF6l2D3pF7WJdoMXHzGNje3aajyqcs4yfn52htlFKYCKhDb5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eXCugFmu1bwk/x4kQQvba8RnwyLCuAK9waYa6qEEf9c=; b=UpTCsDZBBlun4FRrH2/reDAhMTthURRAgdk/VBSKOwyOoXEFMRikwAnlI4MZSfxE7uef8R26aGrkxaMpDVuynvur0XR5UBs3HXL/z/TcwJM/5hNraFuJadpUloe7ElZouhwMRSuldPpFln67NkvCi/4s55TpgsbO0py5+JE2ObztU/bXJ0LBWR+NS9Q+5X/64qzK9zWk6EI+E4AMhFmKr28Zq49/QuYz6+4H0Ezl5zYIQx8LeAEuY5wWyvhk2BFjwh5ypR6iXhVJ6UiAfAi4tkPuSGMhxWcdp7NA261Mfzp8abAgyp78RLbk+zLfq9whUz/DMIG+nstJNIi+JuomwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cornell.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eXCugFmu1bwk/x4kQQvba8RnwyLCuAK9waYa6qEEf9c=; b=G2wGT93+uL1bDy/tjcHMnVnXkW4RgPebh7FpE0tRKzU9hk2KJpU3nojLH/RMJRlMpHbA7i2vMYjmlNFzXWgUptEujZcvt/gTmVuYhK75oPiC/0JS3G8Hbu/ZhbJYEkIBVVg1+xUXpe273axGYpOKGsg8tM8ijwCxoSedljSoyAI= Authentication-Results: cygwin.com; dkim=none (message not signed) header.d=none;cygwin.com; dmarc=none action=none header.from=cornell.edu; Received: from BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) by BN7PR04MB4306.namprd04.prod.outlook.com (2603:10b6:406:fe::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.29; Tue, 6 Apr 2021 13:33:56 +0000 Received: from BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::59f8:fcc4:f07e:9a89]) by BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::59f8:fcc4:f07e:9a89%4]) with mapi id 15.20.3999.033; Tue, 6 Apr 2021 13:33:56 +0000 Subject: Re: Question about non-blocking Windows pipes To: cygwin-developers@cygwin.com References: From: Ken Brown Message-ID: <35a1dae0-3360-aaaf-d6ba-5d5a8e449477@cornell.edu> Date: Tue, 6 Apr 2021 09:33:11 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [24.194.34.31] X-ClientProxiedBy: BL1PR13CA0053.namprd13.prod.outlook.com (2603:10b6:208:257::28) To BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.0.17] (24.194.34.31) by BL1PR13CA0053.namprd13.prod.outlook.com (2603:10b6:208:257::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.8 via Frontend Transport; Tue, 6 Apr 2021 13:33:55 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f09c60c6-efaf-4ca0-a5c3-08d8f900a080 X-MS-TrafficTypeDiagnostic: BN7PR04MB4306: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PjuiTpRykXUcfk8nFKjTGbcQUzSByJSkPgI8d8zdSBRrPCf/qu+8ne8B+TXVfbcTGytsjp3JkokV1fFuMKXHwEZkfGh45yGvLOqZo8kKz4L6N8WyslvPn9AK4d5Euxgg0lfsow70JgZjDni6Id2YdolJ3mO6ALZ6CPe41fF3lInzBn+MPupumSw77AnIrSnBKtF9XSAI/IPTBbEaHkaX6OtHaInwpF4oUddKw4TKt/1jyTYt6F6yIdOj/QHpvO/D/+QSOKPKFtAYi8wvoaN8BdcjDV4s3+m+tfYnfNoD37794ofVvIfTSg9K3UnLPKRgR1nmJpC5glLAw6IPUNT5TiqsvEO2nD4fCCrGyOONRv7xDGoi+ESbujrbRejhIt/UQnN6Z1ZOQJJaY6lEIMbtmf0Rc1NVN7Fp/pr/GAh1GF464RlIu57ouuB3NQiPi9J9KY+u1jsPUnpc5Qu5S68rBtdofd/HgCio0sAMep0YDnzuPikoRxwbeAAwf+qGI2tEqPkRdDDRFu0taHY7CO8xOrVZnXsTdRoC1WtuKsP4YgHjMY9i//q0gu3dh8oXnKojy4Bdad02AzXW/ElmigYGRdefARBn43QWdEx4qbjlCcDIS98oLjnllGaWV1UfWLHyja3IdCyePm6YklY7CSKc809IPYHe3mXYy3UhwFCfrI/obKnNy5rT8lTzLCp1VzsC+7nhzYouh6AjH3kEqBjDe0fWWD1KStH5EdvStTsL5WTCvJkucnYMgnwmduWjd4Y+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN7PR04MB4388.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(39860400002)(396003)(346002)(376002)(366004)(6666004)(478600001)(75432002)(786003)(38100700001)(8676002)(31696002)(956004)(38350700001)(31686004)(6916009)(2616005)(8936002)(6486002)(52116002)(16526019)(5660300002)(83380400001)(66946007)(86362001)(53546011)(316002)(66556008)(66476007)(2906002)(16576012)(26005)(36756003)(186003)(43740500002)(45980500001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?Windows-1252?Q?WumFvC6pEfXvhfR/gMmesfx/1qWO6V1yaqXaDZitRI5MHT85aXqlMMqv?= =?Windows-1252?Q?QFeDAG3DAtjm+CuVb1CXQ+OXQamuVQH+gyEGhwIbBWBFmziJ+zb+L69A?= =?Windows-1252?Q?g+zhDHr6g1tUru/+fxlGKH+FTpLcSWGv6/EXosgDhcf4TesPmBnsEb42?= =?Windows-1252?Q?utOY1dlw1oapkV31zKdSiljwJawnWjU+vKXpe7fIgcpHoML9kpq21zcG?= =?Windows-1252?Q?MiquinqXALT8mMJnv2hzcbVjYJ3PKc8WsnjmA4oC3X206z1VWOYkMIpF?= =?Windows-1252?Q?qySoj8V3md3PnWcqw03fBs2klfEykG6pxsGHsXPHju9FdZrUr5DwbxZR?= =?Windows-1252?Q?RJpx9kDDpidtNrmDEpadRV9xsW3N+Sy0+pSrFnTl23yDE+94KiaZbTkn?= =?Windows-1252?Q?kug++8ddXQMwydbifnL23Qrqia4wc1jphXxltRVDVLVELC2ITG84aGxo?= =?Windows-1252?Q?Vu9v0zSRXuh5WsZGeTC23tY7pIdYVqpgmtvZkfPaDTo3z411bYaUSmVN?= =?Windows-1252?Q?pTbDGX29alOdABW0YgjegsTnmf9fo84ptmR4Fv9TXiedk6g+FY+szsOi?= =?Windows-1252?Q?8skC2tmgbMOr/SaQIfgJoQSQozhByZ7mrf0s8J//B/6TsQzb+Ra+0Ia3?= =?Windows-1252?Q?gfHQOoXnTLjlDDzGarBBrcTRD+5XRu6uF1hUM3XHKRMfswa55Yu2aSvt?= =?Windows-1252?Q?rqN62J3hIrGBOtVD1X+j/G8H5KILZYUiSZ17/GB93ODguWX0/qr+728z?= =?Windows-1252?Q?JC7A2OxxFlHJQD61dx0MHpOG7vh02pamfOhR5OXFTmTurwgNrGrYxhDj?= =?Windows-1252?Q?XUj5h4nuKV1aI6iUVQcfgL7Q+ejvIX9/HFBjHyWMDRUj3WV84+fB2AUb?= =?Windows-1252?Q?1lPlzbHUhHJnUHvYPd9DXD3D7D8Odwu6nRDNPeTWct+5PcgZ0JnwTs7n?= =?Windows-1252?Q?xb0gtElIac0Oof7j2PZvG+Q42C1FnPkuKXexZXSld3SosTIK6jyHM6fo?= =?Windows-1252?Q?BphBT7EkkLFx7h2gz352/7rGpbLt69stRxWY6mwrt4O5oQubmT7ut99l?= =?Windows-1252?Q?tyHNNDkD8Hedezp79w5/iCow76jD3qgPHzbufOhZ0LTiZazxxsIa81Q4?= =?Windows-1252?Q?E8W036VZZcgNkB4jGSrdAVLkXzeXWppy8MI+3qs6LmupSpaHfIhBV+8B?= =?Windows-1252?Q?tfeUjv5YOF58MXZJERkjz/Y3LZfm36asjkHAcQII7aPEeaWeKE9AlxTp?= =?Windows-1252?Q?Bna4+GhM2UeiV1ikoHcPEtbVvubMj1/6bwFRrlGP3JKfeWjUmBNmW1wU?= =?Windows-1252?Q?lV2enWpCvd/UW899oa9ecibzAlDQVtokQwIiY18g8eq5aHXkFaMQMmdb?= =?Windows-1252?Q?blhwhch+28qjDgLt4r2z0wQIBZC7vo64+Mgqc1A7rOXCB1TCuwstv5l2?= X-OriginatorOrg: cornell.edu X-MS-Exchange-CrossTenant-Network-Message-Id: f09c60c6-efaf-4ca0-a5c3-08d8f900a080 X-MS-Exchange-CrossTenant-AuthSource: BN7PR04MB4388.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2021 13:33:56.2576 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d7e4366-1b9b-45cf-8e79-b14b27df46e1 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3huKx+jVwZSj6SyPh+Xjda5tqDmBxGXI/RK5c9GiWL2sMp9Hu1QLkN95jbwNJhXR7ppSH+yAtzBfkcxJ9jzIgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR04MB4306 X-Spam-Status: No, score=-3.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, MSGID_FROM_MTA_HEADER, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, 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 13:34:06 -0000 On 4/6/2021 8:57 AM, Corinna Vinschen via Cygwin-developers wrote: > Hi Ken, > > On Apr 1 10:39, Ken Brown via Cygwin-developers wrote: >> Hi Corinna, >> >> There are several places in fhandler_socket_unix.cc where you make a >> distinction between the blocking and nonblocking cases with code like this: >> >> cygwait (evt ?: get_handle (),...) > > I only see this in fhandler_socket_unix::listen_pipe, actually. You're right. I was remembering something in sendmsg, but that's a very different situation. >> Here evt is an event handle in the blocking case and is NULL in the >> nonblocking case. See, for example, fhandler_socket_unix::listen_pipe. >> >> What's the reasoning behind this? Why not just always create an event or >> always use the handle? > > In the nonblocking case, the status code returned from NtFsControlFile > is either a useful status code like STATUS_SUCCESS or an error code, > or it is STATUS_PENDING. STATUS_PENDING only means the call is still > not finished. To get a useful result, you still need a useful status > code. You get that by waiting for the handle. Note that waiting for > the handle doesn't mean to wait for the connecting client. Rather, it's > signalled as soon as the async NtFsControlFile call finished. Ah, that's what I was missing. > If the > status code is STATUS_PIPE_LISTENING then, you know that no client tries > to connect, so you can return EAGAIN. > > The completion event object OTOH, is only signalled if a client actually > connected, so that's blocking mode. > > Two problems with using an event object in nonblocking mode: > > - The event object is referenced in the call. If NtFsControlFile returns > STATUS_PENDING and you leave the function, you have to use a globally > available event object, because this address is used as event object > until completion of the NtFsControlFile call (and a client connected). > > - You also have a pending NtFsControlFile until a client connects. > This is contrary to what you want in a non-blocking call: You only > want to know *if* a client connects, not wait for it either way. > > Does that help? I'm not claiming there isn't another way to handle this > scenario, that's just what I came up with. Yes, that clears it up completely. Thanks. Ken