From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-05.nifty.com (conssluserg-05.nifty.com [210.131.2.90]) by sourceware.org (Postfix) with ESMTPS id 7A0FF3858402 for ; Tue, 14 Sep 2021 09:56:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7A0FF3858402 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=nifty.ne.jp Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp Received: from Express5800-S70 (z221123.dynamic.ppp.asahi-net.or.jp [110.4.221.123]) (authenticated) by conssluserg-05.nifty.com with ESMTP id 18E9uM8Q009176 for ; Tue, 14 Sep 2021 18:56:22 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-05.nifty.com 18E9uM8Q009176 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1631613382; bh=v5F3uno42U3mye5Pdv7bx2KjpRs2ka12A07NEloGOT0=; h=Date:From:To:Subject:In-Reply-To:References:From; b=2rt9PAnOLMv2KhgFWHc71V/PxoA4AF4mFIIwfTO96/xz6NeoWIYBAz1mqlly/hi+U Zqf/E7sNLa5eJHP/NoKWBC25p+taFJy83yr2c2L9ILtS0gz1Mac+/gus1AystpO+g5 iME5sDGvaUudsl5HPOxoDjF+HGWUTegeBvFi4R4w9zBsZe8mz6K7BHOE0h50g8TR6l m4kQ3lu3pDxb+QhxS4XAKmZyqlnEwNYeNljeYCWZGx5SwndlpaKXzB5PKy/wG9vuhV Jpxc0Ao+jz02OneuNwGmB0OK+SSeZTZ6O1n5Ycv/lSXEdtPCl0ss8Yab9LXl5RkOKY ptbwEpp9v8H/g== X-Nifty-SrcIP: [110.4.221.123] Date: Tue, 14 Sep 2021 18:56:23 +0900 From: Takashi Yano To: cygwin-developers@cygwin.com Subject: Re: cygrunsrv + sshd + rsync = 20 times too slow -- throttled? Message-Id: <20210914185623.0488635bf6d1e925baee5fe8@nifty.ne.jp> In-Reply-To: References: <33386baf-3b2d-d57f-2ad3-1bd328ed7935@cornell.edu> <20210911075734.aaf37697ba7db2ad14d911a3@nifty.ne.jp> <20210911113517.f74fc3ac1971bbf04c7a9bd1@nifty.ne.jp> <695ce1f4-4f7d-f3f3-6dd3-087467d67b28@cornell.edu> <20210912174849.3d38107568065a95aeb19c7c@nifty.ne.jp> <20210912200423.667e40eb1adc52461bbefa20@nifty.ne.jp> <20210914043718.f420491c6723f3dc2e2d9753@nifty.ne.jp> <20210914170838.6393026ac3eaa4cd4e3d9618@nifty.ne.jp> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Tue__14_Sep_2021_18_56_23_+0900_PU_dXB+QtsZmcMMb" X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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, 14 Sep 2021 09:56:39 -0000 This is a multi-part message in MIME format. --Multipart=_Tue__14_Sep_2021_18_56_23_+0900_PU_dXB+QtsZmcMMb Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Tue, 14 Sep 2021 11:03:39 +0200 Corinna Vinschen wrote: > On Sep 14 17:08, Takashi Yano wrote: > > @@ -54,8 +54,12 @@ fhandler_pipe::set_pipe_non_blocking (bool nonblocking) > > FILE_PIPE_INFORMATION fpi; > > > > fpi.ReadMode = FILE_PIPE_BYTE_STREAM_MODE; > > - fpi.CompletionMode = nonblocking ? FILE_PIPE_COMPLETE_OPERATION > > - : FILE_PIPE_QUEUE_OPERATION; > > + /* If query_hdl is set, write pipe should check reader_closed() > > + while raw_read(). If the pipe is blocking, raw_write() stops > > + at NtWriteFile() and loses the chance to check it. Therefore, > > + always set write pipe to non-blocking. */ > > + fpi.CompletionMode = (nonblocking || query_hdl) > > + ? FILE_PIPE_COMPLETE_OPERATION : FILE_PIPE_QUEUE_OPERATION; > > status = NtSetInformationFile (get_handle (), &io, &fpi, sizeof fpi, > > FilePipeInformation); > > if (!NT_SUCCESS (status)) > > I don't quite follow the argument. Blocking pipes are using > asynchronous IO, so they are in fact not blocking calls on the > OS level. After calling NtWriteFile, the blocking variation > will go into the subsequent > > waitret = cygwait (evt, INFINITE, cw_cancel | cw_sig); > > So, wouldn't you get the same effect by keeping the pipe in > FILE_PIPE_QUEUE_OPERATION mode and just add a timeout to the above > cygwait call and handle select_sem in a not yet existing WAIT_TIMEOUT > conditional? Sounds reasonable. I revised the patches. Do you mean something like patch attached? -- Takashi Yano --Multipart=_Tue__14_Sep_2021_18_56_23_+0900_PU_dXB+QtsZmcMMb Content-Type: application/octet-stream; name="0001-Cygwin-pipe-Use-read-pipe-handle-for-select-on-write.patch" Content-Disposition: attachment; filename="0001-Cygwin-pipe-Use-read-pipe-handle-for-select-on-write.patch" Content-Transfer-Encoding: base64 RnJvbSBjZjY4MDgxODRhMmMyZjQ3ZjAzNWRjYTkzMGFkYmMyZTRiZjdmNTNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogVHVlLCAxNCBTZXAgMjAyMSAxODo0MDoyNyArMDkwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBDeWd3aW46IHBpcGU6IFVzZSByZWFkIHBpcGUgaGFuZGxlIGZvciBzZWxlY3QoKSBvbiB3 cml0ZQogcGlwZS4KCi0gVXN1YWxseSBXcml0ZVF1b3RhQXZhaWxhYmxlIHJldHJpZXZlZCBieSBO dFF1ZXJ5SW5mb3JtYXRpb25GaWxlKCkKICBvbiB0aGUgd3JpdGUgc2lkZSByZWZsZWN0cyB0aGUg c3BhY2UgYXZhaWxhYmxlIGluIHRoZSBpbmJvdW5kIGJ1ZmZlcgogIG9uIHRoZSByZWFkIHNpZGUu IEhvd2V2ZXIsIGlmIGEgcGlwZSByZWFkIGlzIGN1cnJlbnRseSBwZW5kaW5nLAogIFdyaXRlUXVv dGFBdmFpbGFibGUgb24gdGhlIHdyaXRlIHNpZGUgaXMgZGVjcmVtZW50ZWQgYnkgdGhlIG51bWJl cgogIG9mIGJ5dGVzIHRoZSByZWFkIHNpZGUgaXMgcmVxdWVzdGluZy4gU28gaXQncyBwb3NzaWJs ZSAoZXZlbiBsaWtlbHkpCiAgdGhhdCBXcml0ZVF1b3RhQXZhaWxhYmxlIGlzIDAsIGV2ZW4gaWYg dGhlIGluYm91bmQgYnVmZmVyIG9uIHRoZQogIHJlYWQgc2lkZSBpcyBub3QgZnVsbC4gVGhpcyBj YW4gbGVhZCB0byBhIGRlYWRsb2NrIHNpdHVhdGlvbjoKICBUaGUgcmVhZGVyIGlzIHdhaXRpbmcg Zm9yIGRhdGEsIGJ1dCBzZWxlY3Qgb24gdGhlIHdyaXRlciBzaWRlCiAgYXNzdW1lcyB0aGF0IG5v IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmVhZCBzaWRlIGluYm91bmQgYnVmZmVyLgoKICBD dXJyZW50bHksIHRvIGF2b2lkIHRoaXMgc3R1YXRpb24sIHJlYWQoKSBkb2VzIG5vdCByZXF1ZXN0 IGxhcmdlcgogIGJsb2NrIHRoYW4gcGlwZSBzaXplIC0gMS4gSG93ZXZlciwgdGhpcyBtZWNoYW5p c20gZG9lcyBub3QgdGFrZQogIGVmZmVjdCBpZiB0aGUgcmVhZGVyIHNpZGUgaXMgbm9uLWN5Z3dp biBhcHAuCgogIFRoZSBvbmx5IHJlbGlhYmxlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBvbiB0 aGUgcmVhZCBzaWRlLCBzbwogIGZldGNoIGluZm8gZnJvbSB0aGUgcmVhZCBzaWRlIHZpYSB0aGUg cGlwZS1zcGVjaWZpYyBxdWVyeSBoYW5kbGUKICAocXVlcnlfaGRsKSBpbnRyb2R1Y2VkLgoKICBJ ZiB0aGUgcXVlcnlfaGRsIChyZWFkIGhhbmRsZSkgaXMga2VwdCBpbiB3cml0ZSBzaWRlLCB3cml0 ZXIgY2FuCiAgbm90IGRldGVjdCBjbG9zdXJlIG9mIHJlYWQgcGlwZS4gVGhlcmVmb3JlLCByYXdf d3JpdGUoKSBjb3VudHMKICB3cml0ZSBoYW5kbGUgYW5kIHF1ZXJ5X2hkbC4gSWYgdGhleSBhcmUg ZXF1YWwsIG9ubHkgdGhlIHBhaXJzIG9mCiAgd3JpdGUgaGFuZGxlIGFuZCBxdWVyeV9oZGwgYXJl IGFsaXZlLiBJbiB0aGlzIGNhc2UsIHJhd193cml0ZSgpCiAgcmV0dXJucyBFUElQRSBhbmQgcmFp c2VzIFNJR1BJUEUuCi0tLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oICAgICAgIHwgMTQgKysr Ky0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYyB8IDk2ICsrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIHdpbnN1cC9jeWd3aW4vc2VsZWN0LmNjICAgICAgICB8IDUyICsr KysrKysrKysrKysrKy0tLQogd2luc3VwL2N5Z3dpbi9zcGF3bi5jYyAgICAgICAgIHwgMTEgKysr KwogNCBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oIGIvd2luc3VwL2N5Z3dpbi9maGFu ZGxlci5oCmluZGV4IDQ2MzgxYzM5Ny4uZGIyMzI1MTQ0IDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL2ZoYW5kbGVyLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oCkBAIC0xMTc2LDEw ICsxMTc2LDIyIEBAIGNsYXNzIGZoYW5kbGVyX3BpcGVfZmlmbzogcHVibGljIGZoYW5kbGVyX2Jh c2UKIHsKICBwcm90ZWN0ZWQ6CiAgIHNpemVfdCBwaXBlX2J1Zl9zaXplOworICBIQU5ETEUgcXVl cnlfaGRsOwogCiAgcHVibGljOgogICBmaGFuZGxlcl9waXBlX2ZpZm8gKCk7CiAKKyAgSEFORExF IGdldF9xdWVyeV9oYW5kbGUgKCkgY29uc3QgeyByZXR1cm4gcXVlcnlfaGRsOyB9CisgIHZvaWQg Y2xvc2VfcXVlcnlfaGFuZGxlICgpCisgIHsKKyAgICBpZiAocXVlcnlfaGRsKQorICAgICAgewor CUNsb3NlSGFuZGxlIChxdWVyeV9oZGwpOworCXF1ZXJ5X2hkbCA9IE5VTEw7CisgICAgICB9Cisg IH0KKyAgYm9vbCByZWFkZXJfY2xvc2VkICgpOworCiAgIHNzaXplX3QgX19yZWczIHJhd193cml0 ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKIAogfTsKQEAgLTExODksNyArMTIwMSw2 IEBAIGNsYXNzIGZoYW5kbGVyX3BpcGU6IHB1YmxpYyBmaGFuZGxlcl9waXBlX2ZpZm8KIHByaXZh dGU6CiAgIEhBTkRMRSByZWFkX210eDsKICAgcGlkX3QgcG9wZW5fcGlkOwotICB2b2lkIHNldF9w aXBlX25vbl9ibG9ja2luZyAoYm9vbCBub25ibG9ja2luZyk7CiBwdWJsaWM6CiAgIGZoYW5kbGVy X3BpcGUgKCk7CiAKQEAgLTEyMzcsNiArMTI0OCw3IEBAIHB1YmxpYzoKICAgICBmaC0+Y29weV9m cm9tICh0aGlzKTsKICAgICByZXR1cm4gZmg7CiAgIH0KKyAgdm9pZCBzZXRfcGlwZV9ub25fYmxv Y2tpbmcgKGJvb2wgbm9uYmxvY2tpbmcpOwogfTsKIAogI2RlZmluZSBDWUdXSU5fRklGT19QSVBF X05BTUVfTEVOICAgICA0NwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBl LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBlLmNjCmluZGV4IGRhNDczYTFkYy4uYjJj OTViNTZlIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MKKysrIGIv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBlLmNjCkBAIC0yMDIsNiArMjAyLDggQEAgZmhhbmRs ZXJfcGlwZTo6b3Blbl9zZXR1cCAoaW50IGZsYWdzKQogICAgICAgaWYgKCFyZWFkX210eCkKIAlk ZWJ1Z19wcmludGYgKCJDcmVhdGVNdXRleCBmYWlsZWQ6ICVFIik7CiAgICAgfQorICBpZiAoZ2V0 X2RldiAoKSA9PSBGSF9QSVBFVyAmJiAhcXVlcnlfaGRsKQorICAgIHNldF9waXBlX25vbl9ibG9j a2luZyAoaXNfbm9uYmxvY2tpbmcgKCkpOwogfQogCiBvZmZfdApAQCAtMjY4LDM5ICsyNzAsMjIg QEAgZmhhbmRsZXJfcGlwZTo6cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIHdo aWxlIChuYnl0ZXMgPCBsZW4pCiAgICAgewogICAgICAgVUxPTkdfUFRSIG5ieXRlc19ub3cgPSAw OwotICAgICAgc2l6ZV90IGxlZnQgPSBsZW4gLSBuYnl0ZXM7Ci0gICAgICBVTE9ORyBsZW4xID0g KFVMT05HKSBsZWZ0OworICAgICAgVUxPTkcgbGVuMSA9IChVTE9ORykgKGxlbiAtIG5ieXRlcyk7 CiAgICAgICB3YWl0cmV0ID0gV0FJVF9PQkpFQ1RfMDsKIAogICAgICAgaWYgKGV2dCkKIAlSZXNl dEV2ZW50IChldnQpOwotICAgICAgaWYgKCFpc19ub25ibG9ja2luZyAoKSkKKyAgICAgIEZJTEVf UElQRV9MT0NBTF9JTkZPUk1BVElPTiBmcGxpOworICAgICAgc3RhdHVzID0gTnRRdWVyeUluZm9y bWF0aW9uRmlsZSAoZ2V0X2hhbmRsZSAoKSwgJmlvLAorCQkJCSAgICAgICAmZnBsaSwgc2l6ZW9m IChmcGxpKSwKKwkJCQkgICAgICAgRmlsZVBpcGVMb2NhbEluZm9ybWF0aW9uKTsKKyAgICAgIGlm IChOVF9TVUNDRVNTIChzdGF0dXMpKQogCXsKLQkgIEZJTEVfUElQRV9MT0NBTF9JTkZPUk1BVElP TiBmcGxpOwotCi0JICAvKiBJZiB0aGUgcGlwZSBpcyBlbXB0eSwgZG9uJ3QgcmVxdWVzdCBtb3Jl IGJ5dGVzIHRoYW4gcGlwZQotCSAgICAgYnVmZmVyIHNpemUgLSAxLiBQZW5kaW5nIHJlYWQgbG93 ZXJzIFdyaXRlUXVvdGFBdmFpbGFibGUgb24KLQkgICAgIHRoZSB3cml0ZSBzaWRlIGFuZCB0aHVz IGFmZmVjdHMgc2VsZWN0J3MgYWJpbGl0eSB0byByZXR1cm4KLQkgICAgIG1vcmUgb3IgbGVzcyBy ZWxpYWJsZSBpbmZvIHdoZXRoZXIgYSB3cml0ZSBzdWNjZWVkcyBvciBub3QuICovCi0JICBVTE9O RyBjaHVuayA9IHBpcGVfYnVmX3NpemUgLSAxOwotCSAgc3RhdHVzID0gTnRRdWVyeUluZm9ybWF0 aW9uRmlsZSAoZ2V0X2hhbmRsZSAoKSwgJmlvLAotCQkJCQkgICAmZnBsaSwgc2l6ZW9mIChmcGxp KSwKLQkJCQkJICAgRmlsZVBpcGVMb2NhbEluZm9ybWF0aW9uKTsKLQkgIGlmIChOVF9TVUNDRVNT IChzdGF0dXMpKQotCSAgICB7Ci0JICAgICAgaWYgKGZwbGkuUmVhZERhdGFBdmFpbGFibGUgPiAw KQotCQljaHVuayA9IGxlZnQ7Ci0JICAgICAgZWxzZSBpZiAobmJ5dGVzICE9IDApCi0JCWJyZWFr OwotCSAgICAgIGVsc2UKLQkJY2h1bmsgPSBmcGxpLkluYm91bmRRdW90YSAtIDE7Ci0JICAgIH0K LQkgIGVsc2UgaWYgKG5ieXRlcyAhPSAwKQotCSAgICBicmVhazsKLQotCSAgaWYgKGxlbjEgPiBj aHVuaykKLQkgICAgbGVuMSA9IGNodW5rOworCWlmIChmcGxpLlJlYWREYXRhQXZhaWxhYmxlID09 IDAgJiYgbmJ5dGVzICE9IDApCisJICBicmVhazsKIAl9CisgICAgICBlbHNlIGlmIChuYnl0ZXMg IT0gMCkKKwlicmVhazsKICAgICAgIHN0YXR1cyA9IE50UmVhZEZpbGUgKGdldF9oYW5kbGUgKCks IGV2dCwgTlVMTCwgTlVMTCwgJmlvLCBwdHIsCiAJCQkgICBsZW4xLCBOVUxMLCBOVUxMKTsKICAg ICAgIGlmIChldnQgJiYgc3RhdHVzID09IFNUQVRVU19QRU5ESU5HKQpAQCAtMzg1LDYgKzM3MCwx NiBAQCBmaGFuZGxlcl9waXBlOjpyYXdfcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKICAg bGVuID0gbmJ5dGVzOwogfQogCitib29sCitmaGFuZGxlcl9waXBlX2ZpZm86OnJlYWRlcl9jbG9z ZWQgKCkKK3sKKyAgaWYgKCFxdWVyeV9oZGwpCisgICAgcmV0dXJuIGZhbHNlOworICBpbnQgbl9y ZWFkZXIgPSBnZXRfb2JqX2hhbmRsZV9jb3VudCAocXVlcnlfaGRsKTsKKyAgaW50IG5fd3JpdGVy ID0gZ2V0X29ial9oYW5kbGVfY291bnQgKGdldF9oYW5kbGUgKCkpOworICByZXR1cm4gbl9yZWFk ZXIgPT0gbl93cml0ZXI7Cit9CisKIHNzaXplX3QgX19yZWczCiBmaGFuZGxlcl9waXBlX2ZpZm86 OnJhd193cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogewpAQCAtNDU3LDcgKzQ1 MiwyMyBAQCBmaGFuZGxlcl9waXBlX2ZpZm86OnJhd193cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBz aXplX3QgbGVuKQogCX0KICAgICAgIGlmIChldnQgJiYgc3RhdHVzID09IFNUQVRVU19QRU5ESU5H KQogCXsKLQkgIHdhaXRyZXQgPSBjeWd3YWl0IChldnQsIElORklOSVRFLCBjd19jYW5jZWwgfCBj d19zaWcpOworCSAgZG8KKwkgICAgeworCSAgICAgIHdhaXRyZXQgPSBjeWd3YWl0IChldnQsIChE V09SRCkgMCwgY3dfY2FuY2VsIHwgY3dfc2lnKTsKKwkgICAgICBpZiAod2FpdHJldCA9PSBXQUlU X1RJTUVPVVQpCisJCXsKKwkJICBpZiAocmVhZGVyX2Nsb3NlZCAoKSkKKwkJICAgIHsKKwkJICAg ICAgQ2FuY2VsSW8gKGdldF9oYW5kbGUgKCkpOworCQkgICAgICBzZXRfZXJybm8gKEVQSVBFKTsK KwkJICAgICAgcmFpc2UgKFNJR1BJUEUpOworCQkgICAgICBicmVhazsKKwkJICAgIH0KKwkJICBl bHNlCisJCSAgICBjeWd3YWl0IChzZWxlY3Rfc2VtLCAxMCk7CisJCX0KKwkgICAgfQorCSAgd2hp bGUgKHdhaXRyZXQgPT0gV0FJVF9USU1FT1VUKTsKIAkgIC8qIElmIGlvLlN0YXR1cyBpcyBTVEFU VVNfQ0FOQ0VMTEVEIGFmdGVyIENhbmNlbElvLCBJTyBoYXMgYWN0dWFsbHkKIAkgICAgIGJlZW4g Y2FuY2VsbGVkIGFuZCBpby5JbmZvcm1hdGlvbiBjb250YWlucyB0aGUgbnVtYmVyIG9mIGJ5dGVz CiAJICAgICBwcm9jZXNzZWQgc28gZmFyLgpAQCAtNTIzLDYgKzUzNCw4IEBAIGZoYW5kbGVyX3Bp cGU6OnNldF9jbG9zZV9vbl9leGVjIChib29sIHZhbCkKICAgICBzZXRfbm9faW5oZXJpdGFuY2Ug KHJlYWRfbXR4LCB2YWwpOwogICBpZiAoc2VsZWN0X3NlbSkKICAgICBzZXRfbm9faW5oZXJpdGFu Y2UgKHNlbGVjdF9zZW0sIHZhbCk7CisgIGlmIChxdWVyeV9oZGwpCisgICAgc2V0X25vX2luaGVy aXRhbmNlIChxdWVyeV9oZGwsIHZhbCk7CiB9CiAKIHZvaWQKQEAgLTUzMiw2ICs1NDUsOSBAQCBm aGFuZGxlcl9waXBlOjpmaXh1cF9hZnRlcl9mb3JrIChIQU5ETEUgcGFyZW50KQogICAgIGZvcmtf Zml4dXAgKHBhcmVudCwgcmVhZF9tdHgsICJyZWFkX210eCIpOwogICBpZiAoc2VsZWN0X3NlbSkK ICAgICBmb3JrX2ZpeHVwIChwYXJlbnQsIHNlbGVjdF9zZW0sICJzZWxlY3Rfc2VtIik7CisgIGlm IChxdWVyeV9oZGwpCisgICAgZm9ya19maXh1cCAocGFyZW50LCBxdWVyeV9oZGwsICJxdWVyeV9o ZGwiKTsKKwogICBmaGFuZGxlcl9iYXNlOjpmaXh1cF9hZnRlcl9mb3JrIChwYXJlbnQpOwogfQog CkBAIC01NjIsNiArNTc4LDE1IEBAIGZoYW5kbGVyX3BpcGU6OmR1cCAoZmhhbmRsZXJfYmFzZSAq Y2hpbGQsIGludCBmbGFncykKICAgICAgIGZ0cC0+Y2xvc2UgKCk7CiAgICAgICByZXMgPSAtMTsK ICAgICB9CisgIGVsc2UgaWYgKHF1ZXJ5X2hkbCAmJgorCSAgICFEdXBsaWNhdGVIYW5kbGUgKEdl dEN1cnJlbnRQcm9jZXNzICgpLCBxdWVyeV9oZGwsCisJCQkgICAgR2V0Q3VycmVudFByb2Nlc3Mg KCksICZmdHAtPnF1ZXJ5X2hkbCwKKwkJCSAgICAwLCAhKGZsYWdzICYgT19DTE9FWEVDKSwgRFVQ TElDQVRFX1NBTUVfQUNDRVNTKSkKKyAgICB7CisgICAgICBfX3NldGVycm5vICgpOworICAgICAg ZnRwLT5jbG9zZSAoKTsKKyAgICAgIHJlcyA9IC0xOworICAgIH0KIAogICBkZWJ1Z19wcmludGYg KCJyZXMgJWQiLCByZXMpOwogICByZXR1cm4gcmVzOwpAQCAtNTc3LDYgKzYwMiw4IEBAIGZoYW5k bGVyX3BpcGU6OmNsb3NlICgpCiAgICAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2VtLCBn ZXRfb2JqX2hhbmRsZV9jb3VudCAoc2VsZWN0X3NlbSksIE5VTEwpOwogICAgICAgQ2xvc2VIYW5k bGUgKHNlbGVjdF9zZW0pOwogICAgIH0KKyAgaWYgKHF1ZXJ5X2hkbCkKKyAgICBDbG9zZUhhbmRs ZSAocXVlcnlfaGRsKTsKICAgcmV0dXJuIGZoYW5kbGVyX2Jhc2U6OmNsb3NlICgpOwogfQogCkBA IC03OTcsNiArODI0LDE5IEBAIGZoYW5kbGVyX3BpcGU6OmNyZWF0ZSAoZmhhbmRsZXJfcGlwZSAq ZmhzWzJdLCB1bnNpZ25lZCBwc2l6ZSwgaW50IG1vZGUpCiAJRHVwbGljYXRlSGFuZGxlIChHZXRD dXJyZW50UHJvY2VzcyAoKSwgZmhzWzBdLT5zZWxlY3Rfc2VtLAogCQkJIEdldEN1cnJlbnRQcm9j ZXNzICgpLCAmZmhzWzFdLT5zZWxlY3Rfc2VtLAogCQkJIDAsIHNhLT5iSW5oZXJpdEhhbmRsZSwg RFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKKyAgICAgIGlmICghRHVwbGljYXRlSGFuZGxlIChHZXRD dXJyZW50UHJvY2VzcyAoKSwgciwKKwkJCSAgICBHZXRDdXJyZW50UHJvY2VzcyAoKSwgJmZoc1sx XS0+cXVlcnlfaGRsLAorCQkJICAgIEZJTEVfUkVBRF9EQVRBLCBzYS0+YkluaGVyaXRIYW5kbGUs IDApKQorCXsKKwkgIENsb3NlSGFuZGxlIChmaHNbMF0tPnNlbGVjdF9zZW0pOworCSAgZGVsZXRl IGZoc1swXTsKKwkgIENsb3NlSGFuZGxlIChyKTsKKwkgIENsb3NlSGFuZGxlIChmaHNbMV0tPnNl bGVjdF9zZW0pOworCSAgZGVsZXRlIGZoc1sxXTsKKwkgIENsb3NlSGFuZGxlICh3KTsKKwl9Cisg ICAgICBlbHNlCisJcmVzID0gMDsKICAgICB9CiAKICAgZGVidWdfcHJpbnRmICgiJVIgPSBwaXBl KFslcCwgJXBdLCAlZCwgJXkpIiwgcmVzLCBmaHNbMF0sIGZoc1sxXSwgcHNpemUsIG1vZGUpOwpk aWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MgYi93aW5zdXAvY3lnd2luL3NlbGVj dC5jYwppbmRleCA1ZTU4MzQzNGMuLmFjMmYzYTllMCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dp bi9zZWxlY3QuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MKQEAgLTYwOCwxNiArNjA4 LDQ3IEBAIHBpcGVfZGF0YV9hdmFpbGFibGUgKGludCBmZCwgZmhhbmRsZXJfYmFzZSAqZmgsIEhB TkRMRSBoLCBib29sIHdyaXRpbmcpCiAgICAgfQogICBpZiAod3JpdGluZykKICAgICB7Ci0gICAg ICAvKiBXcml0ZVF1b3RhQXZhaWxhYmxlIGlzIGRlY3JlbWVudGVkIGJ5IHRoZSBudW1iZXIgb2Yg Ynl0ZXMgcmVxdWVzdGVkCi0JIGJ5IGEgYmxvY2tpbmcgcmVhZGVyIG9uIHRoZSBvdGhlciBzaWRl IG9mIHRoZSBwaXBlLiAgQ3lnd2luIHJlYWRlcnMKLQkgYXJlIHNlcmlhbGl6ZWQgYW5kIG5ldmVy IHJlcXVlc3QgYSBudW1iZXIgb2YgYnl0ZXMgZXF1aXZhbGVudCB0byB0aGUKLQkgZnVsbCBidWZm ZXIgc2l6ZS4gIFNvIFdyaXRlUXVvdGFBdmFpbGFibGUgaXMgMCBvbmx5IGlmIGVpdGhlciB0aGUK LQkgcmVhZCBidWZmZXIgb24gdGhlIG90aGVyIHNpZGUgaXMgcmVhbGx5IGZ1bGwsIG9yIGlmIHdl IGhhdmUgbm9uLUN5Z3dpbgotCSByZWFkZXJzLiAqLworICAgICAgLyogSWYgdGhlcmUgaXMgYW55 dGhpbmcgYXZhaWxhYmxlIGluIHRoZSBwaXBlIGJ1ZmZlciB0aGVuIHNpZ25hbAorICAgICAgICB0 aGF0LiAgVGhpcyBtZWFucyB0aGF0IGEgcGlwZSBjb3VsZCBzdGlsbCBibG9jayBzaW5jZSB5b3Ug Y291bGQKKyAgICAgICAgYmUgdHJ5aW5nIHRvIHdyaXRlIG1vcmUgdG8gdGhlIHBpcGUgdGhhbiBp cyBhdmFpbGFibGUgaW4gdGhlCisgICAgICAgIGJ1ZmZlciBidXQgdGhhdCBpcyB0aGUgaGF6YXJk IG9mIHNlbGVjdCgpLgorCisgICAgICAgIE5vdGUgdGhhdCBXcml0ZVF1b3RhQXZhaWxhYmxlIGlz IHVucmVsaWFibGUuCisKKyAgICAgICAgVXN1YWxseSBXcml0ZVF1b3RhQXZhaWxhYmxlIG9uIHRo ZSB3cml0ZSBzaWRlIHJlZmxlY3RzIHRoZSBzcGFjZQorICAgICAgICBhdmFpbGFibGUgaW4gdGhl IGluYm91bmQgYnVmZmVyIG9uIHRoZSByZWFkIHNpZGUuICBIb3dldmVyLCBpZiBhCisgICAgICAg IHBpcGUgcmVhZCBpcyBjdXJyZW50bHkgcGVuZGluZywgV3JpdGVRdW90YUF2YWlsYWJsZSBvbiB0 aGUgd3JpdGUgc2lkZQorICAgICAgICBpcyBkZWNyZW1lbnRlZCBieSB0aGUgbnVtYmVyIG9mIGJ5 dGVzIHRoZSByZWFkIHNpZGUgaXMgcmVxdWVzdGluZy4KKyAgICAgICAgU28gaXQncyBwb3NzaWJs ZSAoZXZlbiBsaWtlbHkpIHRoYXQgV3JpdGVRdW90YUF2YWlsYWJsZSBpcyAwLCBldmVuCisgICAg ICAgIGlmIHRoZSBpbmJvdW5kIGJ1ZmZlciBvbiB0aGUgcmVhZCBzaWRlIGlzIG5vdCBmdWxsLiAg VGhpcyBjYW4gbGVhZCB0bworICAgICAgICBhIGRlYWRsb2NrIHNpdHVhdGlvbjogVGhlIHJlYWRl ciBpcyB3YWl0aW5nIGZvciBkYXRhLCBidXQgc2VsZWN0CisgICAgICAgIG9uIHRoZSB3cml0ZXIg c2lkZSBhc3N1bWVzIHRoYXQgbm8gc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSByZWFkCisgICAg ICAgIHNpZGUgaW5ib3VuZCBidWZmZXIuCisKKyAgICAgICAgQ29uc2VxdWVudGlhbGx5LCB0aGUg b25seSByZWxpYWJsZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgb24gdGhlCisgICAgICAgIHJl YWQgc2lkZSwgc28gZmV0Y2ggaW5mbyBmcm9tIHRoZSByZWFkIHNpZGUgdmlhIHRoZSBwaXBlLXNw ZWNpZmljCisgICAgICAgIHF1ZXJ5IGhhbmRsZS4gIFVzZSBmcGxpLldyaXRlUXVvdGFBdmFpbGFi bGUgYXMgc3RvcmFnZSBmb3IgdGhlIGFjdHVhbAorICAgICAgICBpbnRlcmVzdGluZyB2YWx1ZSwg d2hpY2ggaXMgdGhlIEluYm91bmRRdW90ZSBvbiB0aGUgd3JpdGUgc2lkZSwKKyAgICAgICAgZGVj cmVtZW50ZWQgYnkgdGhlIG51bWJlciBvZiBieXRlcyBvZiBkYXRhIGluIHRoYXQgYnVmZmVyLiAq LworICAgICAgLyogTm90ZTogRG8gbm90IHVzZSBOdFF1ZXJ5SW5mb3JtYXRpb25GaWxlKCkgZm9y IHF1ZXJ5X2hkbCBiZWNhdXNlCisJIE50UXVlcnlJbmZvcm1hdGlvbkZpbGUoKSBzZWVtcyB0byBp bnRlcmZlcmUgd2l0aCByZWFkaW5nIHBpcGVzCisJIGluIG5vbi1jeWd3aW4gYXBwcy4gSW5zdGVh ZCwgdXNlIFBlZWtOYW1lZFBpcGUoKSBoZXJlLiAqLworICAgICAgaWYgKGZoLT5nZXRfZGV2aWNl ICgpID09IEZIX1BJUEVXKQorCXsKKwkgIEhBTkRMRSBxdWVyeV9oZGwgPSAoKGZoYW5kbGVyX3Bp cGUgKikgZmgpLT5nZXRfcXVlcnlfaGFuZGxlICgpOworCSAgaWYgKHF1ZXJ5X2hkbCkKKwkgICAg eworCSAgICAgIERXT1JEIG5ieXRlc19pbl9waXBlOworCSAgICAgIFBlZWtOYW1lZFBpcGUgKHF1 ZXJ5X2hkbCwgTlVMTCwgMCwgTlVMTCwgJm5ieXRlc19pbl9waXBlLCBOVUxMKTsKKwkgICAgICBm cGxpLldyaXRlUXVvdGFBdmFpbGFibGUgPSBmcGxpLkluYm91bmRRdW90YSAtIG5ieXRlc19pbl9w aXBlOworCSAgICB9CisJICBlbHNlCisJICAgIHJldHVybiAxOworCX0KICAgICAgIGlmIChmcGxp LldyaXRlUXVvdGFBdmFpbGFibGUgPiAwKQogCXsKIAkgIHBhcmFub2lkX3ByaW50ZiAoImZkICVk LCAlcywgd3JpdGU6IHNpemUgJXUsIGF2YWlsICV1IiwgZmQsCi0JCQkgICBmaC0+Z2V0X25hbWUg KCksIGZwbGkuT3V0Ym91bmRRdW90YSwKKwkJCSAgIGZoLT5nZXRfbmFtZSAoKSwgZnBsaS5JbmJv dW5kUXVvdGEsCiAJCQkgICBmcGxpLldyaXRlUXVvdGFBdmFpbGFibGUpOwogCSAgcmV0dXJuIDE7 CiAJfQpAQCAtNzEyLDYgKzc0MywxMyBAQCBvdXQ6CiAgIGggPSBmaC0+Z2V0X291dHB1dF9oYW5k bGUgKCk7CiAgIGlmIChzLT53cml0ZV9zZWxlY3RlZCAmJiBkZXYgIT0gRkhfUElQRVIpCiAgICAg eworICAgICAgaWYgKGRldiA9PSBGSF9QSVBFVyAmJiAoKGZoYW5kbGVyX3BpcGUgKikgZmgpLT5y ZWFkZXJfY2xvc2VkICgpKQorCXsKKwkgIGdvdG9uZSArPSBzLT53cml0ZV9yZWFkeSA9IHRydWU7 CisJICBpZiAocy0+ZXhjZXB0X3NlbGVjdGVkKQorCSAgICBnb3RvbmUgKz0gcy0+ZXhjZXB0X3Jl YWR5ID0gdHJ1ZTsKKwkgIHJldHVybiBnb3RvbmU7CisJfQogICAgICAgZ290b25lICs9IHMtPndy aXRlX3JlYWR5ID0gIHBpcGVfZGF0YV9hdmFpbGFibGUgKHMtPmZkLCBmaCwgaCwgdHJ1ZSk7CiAg ICAgICBzZWxlY3RfcHJpbnRmICgid3JpdGU6ICVzLCBnb3RvbmUgJWQiLCBmaC0+Z2V0X25hbWUg KCksIGdvdG9uZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYyBi L3dpbnN1cC9jeWd3aW4vc3Bhd24uY2MKaW5kZXggMGJkZTBiMDRkLi42YjIwMjY3NzYgMTAwNjQ0 Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc3Bhd24uY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9zcGF3bi5j YwpAQCAtNjU3LDYgKzY1NywxNyBAQCBjaGlsZF9pbmZvX3NwYXduOjp3b3JrZXIgKGNvbnN0IGNo YXIgKnByb2dfYXJnLCBjb25zdCBjaGFyICpjb25zdCAqYXJndiwKIAkJcHR5cy0+Y3JlYXRlX2lu dmlzaWJsZV9jb25zb2xlICgpOwogCQlwdHlzLT5zZXR1cF9sb2NhbGUgKCk7CiAJICAgICAgfQor CSAgICBlbHNlIGlmIChjZmQtPmdldF9kZXYgKCkgPT0gRkhfUElQRVcpCisJICAgICAgeworCQlm aGFuZGxlcl9waXBlICpwaXBlID0gKGZoYW5kbGVyX3BpcGUgKikoZmhhbmRsZXJfYmFzZSAqKSBj ZmQ7CisJCXBpcGUtPmNsb3NlX3F1ZXJ5X2hhbmRsZSAoKTsKKwkJcGlwZS0+c2V0X3BpcGVfbm9u X2Jsb2NraW5nIChmYWxzZSk7CisJICAgICAgfQorCSAgICBlbHNlIGlmIChjZmQtPmdldF9kZXYg KCkgPT0gRkhfUElQRVIpCisJICAgICAgeworCQlmaGFuZGxlcl9waXBlICpwaXBlID0gKGZoYW5k bGVyX3BpcGUgKikoZmhhbmRsZXJfYmFzZSAqKSBjZmQ7CisJCXBpcGUtPnNldF9waXBlX25vbl9i bG9ja2luZyAoZmFsc2UpOworCSAgICAgIH0KIAl9CiAKICAgICAgIGJvb2wgZW5hYmxlX3Bjb24g PSBmYWxzZTsKLS0gCjIuMzMuMAoK --Multipart=_Tue__14_Sep_2021_18_56_23_+0900_PU_dXB+QtsZmcMMb Content-Type: application/octet-stream; name="0002-Cygwin-pipe-fifo-Release-select_sem-semaphore-as-muc.patch" Content-Disposition: attachment; filename="0002-Cygwin-pipe-fifo-Release-select_sem-semaphore-as-muc.patch" Content-Transfer-Encoding: base64 RnJvbSAwYjQxZTc1ZDVlOGJmYzYyZjk3YWY4NWU5NzdjNzY3MjM5M2M0MTk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogVHVlLCAxNCBTZXAgMjAyMSAxODo1MDo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0gg Mi8yXSBDeWd3aW46IHBpcGUsIGZpZm86IFJlbGVhc2Ugc2VsZWN0X3NlbSBzZW1hcGhvcmUgYXMg bXVjaAogYXMgbmVlZGVkLgoKLSBDdXJyZW50bHksIHJhd19yZWFkKCksIHJhd193cml0ZSgpIGFu ZCBjbG9zZSgpIHJlbGVhc2Ugc2VsZWN0X3NlbQogIHVuY29uZGl0aW9uYWxseSBldmVuIGlmIG5v IHdhaXRlciBmb3Igc2VsZWN0X3NlbSBleGlzdHMuIFdpdGggdGhpcwogIHBhdGNoLCBvbmx5IHRo ZSBtaW5pbXVtIG51bWJlciBvZiBzZW1hcGhvcmVzIHJlcXVpcmVkIGlzIHJlbGVhc2VkLgotLS0K IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaCAgICAgICB8ICA0ICsrKysKIHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfZmlmby5jYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHdpbnN1 cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oIGIvd2luc3VwL2N5Z3dpbi9maGFu ZGxlci5oCmluZGV4IGRiMjMyNTE0NC4uOTU4MGE2OThjIDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL2ZoYW5kbGVyLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oCkBAIC0xMTc3LDYg KzExNzcsNyBAQCBjbGFzcyBmaGFuZGxlcl9waXBlX2ZpZm86IHB1YmxpYyBmaGFuZGxlcl9iYXNl CiAgcHJvdGVjdGVkOgogICBzaXplX3QgcGlwZV9idWZfc2l6ZTsKICAgSEFORExFIHF1ZXJ5X2hk bDsKKyAgdmlydHVhbCB2b2lkIHJlbGVhc2Vfc2VsZWN0X3NlbSAoY29uc3QgY2hhciAqKSB7fTsK IAogIHB1YmxpYzoKICAgZmhhbmRsZXJfcGlwZV9maWZvICgpOwpAQCAtMTIwMSw2ICsxMjAyLDcg QEAgY2xhc3MgZmhhbmRsZXJfcGlwZTogcHVibGljIGZoYW5kbGVyX3BpcGVfZmlmbwogcHJpdmF0 ZToKICAgSEFORExFIHJlYWRfbXR4OwogICBwaWRfdCBwb3Blbl9waWQ7CisgIHZvaWQgcmVsZWFz ZV9zZWxlY3Rfc2VtIChjb25zdCBjaGFyICopOwogcHVibGljOgogICBmaGFuZGxlcl9waXBlICgp OwogCkBAIC0xNDQ0LDYgKzE0NDYsOCBAQCBjbGFzcyBmaGFuZGxlcl9maWZvOiBwdWJsaWMgZmhh bmRsZXJfcGlwZV9maWZvCiAgIHZvaWQgc2hhcmVkX2ZjX2hhbmRsZXJfdXBkYXRlZCAoYm9vbCB2 YWwpCiAgIHsgc2htZW0tPnNoYXJlZF9mY19oYW5kbGVyX3VwZGF0ZWQgKHZhbCk7IH0KIAorICB2 b2lkIHJlbGVhc2Vfc2VsZWN0X3NlbSAoY29uc3QgY2hhciAqKTsKKwogcHVibGljOgogICBmaGFu ZGxlcl9maWZvICgpOwogICB+ZmhhbmRsZXJfZmlmbyAoKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9maWZvLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9maWZvLmNjCmlu ZGV4IDM3NDk4ZjU0Ny4uNDg5YmE1MjhjIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5k bGVyX2ZpZm8uY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9maWZvLmNjCkBAIC0xMTg1 LDYgKzExODUsMjIgQEAgZmhhbmRsZXJfZmlmbzo6dGFrZV9vd25lcnNoaXAgKERXT1JEIHRpbWVv dXQpCiAgIHJldHVybiByZXQ7CiB9CiAKK3ZvaWQKK2ZoYW5kbGVyX2ZpZm86OnJlbGVhc2Vfc2Vs ZWN0X3NlbSAoY29uc3QgY2hhciAqZnJvbSkKK3sKKyAgTE9ORyBuX3JlbGVhc2U7CisgIGlmIChy ZWFkZXIpIC8qIE51bWJlciBvZiBzZWxlY3QoKSBjYWxsLiAqLworICAgIG5fcmVsZWFzZSA9IGdl dF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKQorICAgICAgLSBnZXRfb2JqX2hhbmRsZV9j b3VudCAocmVhZF9yZWFkeSk7CisgIGVsc2UgLyogTnVtYmVyIG9mIHNlbGVjdCgpIGFuZCByZWFk ZXIgKi8KKyAgICBuX3JlbGVhc2UgPSBnZXRfb2JqX2hhbmRsZV9jb3VudCAoc2VsZWN0X3NlbSkK KyAgICAgIC0gZ2V0X29ial9oYW5kbGVfY291bnQgKGdldF9oYW5kbGUgKCkpOworICBkZWJ1Z19w cmludGYoIiVzKCVzKSByZWxlYXNlICVkIiwgZnJvbSwKKwkgICAgICAgcmVhZGVyID8gInJlYWRl ciIgOiAid3JpdGVyIiwgbl9yZWxlYXNlKTsKKyAgaWYgKG5fcmVsZWFzZSkKKyAgICBSZWxlYXNl U2VtYXBob3JlIChzZWxlY3Rfc2VtLCBuX3JlbGVhc2UsIE5VTEwpOworfQorCiB2b2lkIF9fcmVn MwogZmhhbmRsZXJfZmlmbzo6cmF3X3JlYWQgKHZvaWQgKmluX3B0ciwgc2l6ZV90JiBsZW4pCiB7 CkBAIC0xMzcyLDcgKzEzODgsNyBAQCBvdXQ6CiAgIGZpZm9fY2xpZW50X3VubG9jayAoKTsKICAg cmVhZGluZ191bmxvY2sgKCk7CiAgIGlmIChzZWxlY3Rfc2VtKQotICAgIFJlbGVhc2VTZW1hcGhv cmUgKHNlbGVjdF9zZW0sIGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7 CisgICAgcmVsZWFzZV9zZWxlY3Rfc2VtICgicmF3X3JlYWQiKTsKIH0KIAogaW50IF9fcmVnMgpA QCAtMTQ4Myw2ICsxNDk5LDExIEBAIGZoYW5kbGVyX2ZpZm86OmNhbmNlbF9yZWFkZXJfdGhyZWFk ICgpCiBpbnQKIGZoYW5kbGVyX2ZpZm86OmNsb3NlICgpCiB7CisgIGlmIChzZWxlY3Rfc2VtKQor ICAgIHsKKyAgICAgIHJlbGVhc2Vfc2VsZWN0X3NlbSAoImNsb3NlIik7CisgICAgICBOdENsb3Nl IChzZWxlY3Rfc2VtKTsKKyAgICB9CiAgIGlmICh3cml0ZXIpCiAgICAgewogICAgICAgbndyaXRl cnNfbG9jayAoKTsKQEAgLTE1NzQsMTEgKzE1OTUsNiBAQCBmaGFuZGxlcl9maWZvOjpjbG9zZSAo KQogICAgIE50Q2xvc2UgKHdyaXRlX3JlYWR5KTsKICAgaWYgKHdyaXRlcl9vcGVuaW5nKQogICAg IE50Q2xvc2UgKHdyaXRlcl9vcGVuaW5nKTsKLSAgaWYgKHNlbGVjdF9zZW0pCi0gICAgewotICAg ICAgUmVsZWFzZVNlbWFwaG9yZSAoc2VsZWN0X3NlbSwgZ2V0X29ial9oYW5kbGVfY291bnQgKHNl bGVjdF9zZW0pLCBOVUxMKTsKLSAgICAgIE50Q2xvc2UgKHNlbGVjdF9zZW0pOwotICAgIH0KICAg aWYgKG5vaGFuZGxlICgpKQogICAgIHJldHVybiAwOwogICBlbHNlCmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUu Y2MKaW5kZXggYjJjOTViNTZlLi4wMzEwYjJiNjggMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcGlwZS5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3BpcGUuY2MKQEAg LTIzMyw2ICsyMzMsMjIgQEAgZmhhbmRsZXJfcGlwZTo6Z2V0X3Byb2NfZmRfbmFtZSAoY2hhciAq YnVmKQogICByZXR1cm4gYnVmOwogfQogCit2b2lkCitmaGFuZGxlcl9waXBlOjpyZWxlYXNlX3Nl bGVjdF9zZW0gKGNvbnN0IGNoYXIgKmZyb20pCit7CisgIExPTkcgbl9yZWxlYXNlOworICBpZiAo Z2V0X2RldiAoKSA9PSBGSF9QSVBFUikgLyogTnVtYmVyIG9mIHNlbGVjdCgpIGFuZCB3cml0ZXIg Ki8KKyAgICBuX3JlbGVhc2UgPSBnZXRfb2JqX2hhbmRsZV9jb3VudCAoc2VsZWN0X3NlbSkKKyAg ICAgIC0gZ2V0X29ial9oYW5kbGVfY291bnQgKHJlYWRfbXR4KTsKKyAgZWxzZSAvKiBOdW1iZXIg b2Ygc2VsZWN0KCkgY2FsbCAqLworICAgIG5fcmVsZWFzZSA9IGdldF9vYmpfaGFuZGxlX2NvdW50 IChzZWxlY3Rfc2VtKQorICAgICAgLSBnZXRfb2JqX2hhbmRsZV9jb3VudCAocXVlcnlfaGRsKTsK KyAgZGVidWdfcHJpbnRmKCIlcyglcykgcmVsZWFzZSAlZCIsIGZyb20sCisJICAgICAgIGdldF9k ZXYgKCkgPT0gRkhfUElQRVIgPyAiUElQRVIiIDogIlBJUEVXIiwgbl9yZWxlYXNlKTsKKyAgaWYg KG5fcmVsZWFzZSkKKyAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2VtLCBuX3JlbGVhc2Us IE5VTEwpOworfQorCiB2b2lkIF9fcmVnMwogZmhhbmRsZXJfcGlwZTo6cmF3X3JlYWQgKHZvaWQg KnB0ciwgc2l6ZV90JiBsZW4pCiB7CkBAIC0zMjQsOCArMzQwLDcgQEAgZmhhbmRsZXJfcGlwZTo6 cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAJICBwdHIgPSAoKGNoYXIgKikgcHRy KSArIG5ieXRlc19ub3c7CiAJICBuYnl0ZXMgKz0gbmJ5dGVzX25vdzsKIAkgIGlmIChzZWxlY3Rf c2VtICYmIG5ieXRlc19ub3cgPiAwKQotCSAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2Vt LAotCQkJICAgICAgZ2V0X29ial9oYW5kbGVfY291bnQgKHNlbGVjdF9zZW0pLCBOVUxMKTsKKwkg ICAgcmVsZWFzZV9zZWxlY3Rfc2VtICgicmF3X3JlYWQiKTsKIAl9CiAgICAgICBlbHNlCiAJewpA QCAtNTAwLDggKzUxNSw3IEBAIGZoYW5kbGVyX3BpcGVfZmlmbzo6cmF3X3dyaXRlIChjb25zdCB2 b2lkICpwdHIsIHNpemVfdCBsZW4pCiAJICBwdHIgPSAoKGNoYXIgKikgcHRyKSArIG5ieXRlc19u b3c7CiAJICBuYnl0ZXMgKz0gbmJ5dGVzX25vdzsKIAkgIGlmIChzZWxlY3Rfc2VtICYmIG5ieXRl c19ub3cgPiAwKQotCSAgICBSZWxlYXNlU2VtYXBob3JlIChzZWxlY3Rfc2VtLAotCQkJICAgICAg Z2V0X29ial9oYW5kbGVfY291bnQgKHNlbGVjdF9zZW0pLCBOVUxMKTsKKwkgICAgcmVsZWFzZV9z ZWxlY3Rfc2VtICgicmF3X3dyaXRlIik7CiAJICAvKiAwIGJ5dGVzIHJldHVybmVkPyAgRUFHQUlO LiAgU2VlIGFib3ZlLiAqLwogCSAgaWYgKE5UX1NVQ0NFU1MgKHN0YXR1cykgJiYgbmJ5dGVzID09 IDApCiAJICAgIHNldF9lcnJubyAoRUFHQUlOKTsKQEAgLTU5NSwxMyArNjA5LDEzIEBAIGZoYW5k bGVyX3BpcGU6OmR1cCAoZmhhbmRsZXJfYmFzZSAqY2hpbGQsIGludCBmbGFncykKIGludAogZmhh bmRsZXJfcGlwZTo6Y2xvc2UgKCkKIHsKLSAgaWYgKHJlYWRfbXR4KQotICAgIENsb3NlSGFuZGxl IChyZWFkX210eCk7CiAgIGlmIChzZWxlY3Rfc2VtKQogICAgIHsKLSAgICAgIFJlbGVhc2VTZW1h cGhvcmUgKHNlbGVjdF9zZW0sIGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVM TCk7CisgICAgICByZWxlYXNlX3NlbGVjdF9zZW0gKCJjbG9zZSIpOwogICAgICAgQ2xvc2VIYW5k bGUgKHNlbGVjdF9zZW0pOwogICAgIH0KKyAgaWYgKHJlYWRfbXR4KQorICAgIENsb3NlSGFuZGxl IChyZWFkX210eCk7CiAgIGlmIChxdWVyeV9oZGwpCiAgICAgQ2xvc2VIYW5kbGUgKHF1ZXJ5X2hk bCk7CiAgIHJldHVybiBmaGFuZGxlcl9iYXNlOjpjbG9zZSAoKTsKLS0gCjIuMzMuMAoK --Multipart=_Tue__14_Sep_2021_18_56_23_+0900_PU_dXB+QtsZmcMMb--