From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30097 invoked by alias); 19 Nov 2019 12:58:57 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 30082 invoked by uid 89); 19 Nov 2019 12:58:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.100.3 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-19.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy= X-Spam-Status: No, score=-19.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on sourceware.org X-Spam-Level: X-HELO: gnu.wildebeest.org Received: from wildebeest.demon.nl (HELO gnu.wildebeest.org) (212.238.236.112) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 19 Nov 2019 12:58:54 +0000 Received: from tarox.wildebeest.org (tarox.wildebeest.org [172.31.17.39]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 80234302BBFD; Tue, 19 Nov 2019 13:58:51 +0100 (CET) Received: by tarox.wildebeest.org (Postfix, from userid 1000) id 283FE413CEAA; Tue, 19 Nov 2019 13:58:51 +0100 (CET) Message-ID: Subject: Re: patch 3/3 debuginfod client interruptability From: Mark Wielaard To: "Frank Ch. Eigler" Cc: Pedro Alves , Aaron Merey , elfutils-devel@sourceware.org Date: Tue, 19 Nov 2019 12:58:00 -0000 In-Reply-To: <20191118025008.GA29713@redhat.com> References: <20191028190438.GC14349@redhat.com> <20191028190602.GD14349@redhat.com> <20191028190726.GE14349@redhat.com> <20191104214823.GA17633@redhat.com> <73de7c5ac7205dbb5e6d4c47a2abb0c23cd79d5e.camel@klomp.org> <23bbcd14-fc4f-64f6-9a6a-af860b1018cb@redhat.com> <20191118025008.GA29713@redhat.com> Content-Type: multipart/mixed; boundary="=-9v0qKxBPBdulqFruAJJM" X-Mailer: Evolution 3.28.5 (3.28.5-5.el7) Mime-Version: 1.0 X-Spam-Flag: NO X-IsSubscribed: yes X-SW-Source: 2019-q4/txt/msg00178.txt.bz2 --=-9v0qKxBPBdulqFruAJJM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 1300 Hi, On Sun, 2019-11-17 at 21:50 -0500, Frank Ch. Eigler wrote: > > Attached is a variant that adds debuginfod_begin and debuginfo_end > > (names matching elf/dwarf_begin/end) and adds a debuginfod_client > > handle to each other function. >=20 > Sure, if you like. OK, I rebased on the debuginfod-submit branch and added documentation (see attached). > Would you be sympathetic to supporting a > client=3DNULL entrypoint to the lookup functions, ergo no begin/end, for > applications that don't want a progressfn callback? That way the > simple case looks simple. I think it is better to be consistent and always require a valid client connection handle for the reasons that Pedro gave. > > diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx > >=20=20 > > +static debuginfod_client *client; >=20 > Note that multiple http webapi handling threads may make > federated debuginfod calls concurrently. Is it your idea > that they share a single client object? No, it would be better to give every thread it own handle. The attached patch does that. All patches are also on=20 https://code.wildebeest.org/git/user/mjw/elfutils/log/?h=3Ddebuginfod-clien= t-context If you think those patches are ok I can squash them and add them to the debuginfod-submit branch. Cheers, Mark --=-9v0qKxBPBdulqFruAJJM Content-Disposition: inline; filename*0=0001-update-documentation-for-client-connection-handle-us.pat; filename*1=ch Content-Type: text/x-patch; name="0001-update-documentation-for-client-connection-handle-us.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 6568 RnJvbSA4MDA2ZGI5MzMyOThlY2NhMzVhMDQyMDdhYWQzOTkxYjI0MmMyMWRh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFdpZWxhYXJk IDxtYXJrQGtsb21wLm9yZz4KRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMzow OToyNCArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIHVwZGF0ZSBkb2N1bWVudGF0 aW9uIGZvciBjbGllbnQgY29ubmVjdGlvbiBoYW5kbGUgdXNhZ2UKCi0tLQog ZG9jL2RlYnVnaW5mb2RfYmVnaW4uMyAgICAgICAgICB8ICAxICsKIGRvYy9k ZWJ1Z2luZm9kX2VuZC4zICAgICAgICAgICAgfCAgMSArCiBkb2MvZGVidWdp bmZvZF9maW5kX2RlYnVnaW5mby4zIHwgNTEgKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlv bnMoKyksIDExIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRv Yy9kZWJ1Z2luZm9kX2JlZ2luLjMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2Mv ZGVidWdpbmZvZF9lbmQuMwoKZGlmZiAtLWdpdCBhL2RvYy9kZWJ1Z2luZm9k X2JlZ2luLjMgYi9kb2MvZGVidWdpbmZvZF9iZWdpbi4zCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xNjI3OTkzNgotLS0gL2Rldi9u dWxsCisrKyBiL2RvYy9kZWJ1Z2luZm9kX2JlZ2luLjMKQEAgLTAsMCArMSBA QAorLnNvIG1hbjMvZGVidWdpbmZvZF9maW5kX2RlYnVnaW5mby4zCmRpZmYg LS1naXQgYS9kb2MvZGVidWdpbmZvZF9lbmQuMyBiL2RvYy9kZWJ1Z2luZm9k X2VuZC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4x NjI3OTkzNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kZWJ1Z2luZm9kX2Vu ZC4zCkBAIC0wLDAgKzEgQEAKKy5zbyBtYW4zL2RlYnVnaW5mb2RfZmluZF9k ZWJ1Z2luZm8uMwpkaWZmIC0tZ2l0IGEvZG9jL2RlYnVnaW5mb2RfZmluZF9k ZWJ1Z2luZm8uMyBiL2RvYy9kZWJ1Z2luZm9kX2ZpbmRfZGVidWdpbmZvLjMK aW5kZXggYjY1YTZjNTcuLjY2NjE5MTU3IDEwMDY0NAotLS0gYS9kb2MvZGVi dWdpbmZvZF9maW5kX2RlYnVnaW5mby4zCisrKyBiL2RvYy9kZWJ1Z2luZm9k X2ZpbmRfZGVidWdpbmZvLjMKQEAgLTIxLDE1ICsyMSwzOSBAQCBkZWJ1Z2lu Zm9kX2ZpbmRfZGVidWdpbmZvIFwtIHJlcXVlc3QgZGVidWdpbmZvIGZyb20g ZGVidWdpbmZvZAogLm5mCiAuQiAjaW5jbHVkZSA8ZWxmdXRpbHMvZGVidWdp bmZvZC5oPgogLlBQCi0uQkkgImludCBkZWJ1Z2luZm9kX2ZpbmRfZGVidWdp bmZvKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiIgYnVpbGRfaWQgIiwgaW50ICIg YnVpbGRfaWRfbGVuICIsIGNoYXIgKiogIiBwYXRoICIpOyIKLS5CSSAiaW50 IGRlYnVnaW5mb2RfZmluZF9leGVjdXRhYmxlKGNvbnN0IHVuc2lnbmVkIGNo YXIgKiIgYnVpbGRfaWQgIiwgaW50ICIgYnVpbGRfaWRfbGVuICIsIGNoYXIg KiogIiBwYXRoICIpOyIKLS5CSSAiaW50IGRlYnVnaW5mb2RfZmluZF9zb3Vy Y2UoY29uc3QgdW5zaWduZWQgY2hhciAqIiBidWlsZF9pZCAiLCBpbnQgIiBi dWlsZF9pZF9sZW4gIiwgY29uc3QgY2hhciAqIiBmaWxlbmFtZSAiLCBjaGFy ICoqICIgcGF0aCAiKTsiCi0uQkkgInR5cGVkZWYgaW50ICgqZGVidWdpbmZv X3Byb2dyZXNzZm5fdCkobG9uZyBhLCBsb25nIGIpOyIKLS5CSSAiZGVidWdp bmZvX3Byb2dyZXNzZm5fdCBkZWJ1Z2luZm9kX3NldF9wcm9ncmVzc2ZuKGRl YnVnaW5mb19wcm9ncmVzc2ZuX3QgIiBwcm9ncmVzc2ZuICIpOyIKKy5CSSAi ZGVidWdpbmZvZF9jbGllbnQgKmRlYnVnaW5mb2RfYmVnaW4odm9pZCk7Igor LkJJICJ2b2lkIGRlYnVnaW5mb2RfZW5kKGRlYnVnaW5mb2RfY2xpZW50ICoi IGNsaWVudCAiKTsiCisKKy5CSSAiaW50IGRlYnVnaW5mb2RfZmluZF9kZWJ1 Z2luZm8oZGVidWdpbmZvZF9jbGllbnQgKiIgY2xpZW50ICIsIgorLkJJICIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICoiIGJ1aWxkX2lkICIsIgorLkJJICIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgIiBidWlsZF9pZF9sZW4gIiwiCisuQkkgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiogIiBwYXRoICIpOyIK Ky5CSSAiaW50IGRlYnVnaW5mb2RfZmluZF9leGVjdXRhYmxlKGRlYnVnaW5m b2RfY2xpZW50ICoiIGNsaWVudCAiLCIKKy5CSSAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiIgYnVpbGRf aWQgIiwiCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgIiBidWlsZF9pZF9sZW4gIiwiCisuQkkgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFyICoqICIgcGF0aCAiKTsiCisuQkkgImludCBk ZWJ1Z2luZm9kX2ZpbmRfc291cmNlKGRlYnVnaW5mb2RfY2xpZW50ICoiIGNs aWVudCAiLCIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqIiBidWlsZF9pZCAiLCIKKy5CSSAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50ICIgYnVpbGRfaWRfbGVuICIsIgor LkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoi IGZpbGVuYW1lICIsIgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICoqICIgcGF0aCAiKTsiCisKKy5CSSAidHlwZWRlZiBpbnQgKCpk ZWJ1Z2luZm9fcHJvZ3Jlc3Nmbl90KShkZWJ1Z2luZm9kX2NsaWVudCAqIiBj bGllbnQgIiwiCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9uZyBhLCBsb25nIGIpOyIKKy5CSSAidm9pZCBkZWJ1Z2lu Zm9kX3NldF9wcm9ncmVzc2ZuKGRlYnVnaW5mb2RfY2xpZW50ICoiIGNsaWVu dCAiLCIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl YnVnaW5mb19wcm9ncmVzc2ZuX3QgIiBwcm9ncmVzc2ZuICIpOyIKIAogTGlu ayB3aXRoIFxmQi1sZGVidWdpbmZvZFxmUC4KIAogLlNIIERFU0NSSVBUSU9O CisKKy5CUiBkZWJ1Z2luZm9kX2JlZ2luICgpCitjcmVhdGVzIGEgXGZCZGVi dWdpbmZvZF9jbGllbnRcZlAgY29ubmVjdGlvbiBoYW5kbGUgdGhhdCBzaG91 bGQgYmUgdXNlZAord2l0aCBhbGwgb3RoZXIgY2FsbHMuCisuQlIgZGVidWdp bmZvZF9lbmQgKCkKK3Nob3VsZCBiZSBjYWxsZWQgb24gdGhlIFxmQmNsaWVu dFxmUCBoYW5kbGUgdG8gcmVsZWFzZSBhbGwgc3RhdGUgYW5kCitzdG9yYWdl IHdoZW4gZG9uZS4KKwogLkJSIGRlYnVnaW5mb2RfZmluZF9kZWJ1Z2luZm8g KCksCiAuQlIgZGVidWdpbmZvZF9maW5kX2V4ZWN1dGFibGUgKCksCiBhbmQK QEAgLTY1LDkgKzg5LDE0IEBAIFRoZSBVUkxzIGluIFxmQiRERUJVR0lORk9E X1VSTFNcZlAgbWF5IGJlIHF1ZXJpZWQgaW4gcGFyYWxsZWwuIEFzIHNvb24K IGFzIGEgZGVidWdpbmZvZCBzZXJ2ZXIgYmVnaW5zIHRyYW5zZmVycmluZyB0 aGUgdGFyZ2V0IGZpbGUgYWxsIG9mIHRoZQogY29ubmVjdGlvbnMgdG8gdGhl IG90aGVyIHNlcnZlcnMgYXJlIGNsb3NlZC4KIAotVGhlc2UgZnVuY3Rpb25z IGFyZSBNVC1zYWZlLgorQSBcZkJjbGllbnRcZlAgaGFuZGxlIHNob3VsZCBi ZSB1c2VkIGZyb20gb25seSBvbmUgdGhyZWFkIGF0IGEgdGltZS4KIAogLlNI ICJSRVRVUk4gVkFMVUUiCisKK1xmQmRlYnVnaW5mb2RfYmVnaW5cZlAgcmV0 dXJucyB0aGUgXGZCZGVidWdpbmZvZF9jbGllbnRcZlAgaGFuZGxlIHRvCit1 c2Ugd2l0aCBhbGwgb3RoZXIgY2FsbHMuICBPbiBlcnJvciBcZkJOVUxMXGZQ IHdpbGwgYmUgcmV0dXJuZWQgYW5kCitcZkJlcnJub1xmUCB3aWxsIGJlIHNl dC4KKwogSWYgYSBmaW5kIGZhbWlseSBmdW5jdGlvbiBpcyBzdWNjZXNzZnVs LCB0aGUgcmVzdWx0aW5nIGZpbGUgaXMgc2F2ZWQKIHRvIHRoZSBjbGllbnQg Y2FjaGUgYW5kIGEgZmlsZSBkZXNjcmlwdG9yIHRvIHRoYXQgZmlsZSBpcyBy ZXR1cm5lZC4KIFRoZSBjYWxsZXIgbmVlZHMgdG8gXGZCY2xvc2VcZlAoKSB0 aGlzIGRlc2NyaXB0b3IuICBPdGhlcndpc2UsIGEKQEAgLTc1LDEyICsxMDQs MTIgQEAgbmVnYXRpdmUgZXJyb3IgY29kZSBpcyByZXR1cm5lZC4KIAogLlNI ICJQUk9HUkVTUyBDQUxMQkFDSyIKIAotQXMgdGhlIFxmQmRlYnVnaW5mb2Rf ZmluZF8qXGZQKCkgZnVuY3Rpb25zIG1heSBibG9jayBmb3Igc2Vjb25kcyBv ciBsb25nZXIsIGEgcHJvZ3Jlc3MKLWNhbGxiYWNrIGZ1bmN0aW9uIGlzIGNh bGxlZCBwZXJpb2RpY2FsbHksIGlmIGNvbmZpZ3VyZWQgd2l0aAorQXMgdGhl IFxmQmRlYnVnaW5mb2RfZmluZF8qXGZQKCkgZnVuY3Rpb25zIG1heSBibG9j ayBmb3Igc2Vjb25kcyBvcgorbG9uZ2VyLCBhIHByb2dyZXNzIGNhbGxiYWNr IGZ1bmN0aW9uIGlzIGNhbGxlZCBwZXJpb2RpY2FsbHksIGlmCitjb25maWd1 cmVkIHdpdGgKIC5CUiBkZWJ1Z2luZm9kX3NldF9wcm9ncmVzc2ZuICgpLgot VGhpcyBmdW5jdGlvbiBzZXRzIGEgbmV3IHByb2dyZXNzIGNhbGxiYWNrIGZ1 bmN0aW9uIChvciBOVUxMKSBhbmQKLXJldHVybnMgdGhlIHByZXZpb3VzbHkg c2V0IGZ1bmN0aW9uIChvciBOVUxMKS4gIFRoaXMgZnVuY3Rpb24gbWF5IGJl Ci1NVC11bnNhZmUuCitUaGlzIGZ1bmN0aW9uIHNldHMgYSBuZXcgcHJvZ3Jl c3MgY2FsbGJhY2sgZnVuY3Rpb24gKG9yIE5VTEwpIGZvciB0aGUKK2NsaWVu dCBoYW5kbGUuCiAKIFRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiBpcyBj YWxsZWQgZnJvbSB0aGUgY29udGV4dCBvZiBlYWNoIHRocmVhZAogdGhhdCBp cyBpbnZva2luZyBhbnkgb2YgdGhlIG90aGVyIGxvb2t1cCBmdW5jdGlvbnMu ICBJdCBpcyBnaXZlbiB0d28KLS0gCjIuMTguMQoK --=-9v0qKxBPBdulqFruAJJM Content-Disposition: inline; filename*0=0001-debuginfod-create-a-client-connection-handle-for-eac.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-debuginfod-create-a-client-connection-handle-for-eac.patch"; charset="UTF-8" Content-length: 2941 RnJvbSA5YzM4MTdmMmE1MmQ1MTZhODg5NjFhMjVlNGUwZDhmMTc3YjQyNDYz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFdpZWxhYXJk IDxtYXJrQGtsb21wLm9yZz4KRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMzo1 MDo0MSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGRlYnVnaW5mb2Q6IGNyZWF0 ZSBhIGNsaWVudCBjb25uZWN0aW9uIGhhbmRsZSBmb3IgZWFjaAogaGFuZGxl ciB0aHJlYWQKCi0tLQogZGVidWdpbmZvZC9kZWJ1Z2luZm9kLmN4eCB8IDEy ICsrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygr KSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kZWJ1Z2luZm9kL2Rl YnVnaW5mb2QuY3h4IGIvZGVidWdpbmZvZC9kZWJ1Z2luZm9kLmN4eAppbmRl eCA3ZDNkNTgwZi4uN2JhZjE4ZWMgMTAwNjQ0Ci0tLSBhL2RlYnVnaW5mb2Qv ZGVidWdpbmZvZC5jeHgKKysrIGIvZGVidWdpbmZvZC9kZWJ1Z2luZm9kLmN4 eApAQCAtMzYwLDcgKzM2MCw2IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncCBhcmdw ID0KICAgfTsKIAogCi1zdGF0aWMgZGVidWdpbmZvZF9jbGllbnQgKmNsaWVu dDsKIHN0YXRpYyBzdHJpbmcgZGJfcGF0aDsKIHN0YXRpYyBzcWxpdGUzICpk YjsKIHN0YXRpYyB1bnNpZ25lZCB2ZXJib3NlOwpAQCAtMTAzOSw4ICsxMDM4 LDExIEBAIHN0YXRpYyBzdHJ1Y3QgTUhEX1Jlc3BvbnNlKiBoYW5kbGVfYnVp bGRpZCAoY29uc3Qgc3RyaW5nJiBidWlsZGlkIC8qIHVuc2FmZSAqLywKICAg Ly8gaXMgdG8gZGVmZXIgdG8gb3RoZXIgZGVidWdpbmZvIHNlcnZlcnMuCiAK ICAgaW50IGZkID0gLTE7CisgIGRlYnVnaW5mb2RfY2xpZW50ICpjbGllbnQg PSBkZWJ1Z2luZm9kX2JlZ2luICgpOwogICBpZiAoY2xpZW50ICE9IE5VTEwp CiAgICAgeworICAgICAgZGVidWdpbmZvZF9zZXRfcHJvZ3Jlc3NmbiAoY2xp ZW50LCAmIGRlYnVnaW5mb2RfZmluZF9wcm9ncmVzcyk7CisKICAgICAgIGlm IChhcnRpZmFjdHR5cGUgPT0gImRlYnVnaW5mbyIpCiAJZmQgPSBkZWJ1Z2lu Zm9kX2ZpbmRfZGVidWdpbmZvIChjbGllbnQsCiAJCQkJCShjb25zdCB1bnNp Z25lZCBjaGFyKikgYnVpbGRpZC5jX3N0cigpLApAQCAtMTA1NSw3ICsxMDU3 LDggQEAgc3RhdGljIHN0cnVjdCBNSERfUmVzcG9uc2UqIGhhbmRsZV9idWls ZGlkIChjb25zdCBzdHJpbmcmIGJ1aWxkaWQgLyogdW5zYWZlICovLAogCQkJ CSAgICAgMCwgc3VmZml4LmNfc3RyKCksIE5VTEwpOwogICAgIH0KICAgZWxz ZQotICAgIGZkID0gLUVOT1NZUzsKKyAgICBmZCA9IC1lcnJubzsgLyogU2V0 IGJ5IGRlYnVnaW5mb2RfYmVnaW4uICAqLworICBkZWJ1Z2luZm9kX2VuZCAo Y2xpZW50KTsKIAogICBpZiAoZmQgPj0gMCkKICAgICB7CkBAIC0yNTE4LDEw ICsyNTIxLDYgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAg ICAgICAgICAgICAiY2Fubm90IHJ1biBkYXRhYmFzZSBzY2hlbWEgZGRsOiAl cyIsIHNxbGl0ZTNfZXJybXNnKGRiKSk7CiAgICAgfQogCi0gIGNsaWVudCA9 IGRlYnVnaW5mb2RfYmVnaW4gKCk7Ci0gIGlmIChjbGllbnQgIT0gTlVMTCkK LSAgICBkZWJ1Z2luZm9kX3NldF9wcm9ncmVzc2ZuIChjbGllbnQsICYgZGVi dWdpbmZvZF9maW5kX3Byb2dyZXNzKTsKLQogICAvLyBTdGFydCBodHRwZCBz ZXJ2ZXIgdGhyZWFkcy4gIFNlcGFyYXRlIHBvb2wgZm9yIElQdjQgYW5kIElQ djYsIGluCiAgIC8vIGNhc2UgdGhlIGhvc3Qgb25seSBoYXMgb25lIHByb3Rv Y29sIHN0YWNrLgogICBNSERfRGFlbW9uICpkNCA9IE1IRF9zdGFydF9kYWVt b24gKE1IRF9VU0VfVEhSRUFEX1BFUl9DT05ORUNUSU9OCkBAIC0yNjQ5LDcg KzI2NDgsNiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogICBp ZiAoZDYpIE1IRF9zdG9wX2RhZW1vbiAoZDYpOwogCiAgIC8qIFdpdGggYWxs IHRocmVhZHMga25vd24gZGVhZCwgd2UgY2FuIGNsZWFuIHVwIHRoZSBnbG9i YWwgcmVzb3VyY2VzLiAqLwotICBkZWJ1Z2luZm9kX2VuZCAoY2xpZW50KTsK ICAgZGVsZXRlIHNjYW5fY29uY3VycmVuY3lfc2VtOwogICByYyA9IHNxbGl0 ZTNfZXhlYyAoZGIsIERFQlVHSU5GT0RfU1FMSVRFX0NMRUFOVVBfRERMLCBO VUxMLCBOVUxMLCBOVUxMKTsKICAgaWYgKHJjICE9IFNRTElURV9PSykKLS0g CjIuMTguMQoK --=-9v0qKxBPBdulqFruAJJM--