Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kk12n-0002dG-JE for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Dec 2020 08:29:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kk12m-00084P-82 for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Dec 2020 08:29:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kk12l-00084D-Gp for pgsql-hackers@lists.postgresql.org; Tue, 01 Dec 2020 08:29:51 +0000 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kk12i-00042j-9o for pgsql-hackers@postgresql.org; Tue, 01 Dec 2020 08:29:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1606811388; x=1638347388; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=zOpOfxX293v5euqzWiSDB4/LOGS2jN+n24ITs4oyth0=; b=u51tFYnvfFy41soc51uctbdnGwePlUnPDaXLWYyI2uyHOdSlqvkOOwoD y5RMl99kmJS2ifLtGHM8HEkC1VUaWwnlHvCuI25w50duJLV8eeTaMSIuE A0id0oZ+wrBwK5CgTUVC7XVqzQWqvAdCTbHBu1QIPBIYD4tl0r3mckwwe 4=; X-Amazon-filename: v9-0008-Log-the-standby-recovery-conflict-waits.patch X-IronPort-AV: E=Sophos;i="5.78,384,1599523200"; d="scan'208";a="68246526" Subject: Re: Add Information during standby recovery conflicts Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1e-a70de69e.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-6002.iad6.amazon.com with ESMTP; 01 Dec 2020 08:29:41 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-1e-a70de69e.us-east-1.amazon.com (Postfix) with ESMTPS id 0EB40A1C53; Tue, 1 Dec 2020 08:29:38 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.162.144) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 1 Dec 2020 08:29:35 +0000 To: Masahiko Sawada , Alvaro Herrera , Fujii Masao CC: Masahiko Sawada , Kyotaro Horiguchi , PostgreSQL-development References: <20201130182528.GA1854@alvherre.pgsql> From: "Drouvot, Bertrand" Message-ID: <594f4419-62aa-c272-ef7d-4287e5c6b654@amazon.com> Date: Tue, 1 Dec 2020 09:29:31 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------CEBB940A36F2BE2DB5B00015" Content-Language: en-US X-Originating-IP: [10.43.162.144] X-ClientProxiedBy: EX13D11UWB001.ant.amazon.com (10.43.161.53) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --------------CEBB940A36F2BE2DB5B00015 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi, On 12/1/20 12:35 AM, Masahiko Sawada wrote: > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe. > > > > On Tue, Dec 1, 2020 at 3:25 AM Alvaro Herrera wrote: >> On 2020-Dec-01, Fujii Masao wrote: >> >>> + if (proc) >>> + { >>> + if (nprocs == 0) >>> + appendStringInfo(&buf, "%d", proc->pid); >>> + else >>> + appendStringInfo(&buf, ", %d", proc->pid); >>> + >>> + nprocs++; >>> >>> What happens if all the backends in wait_list have gone? In other words, >>> how should we handle the case where nprocs == 0 (i.e., nprocs has not been >>> incrmented at all)? This would very rarely happen, but can happen. >>> In this case, since buf.data is empty, at least there seems no need to log >>> the list of conflicting processes in detail message. >> Yes, I noticed this too; this can be simplified by changing the >> condition in the ereport() call to be "nprocs > 0" (rather than >> wait_list being null), otherwise not print the errdetail. (You could >> test buf.data or buf.len instead, but that seems uglier to me.) > +1 > > Maybe we can also improve the comment of this function from: > > + * This function also reports the details about the conflicting > + * process ids if *wait_list is not NULL. > > to " This function also reports the details about the conflicting > process ids if exist" or something. > Thank you all for the review/remarks. They have been addressed in the new attached patch version. Thanks! Bertrand --------------CEBB940A36F2BE2DB5B00015 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v9-0008-Log-the-standby-recovery-conflict-waits.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v9-0008-Log-the-standby-recovery-conflict-waits.patch" IGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyMiAr KysKIGRvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sICAgICAgICAgICB8ICAg NiArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAg MTggKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAg fCAyMTEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcm9jLmMgICAgICAgICAgICAgICB8ICAzNSArKysrLQogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2luY2x1ZGUv c3RvcmFnZS9zdGFuZGJ5LmggICAgICAgICAgICAgICAgIHwgICA1ICstCiA4IGZpbGVzIGNo YW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApp bmRleCBlZTkxNDc0MGNjLi4zYWE4OTJjMGYzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC02ODM5LDYg KzY4MzksMjggQEAgbG9nX2xpbmVfcHJlZml4ID0gJyVtIFslcF0gJXEldUAlZC8lYSAnCiAg ICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlz dGVudHJ5IGlkPSJndWMtbG9nLXJlY292ZXJ5LWNvbmZsaWN0LXdhaXRzIiB4cmVmbGFiZWw9 ImxvZ19yZWNvdmVyeV9jb25mbGljdF93YWl0cyI+CisgICAgICA8dGVybT48dmFybmFtZT5s b2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHM8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bG9n X3JlY292ZXJ5X2NvbmZsaWN0X3dhaXRzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFt ZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBDb250cm9scyB3aGV0aGVy IGEgbG9nIG1lc3NhZ2UgaXMgcHJvZHVjZWQgd2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzCisg ICAgICAgIGlzIHdhaXRpbmcgbG9uZ2VyIHRoYW4gPHZhcm5hbWU+ZGVhZGxvY2tfdGltZW91 dDwvdmFybmFtZT4KKyAgICAgICAgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cy4gIFRoaXMgaXMg dXNlZnVsIGluIGRldGVybWluaW5nIGlmIHJlY292ZXJ5CisgICAgICAgIGNvbmZsaWN0cyBw cmV2ZW50IHRoZSByZWNvdmVyeSBmcm9tIGFwcGx5aW5nIFdBTC4KKyAgICAgICA8L3BhcmE+ CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b2Zm PC9saXRlcmFsPi4gIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldAorICAgICAgICBp biB0aGUgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24g dGhlIHNlcnZlcgorICAgICAgICBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3Rl bnRyeSBpZD0iZ3VjLWxvZy1wYXJhbWV0ZXItbWF4LWxlbmd0aCIgeHJlZmxhYmVsPSJsb2df cGFyYW1ldGVyX21heF9sZW5ndGgiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+bG9nX3BhcmFt ZXRlcl9tYXhfbGVuZ3RoPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAgICAg ICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2hpZ2gtYXZhaWxhYmls aXR5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvaGlnaC1hdmFpbGFiaWxpdHkuc2dtbAppbmRleCA4 NmRhODRmY2U3Li4zZGNiMzQxNDNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvaGlnaC1h dmFpbGFiaWxpdHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaGlnaC1hdmFpbGFiaWxpdHku c2dtbApAQCAtMjEwNCw2ICsyMTA0LDEyIEBAIGlmICghdHJpZ2dlcmVkKQogICAgIHNlcnZl ci4gVGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfZGF0YWJhc2U8L3N0cnVjdG5hbWU+IHN5c3Rl bSB2aWV3IGFsc28gY29udGFpbnMKICAgICBzdW1tYXJ5IGluZm9ybWF0aW9uLgogICAgPC9w YXJhPgorCisgICA8cGFyYT4KKyAgICBVc2VycyBjYW4gY29udHJvbCB3aGV0aGVyIGEgbG9n IG1lc3NhZ2UgaXMgcHJvZHVjZWQgd2hlbiBXQUwgcmVwbGF5IGlzIHdhaXRpbmcKKyAgICBs b25nZXIgdGhhbiA8dmFybmFtZT5kZWFkbG9ja190aW1lb3V0PC92YXJuYW1lPiBmb3IgY29u ZmxpY3RzLiBUaGlzCisgICAgaXMgY29udHJvbGxlZCBieSB0aGUgPHhyZWYgbGlua2VuZD0i Z3VjLWxvZy1yZWNvdmVyeS1jb25mbGljdC13YWl0cyIvPiBwYXJhbWV0ZXIuCisgICA8L3Bh cmE+CiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJob3Qtc3RhbmRieS1hZG1pbiI+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IGU1NDlmYTFkMzAuLjA2Y2Q1 Y2RiYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC0zODA4LDYg KzM4MDgsOCBAQCBMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogewogCUJ1 ZmZlckRlc2MgKmJ1ZkhkcjsKIAljaGFyCSAgICpuZXdfc3RhdHVzID0gTlVMTDsKKwlUaW1l c3RhbXBUeiB3YWl0U3RhcnQgPSAwOworCWJvb2wgICAgICAgIGxvZ2dlZF9yZWNvdmVyeV9j b25mbGljdCA9IGZhbHNlOwogCiAJQXNzZXJ0KEJ1ZmZlcklzUGlubmVkKGJ1ZmZlcikpOwog CUFzc2VydChQaW5Db3VudFdhaXRCdWYgPT0gTlVMTCk7CkBAIC0zODI5LDYgKzM4MzEsMTAg QEAgTG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAogCWJ1ZkhkciA9IEdl dEJ1ZmZlckRlc2NyaXB0b3IoYnVmZmVyIC0gMSk7CiAKKwkvKiBTZXQgd2FpdCBzdGFydCB0 aW1lc3RhbXAgaWYgbG9nZ2luZyBpcyBlbmFibGVkIGFuZCBpbiBob3Qgc3RhbmRieSAqLwor CWlmIChsb2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMgJiYgSW5Ib3RTdGFuZGJ5KQorCQl3 YWl0U3RhcnQgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKIAlmb3IgKDs7KQogCXsKIAkJ dWludDMyCQlidWZfc3RhdGU7CkBAIC0zODgxLDYgKzM4ODcsMTggQEAgTG9ja0J1ZmZlckZv ckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJCQluZXdfc3RhdHVzW2xlbl0gPSAnXDAnOyAv KiB0cnVuY2F0ZSBvZmYgIiB3YWl0aW5nIiAqLwogCQkJfQogCisJCQlpZiAod2FpdFN0YXJ0 ID4gMCAmJiAhbG9nZ2VkX3JlY292ZXJ5X2NvbmZsaWN0KQorCQkJeworCQkJCVRpbWVzdGFt cFR6IGN1cl90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwkJCQlpZiAoVGltZXN0YW1w RGlmZmVyZW5jZUV4Y2VlZHMod2FpdFN0YXJ0LCBjdXJfdHMsCisJCQkJCQkJCQkJICAgRGVh ZGxvY2tUaW1lb3V0KSkKKwkJCQl7CisJCQkJCUFzc2VydChsb2dfcmVjb3ZlcnlfY29uZmxp Y3Rfd2FpdHMpOworCQkJCQlMb2dSZWNvdmVyeUNvbmZsaWN0KFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfQlVGRkVSUElOLAorCQkJCQkJCQkJCXdhaXRTdGFydCwgY3VyX3RzLCBOVUxM KTsKKwkJCQkJbG9nZ2VkX3JlY292ZXJ5X2NvbmZsaWN0ID0gdHJ1ZTsKKwkJCQl9CisJCQl9 CiAJCQkvKiBQdWJsaXNoIHRoZSBidWZpZCB0aGF0IFN0YXJ0dXAgcHJvY2VzcyB3YWl0cyBv biAqLwogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZChidWZmZXIgLSAxKTsKIAkJ CS8qIFNldCBhbGFybSBhbmQgdGhlbiB3YWl0IHRvIGJlIHNpZ25hbGVkIGJ5IFVucGluQnVm ZmVyKCkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA1MmIyODA5ZGFj Li4yNTM3MmI2MDBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zOSw2 ICszOSw3IEBACiBpbnQJCQl2YWN1dW1fZGVmZXJfY2xlYW51cF9hZ2U7CiBpbnQJCQltYXhf c3RhbmRieV9hcmNoaXZlX2RlbGF5ID0gMzAgKiAxMDAwOwogaW50CQkJbWF4X3N0YW5kYnlf c3RyZWFtaW5nX2RlbGF5ID0gMzAgKiAxMDAwOworYm9vbAkJbG9nX3JlY292ZXJ5X2NvbmZs aWN0X3dhaXRzID0gZmFsc2U7CiAKIHN0YXRpYyBIVEFCICpSZWNvdmVyeUxvY2tMaXN0czsK IApAQCAtNDksNiArNTAsNyBAQCBzdGF0aWMgdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhWaXJ0dWFsWElEcyhWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdGxpcwogc3RhdGlj IHZvaWQgU2VuZFJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKFByb2NTaWduYWxSZWFz b24gcmVhc29uKTsKIHN0YXRpYyBYTG9nUmVjUHRyIExvZ0N1cnJlbnRSdW5uaW5nWGFjdHMo UnVubmluZ1RyYW5zYWN0aW9ucyBDdXJyUnVubmluZ1hhY3RzKTsKIHN0YXRpYyB2b2lkIExv Z0FjY2Vzc0V4Y2x1c2l2ZUxvY2tzKGludCBubG9ja3MsIHhsX3N0YW5kYnlfbG9jayAqbG9j a3MpOworc3RhdGljIGNvbnN0IGNoYXIgKmdldF9yZWNvdmVyeV9jb25mbGljdF9kZXNjKFBy b2NTaWduYWxSZWFzb24gcmVhc29uKTsKIAogLyoKICAqIEtlZXAgdHJhY2sgb2YgYWxsIHRo ZSBsb2NrcyBvd25lZCBieSBhIGdpdmVuIHRyYW5zYWN0aW9uLgpAQCAtMjE1LDE1ICsyMTcs NzcgQEAgV2FpdEV4Y2VlZHNNYXhTdGFuZGJ5RGVsYXkodWludDMyIHdhaXRfZXZlbnRfaW5m bykKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBMb2cgdGhlIHJlY292ZXJ5IGNvbmZs aWN0LgorICoKKyAqIHdhaXRfc3RhcnQgaXMgdGhlIHRpbWVzdGFtcCB3aGVuIHRoZSBjYWxs ZXIgc3RhcnRlZCB0byB3YWl0LgorICogY3VyX3RzIGlzIHRoZSB0aW1lc3RhbXAgd2hlbiB0 aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGNhbGxlZC4KKyAqIFRoaXMgZnVuY3Rpb24gYWxzbyBy ZXBvcnRzIHRoZSBkZXRhaWxzIGFib3V0IHRoZSBjb25mbGljdGluZworICogcHJvY2VzcyBp ZHMgaWYgYW55LgorICovCit2b2lkCitMb2dSZWNvdmVyeUNvbmZsaWN0KFByb2NTaWduYWxS ZWFzb24gcmVhc29uLCBUaW1lc3RhbXBUeiB3YWl0X3N0YXJ0LAorCQkJCQlUaW1lc3RhbXBU eiBjdXJfdHMsIFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0X2xpc3QpCit7CisJbG9uZwkJ c2VjczsKKwlpbnQJCQl1c2VjczsKKwlsb25nCQltc2VjczsKKwlTdHJpbmdJbmZvRGF0YSBi dWY7CisJaW50CW5wcm9jcyA9IDA7CisKKwlUaW1lc3RhbXBEaWZmZXJlbmNlKHdhaXRfc3Rh cnQsIGN1cl90cywgJnNlY3MsICZ1c2Vjcyk7CisJbXNlY3MgPSBzZWNzICogMTAwMCArIHVz ZWNzIC8gMTAwMDsKKwl1c2VjcyA9IHVzZWNzICUgMTAwMDsKKworCWlmICh3YWl0X2xpc3Qp CisJeworCQlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CisKKworCQkvKiBjb25zdHJ1 Y3QgYSBzdHJpbmcgb2YgbGlzdCBvZiB0aGUgY29uZmxpY3RlZCBwcm9jZXNzZXMgKi8KKwkJ dnhpZHMgPSB3YWl0X2xpc3Q7CisJCXdoaWxlIChWaXJ0dWFsVHJhbnNhY3Rpb25JZElzVmFs aWQoKnZ4aWRzKSkKKwkJeworCQkJUEdQUk9DICpwcm9jID0gQmFja2VuZElkR2V0UHJvYyh2 eGlkcy0+YmFja2VuZElkKTsKKworCQkJaWYgKHByb2MpCisJCQl7CisJCQkJaWYgKG5wcm9j cyA9PSAwKQorCQkJCXsKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisJCQkJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIiVkIiwgcHJvYy0+cGlkKTsKKwkJCQl9CisJCQkJZWxzZQor CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIsICVkIiwgcHJvYy0+cGlkKTsKKworCQkJ CW5wcm9jcysrOworCQkJfQorCisJCQl2eGlkcysrOworCQl9CisKKwl9CisKKwllcmVwb3J0 KExPRywKKwkJCWVycm1zZygicmVjb3Zlcnkgc3RpbGwgd2FpdGluZyBhZnRlciAlbGQuJTAz ZCBtczogJXMiLAorCQkJCQltc2VjcywgdXNlY3MsIF8oZ2V0X3JlY292ZXJ5X2NvbmZsaWN0 X2Rlc2MocmVhc29uKSkpLAorCQkJd2FpdF9saXN0ID4gMCA/IGVycmRldGFpbF9sb2dfcGx1 cmFsKCJDb25mbGljdGluZyBwcm9jZXNzOiAlcy4iLAorCQkJCQkJCQkJCQkJCSJDb25mbGlj dGluZyBwcm9jZXNzZXM6ICVzLiIsCisJCQkJCQkJCQkJCQkJbnByb2NzLCBidWYuZGF0YSkg OiAwKTsKKwlpZiAobnByb2NzID4gMCkKKwkJcGZyZWUoYnVmLmRhdGEpOworfQorCiAvKgog ICogVGhpcyBpcyB0aGUgbWFpbiBleGVjdXRpb25lciBmb3IgYW55IHF1ZXJ5IGJhY2tlbmQg dGhhdCBjb25mbGljdHMgd2l0aAogICogcmVjb3ZlcnkgcHJvY2Vzc2luZy4gSnVkZ2VtZW50 IGhhcyBhbHJlYWR5IGJlZW4gcGFzc2VkIG9uIGl0IHdpdGhpbgogICogYSBzcGVjaWZpYyBy bWdyLiBIZXJlIHdlIGp1c3QgaXNzdWUgdGhlIG9yZGVycyB0byB0aGUgcHJvY3MuIFRoZSBw cm9jcwogICogdGhlbiB0aHJvdyB0aGUgcmVxdWlyZWQgZXJyb3IgYXMgaW5zdHJ1Y3RlZC4K ICAqCi0gKiBJZiByZXBvcnRfd2FpdGluZyBpcyB0cnVlLCAid2FpdGluZyIgaXMgcmVwb3J0 ZWQgaW4gUFMgZGlzcGxheSBpZiBuZWNlc3NhcnkuCi0gKiBJZiB0aGUgY2FsbGVyIGhhcyBh bHJlYWR5IHJlcG9ydGVkIHRoYXQsIHJlcG9ydF93YWl0aW5nIHNob3VsZCBiZSBmYWxzZS4K LSAqIE90aGVyd2lzZSwgIndhaXRpbmciIGlzIHJlcG9ydGVkIHR3aWNlIHVuZXhwZWN0ZWRs eS4KKyAqIElmIHJlcG9ydF93YWl0aW5nIGlzIHRydWUsICJ3YWl0aW5nIiBpcyByZXBvcnRl ZCBpbiBQUyBkaXNwbGF5IGFuZCBsb2cKKyAqIHRoZSB3YWl0cyBmb3IgdGhlIHJlY292ZXJ5 IGNvbmZsaWN0IGlmIG5lY2Vzc2FyeS4gIElmIHRoZSBjYWxsZXIgaGFzIGFscmVhZHkKKyAq IHJlcG9ydGVkIHRoYXQsIHJlcG9ydF93YWl0aW5nIHNob3VsZCBiZSBmYWxzZS4gIE90aGVy d2lzZSwgYm90aCBhcmUgcmVwb3J0ZWQKKyAqIHR3aWNlIHVuZXhwZWN0ZWRseS4KICAqLwog c3RhdGljIHZvaWQKIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZp cnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKQEAgLTIzMiwxMiArMjk2LDE0IEBAIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlv bklkICp3YWl0bGlzdCwKIHsKIAlUaW1lc3RhbXBUeiB3YWl0U3RhcnQgPSAwOwogCWNoYXIJ ICAgKm5ld19zdGF0dXM7CisJYm9vbCBsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QgPSBmYWxz ZTsKIAogCS8qIEZhc3QgZXhpdCwgdG8gYXZvaWQgYSBrZXJuZWwgY2FsbCBpZiB0aGVyZSdz IG5vIHdvcmsgdG8gYmUgZG9uZS4gKi8KIAlpZiAoIVZpcnR1YWxUcmFuc2FjdGlvbklkSXNW YWxpZCgqd2FpdGxpc3QpKQogCQlyZXR1cm47CiAKLQlpZiAocmVwb3J0X3dhaXRpbmcpCisJ LyogU2V0IHRoZSB3YWl0IHN0YXJ0IHRpbWVzdGFtcCBmb3IgcmVwb3J0aW5nICovCisJaWYg KHJlcG9ydF93YWl0aW5nICYmIChsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QgfHwgdXBkYXRl X3Byb2Nlc3NfdGl0bGUpKQogCQl3YWl0U3RhcnQgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7 CiAJbmV3X3N0YXR1cyA9IE5VTEw7CQkJLyogd2UgaGF2ZW4ndCBjaGFuZ2VkIHRoZSBwcyBk aXNwbGF5ICovCiAKQEAgLTI0OSwyMyArMzE1LDQzIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIAkJ Lyogd2FpdCB1bnRpbCB0aGUgdmlydHVhbCB4aWQgaXMgZ29uZSAqLwogCQl3aGlsZSAoIVZp cnR1YWxYYWN0TG9jaygqd2FpdGxpc3QsIGZhbHNlKSkKIAkJewotCQkJLyoKLQkJCSAqIFJl cG9ydCB2aWEgcHMgaWYgd2UgaGF2ZSBiZWVuIHdhaXRpbmcgZm9yIG1vcmUgdGhhbiA1MDAg bXNlYwotCQkJICogKHNob3VsZCB0aGF0IGJlIGNvbmZpZ3VyYWJsZT8pCi0JCQkgKi8KLQkJ CWlmICh1cGRhdGVfcHJvY2Vzc190aXRsZSAmJiBuZXdfc3RhdHVzID09IE5VTEwgJiYgcmVw b3J0X3dhaXRpbmcgJiYKLQkJCQlUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyh3YWl0U3Rh cnQsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKLQkJCQkJCQkJCQkgICA1MDApKQorCQkJaWYg KHdhaXRTdGFydCA+IDApCiAJCQl7Ci0JCQkJY29uc3QgY2hhciAqb2xkX3N0YXR1czsKLQkJ CQlpbnQJCQlsZW47Ci0KLQkJCQlvbGRfc3RhdHVzID0gZ2V0X3BzX2Rpc3BsYXkoJmxlbik7 Ci0JCQkJbmV3X3N0YXR1cyA9IChjaGFyICopIHBhbGxvYyhsZW4gKyA4ICsgMSk7Ci0JCQkJ bWVtY3B5KG5ld19zdGF0dXMsIG9sZF9zdGF0dXMsIGxlbik7Ci0JCQkJc3RyY3B5KG5ld19z dGF0dXMgKyBsZW4sICIgd2FpdGluZyIpOwotCQkJCXNldF9wc19kaXNwbGF5KG5ld19zdGF0 dXMpOwotCQkJCW5ld19zdGF0dXNbbGVuXSA9ICdcMCc7IC8qIHRydW5jYXRlIG9mZiAiIHdh aXRpbmciICovCisJCQkJVGltZXN0YW1wVHogY3VyX3RzID0gMDsKKwkJCQlib29sIG1heWJl X2xvZ19jb25mbGljdCA9CisJCQkJCShsb2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMgJiYg IWxvZ2dlZF9yZWNvdmVyeV9jb25mbGljdCk7CisJCQkJYm9vbCBtYXliZV91cGRhdGVfcHN0 aXRsZSA9CisJCQkJCSh1cGRhdGVfcHJvY2Vzc190aXRsZSAmJiBuZXdfc3RhdHVzID09IE5V TEwpOworCisJCQkJLyogR2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcCBpZiBub3QgcmVwb3J0 IHlldCAqLworCQkJCWlmIChtYXliZV9sb2dfY29uZmxpY3QgfHwgbWF5YmVfdXBkYXRlX3Bz dGl0bGUpCisJCQkJCWN1cl90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCQkJCS8q IExvZyB0aGUgcmVjb3ZlcnkgY29uZmxpY3QgaWYgbmVjZXNzYXJ5ICovCisJCQkJaWYgKG1h eWJlX2xvZ19jb25mbGljdCAmJgorCQkJCQlUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyh3 YWl0U3RhcnQsIGN1cl90cywgRGVhZGxvY2tUaW1lb3V0KSkKKwkJCQl7CisJCQkJCUxvZ1Jl Y292ZXJ5Q29uZmxpY3QocmVhc29uLCB3YWl0U3RhcnQsIGN1cl90cywgd2FpdGxpc3QpOwor CQkJCQlsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QgPSB0cnVlOworCQkJCX0KKworCQkJCS8q CisJCQkJICogUmVwb3J0IHZpYSBwcyBpZiB3ZSBoYXZlIGJlZW4gd2FpdGluZyBmb3IgbW9y ZSB0aGFuIDUwMCBtc2VjCisJCQkJICogKHNob3VsZCB0aGF0IGJlIGNvbmZpZ3VyYWJsZT8p CisJCQkJICovCisJCQkJaWYgKG1heWJlX3VwZGF0ZV9wc3RpdGxlICYmCisJCQkJCVRpbWVz dGFtcERpZmZlcmVuY2VFeGNlZWRzKHdhaXRTdGFydCwgY3VyX3RzLCA1MDApKQorCQkJCXsK KwkJCQkJY29uc3QgY2hhciAqb2xkX3N0YXR1czsKKwkJCQkJaW50CQkJbGVuOworCisJCQkJ CW9sZF9zdGF0dXMgPSBnZXRfcHNfZGlzcGxheSgmbGVuKTsKKwkJCQkJbmV3X3N0YXR1cyA9 IChjaGFyICopIHBhbGxvYyhsZW4gKyA4ICsgMSk7CisJCQkJCW1lbWNweShuZXdfc3RhdHVz LCBvbGRfc3RhdHVzLCBsZW4pOworCQkJCQlzdHJjcHkobmV3X3N0YXR1cyArIGxlbiwgIiB3 YWl0aW5nIik7CisJCQkJCXNldF9wc19kaXNwbGF5KG5ld19zdGF0dXMpOworCQkJCQluZXdf c3RhdHVzW2xlbl0gPSAnXDAnOyAvKiB0cnVuY2F0ZSBvZmYgIiB3YWl0aW5nIiAqLworCQkJ CX0KIAkJCX0KIAogCQkJLyogSXMgaXQgdGltZSB0byBraWxsIGl0PyAqLwpAQCAtMzk4LDkg KzQ4NCwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJp ZCkKICAqCiAgKiBEZWFkbG9ja3MgaW52b2x2aW5nIHRoZSBTdGFydHVwIHByb2Nlc3MgYW5k IGFuIG9yZGluYXJ5IGJhY2tlbmQgcHJvY2VzcwogICogd2lsbCBiZSBkZXRlY3RlZCBieSB0 aGUgZGVhZGxvY2sgZGV0ZWN0b3Igd2l0aGluIHRoZSBvcmRpbmFyeSBiYWNrZW5kLgorICoK KyAqIGFscmVhZHlfbG9nZ2VkIGlzIHVzZWQgdG8gc2V0IHRoZSBkZWFkbG9jayB0aW1lb3V0 IGZvciBsb2dnaW5nIHB1cnBvc2UKKyAqIG9ubHkgd2hlbiB0aGUgbWVzc2FnZSBoYXMgbm90 IGJlZW4gbG9nZ2VkIHlldC4KICAqLwogdm9pZAotUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RX aXRoTG9jayhMT0NLVEFHIGxvY2t0YWcpCitSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhM b2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBhbHJlYWR5X2xvZ2dlZCkKIHsKIAlUaW1lc3Rh bXBUeiBsdGltZTsKIApAQCAtNDA4LDcgKzQ5NywzNSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZykKIAogCWx0aW1lID0gR2V0U3RhbmRieUxp bWl0VGltZSgpOwogCi0JaWYgKEdldEN1cnJlbnRUaW1lc3RhbXAoKSA+PSBsdGltZSkKKwlp ZiAobHRpbWUgPT0gMCB8fCBHZXRDdXJyZW50VGltZXN0YW1wKCkgPCBsdGltZSkKKwl7CisJ CUVuYWJsZVRpbWVvdXRQYXJhbXMgdGltZW91dHNbMl07CisJCWludCBjbnQgPSAwOworCisJ CS8qCisJCSAqIFdhaXQgKG9yIHdhaXQgYWdhaW4pIHVudGlsIGx0aW1lCisJCSAqLworCQlp ZiAobHRpbWUgIT0gMCkKKwkJeworCQkJdGltZW91dHNbY250XS5pZCA9IFNUQU5EQllfTE9D S19USU1FT1VUOworCQkJdGltZW91dHNbY250XS50eXBlID0gVE1QQVJBTV9BVDsKKwkJCXRp bWVvdXRzW2NudF0uZmluX3RpbWUgPSBsdGltZTsKKwkJCWNudCsrOworCQl9CisKKwkJLyog QWxzbywgc2V0IGRlYWRsb2NrIHRpbWVvdXQgZm9yIGxvZ2dpbmcgcHVycG9zZSBpZiBuZWNl c3NhcnkgKi8KKwkJaWYgKGxvZ19yZWNvdmVyeV9jb25mbGljdF93YWl0cyAmJiAhYWxyZWFk eV9sb2dnZWQpCisJCXsKKwkJCXRpbWVvdXRzW2NudF0uaWQgPSBTVEFOREJZX1RJTUVPVVQ7 CisJCQl0aW1lb3V0c1tjbnRdLnR5cGUgPSBUTVBBUkFNX0FGVEVSOworCQkJdGltZW91dHNb Y250XS5kZWxheV9tcyA9IERlYWRsb2NrVGltZW91dDsKKwkJCWNudCsrOworCQl9CisKKwkJ aWYgKGNudCA+IDApCisJCQllbmFibGVfdGltZW91dHModGltZW91dHMsIGNudCk7CisJfQor CWVsc2UKIAl7CiAJCS8qCiAJCSAqIFdlJ3JlIGFscmVhZHkgYmVoaW5kLCBzbyBjbGVhciBh IHBhdGggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KQEAgLTQxOSwyNiArNTM2LDE1IEBAIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2soTE9DS1RBRyBsb2NrdGFnKQogCiAJCS8q CiAJCSAqIFByZXZlbnQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMo KSBmcm9tIHJlcG9ydGluZwotCQkgKiAid2FpdGluZyIgaW4gUFMgZGlzcGxheSBieSBkaXNh YmxpbmcgaXRzIGFyZ3VtZW50IHJlcG9ydF93YWl0aW5nCi0JCSAqIGJlY2F1c2UgdGhlIGNh bGxlciwgV2FpdE9uTG9jaygpLCBoYXMgYWxyZWFkeSByZXBvcnRlZCB0aGF0LgorCQkgKiAi d2FpdGluZyIgaW4gUFMgZGlzcGxheSBhbmQgbG9nZ2luZyByZWNvdmVyeSBjb25mbGljdCBi eSBkaXNhYmxpbmcKKwkJICogaXRzIGFyZ3VtZW50IHJlcG9ydF93YWl0aW5nIGJlY2F1c2Ug dGhlIGNhbGxlcnMgbWF5IGhhdmUgYWxyZWFkeQorCQkgKiByZXBvcnRlZCB0aGF0LgogCQkg Ki8KIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoYmFja2VuZHMs CiAJCQkJCQkJCQkJCSAgIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAkJCQkJ CQkJCQkJICAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUsCiAJCQkJCQkJ CQkJCSAgIGZhbHNlKTsKIAl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogV2FpdCAob3Igd2Fp dCBhZ2FpbikgdW50aWwgbHRpbWUKLQkJICovCi0JCUVuYWJsZVRpbWVvdXRQYXJhbXMgdGlt ZW91dHNbMV07Ci0KLQkJdGltZW91dHNbMF0uaWQgPSBTVEFOREJZX0xPQ0tfVElNRU9VVDsK LQkJdGltZW91dHNbMF0udHlwZSA9IFRNUEFSQU1fQVQ7Ci0JCXRpbWVvdXRzWzBdLmZpbl90 aW1lID0gbHRpbWU7Ci0JCWVuYWJsZV90aW1lb3V0cyh0aW1lb3V0cywgMSk7Ci0JfQogCiAJ LyogV2FpdCB0byBiZSBzaWduYWxlZCBieSB0aGUgcmVsZWFzZSBvZiB0aGUgUmVsYXRpb24g TG9jayAqLwogCVByb2NXYWl0Rm9yU2lnbmFsKFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9j a3RhZ190eXBlKTsKQEAgLTExMTYsMyArMTIyMiwzNiBAQCBMb2dTdGFuZGJ5SW52YWxpZGF0 aW9ucyhpbnQgbm1zZ3MsIFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1zZ3MsCiAJCQkJ CSBubXNncyAqIHNpemVvZihTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlKSk7CiAJWExvZ0lu c2VydChSTV9TVEFOREJZX0lELCBYTE9HX0lOVkFMSURBVElPTlMpOwogfQorCisvKiBSZXR1 cm4gdGhlIGRlc2NyaXB0aW9uIG9mIHJlY292ZXJ5IGNvbmZsaWN0ICovCitzdGF0aWMgY29u c3QgY2hhciAqCitnZXRfcmVjb3ZlcnlfY29uZmxpY3RfZGVzYyhQcm9jU2lnbmFsUmVhc29u IHJlYXNvbikKK3sKKwljb25zdCBjaGFyICpyZWFzb25EZXNjID0gZ2V0dGV4dF9ub29wKCJ1 bmtub3duIHJlYXNvbiIpOworCisJc3dpdGNoIChyZWFzb24pCisJeworCQljYXNlIFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgorCQkJcmVhc29uRGVzYyA9IGdldHRl eHRfbm9vcCgicmVjb3ZlcnkgY29uZmxpY3Qgb24gYnVmZmVyIHBpbiIpOworCQkJYnJlYWs7 CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLOgorCQkJcmVhc29uRGVz YyA9IGdldHRleHRfbm9vcCgicmVjb3ZlcnkgY29uZmxpY3Qgb24gbG9jayIpOworCQkJYnJl YWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgorCQkJ cmVhc29uRGVzYyA9IGdldHRleHRfbm9vcCgicmVjb3ZlcnkgY29uZmxpY3Qgb24gdGFibGVz cGFjZSIpOworCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9T TkFQU0hPVDoKKwkJCXJlYXNvbkRlc2MgPSBnZXR0ZXh0X25vb3AoInJlY292ZXJ5IGNvbmZs aWN0IG9uIHNuYXBzaG90Iik7CisJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0s6CisJCQlyZWFzb25EZXNjID0gZ2V0dGV4dF9u b29wKCJyZWNvdmVyeSBjb25mbGljdCBvbiBidWZmZXIgZGVhZGxvY2siKTsKKwkJCWJyZWFr OworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCQlyZWFz b25EZXNjID0gZ2V0dGV4dF9ub29wKCJyZWNvdmVyeSBjb25mbGljdCBvbiBkYXRhYmFzZSIp OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmVh c29uRGVzYzsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDg4NTY2YmQ5ZmEu LjZkMDg3MjZiZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTA2Myw4ICsx MDYzLDEwIEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaywgTG9ja01ldGhvZCBs b2NrTWV0aG9kVGFibGUpCiAJTFdMb2NrCSAgICpwYXJ0aXRpb25Mb2NrID0gTG9ja0hhc2hQ YXJ0aXRpb25Mb2NrKGhhc2hjb2RlKTsKIAlQUk9DX1FVRVVFICp3YWl0UXVldWUgPSAmKGxv Y2stPndhaXRQcm9jcyk7CiAJTE9DS01BU0sJbXlIZWxkTG9ja3MgPSBNeVByb2MtPmhlbGRM b2NrczsKKwlUaW1lc3RhbXBUeiBzdGFuZGJ5V2FpdFN0YXJ0ID0gMDsKIAlib29sCQllYXJs eV9kZWFkbG9jayA9IGZhbHNlOwogCWJvb2wJCWFsbG93X2F1dG92YWN1dW1fY2FuY2VsID0g dHJ1ZTsKKwlib29sICAgICAgICBsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QgPSBmYWxzZTsK IAlQcm9jV2FpdFN0YXR1cyBteVdhaXRTdGF0dXM7CiAJUEdQUk9DCSAgICpwcm9jOwogCVBH UFJPQwkgICAqbGVhZGVyID0gTXlQcm9jLT5sb2NrR3JvdXBMZWFkZXI7CkBAIC0xMjYwLDYg KzEyNjIsMTEgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrLCBMb2NrTWV0aG9k IGxvY2tNZXRob2RUYWJsZSkKIAkJZWxzZQogCQkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIoREVB RExPQ0tfVElNRU9VVCwgRGVhZGxvY2tUaW1lb3V0KTsKIAl9CisJZWxzZSBpZiAobG9nX3Jl Y292ZXJ5X2NvbmZsaWN0X3dhaXRzKQorCXsKKwkJLyogU2V0IHdhaXQgc3RhcnQgdGltZXN0 YW1wIGlmIGxvZ2dpbmcgaXMgZW5hYmxlZCAqLworCQlzdGFuZGJ5V2FpdFN0YXJ0ID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOworCX0KIAogCS8qCiAJICogSWYgc29tZWJvZHkgd2FrZXMg dXMgYmV0d2VlbiBMV0xvY2tSZWxlYXNlIGFuZCBXYWl0TGF0Y2gsIHRoZSBsYXRjaApAQCAt MTI4MCw3ICsxMjg3LDMzIEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaywgTG9j a01ldGhvZCBsb2NrTWV0aG9kVGFibGUpCiAJCWlmIChJbkhvdFN0YW5kYnkpCiAJCXsKIAkJ CS8qIFNldCBhIHRpbWVyIGFuZCB3YWl0IGZvciB0aGF0IG9yIGZvciB0aGUgTG9jayB0byBi ZSBncmFudGVkICovCi0JCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKGxvY2Fs bG9jay0+dGFnLmxvY2spOworCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhs b2NhbGxvY2stPnRhZy5sb2NrLCBsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QpOworCisJCQlp ZiAoc3RhbmRieVdhaXRTdGFydCA+IDAgJiYgIWxvZ2dlZF9yZWNvdmVyeV9jb25mbGljdCkK KwkJCXsKKwkJCQlUaW1lc3RhbXBUeiBjdXJfdHMgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7 CisJCQkJaWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YW5kYnlXYWl0U3RhcnQs IGN1cl90cywKKwkJCQkJCQkJCQkgICBEZWFkbG9ja1RpbWVvdXQpKQorCQkJCXsKKwkJCQkJ VmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4aWRzOworCQkJCQlpbnQJY250OworCisJCQkJCUFz c2VydChsb2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMpOworCQkJCQl2eGlkcyA9CUdldExv Y2tDb25mbGljdHMoJmxvY2FsbG9jay0+dGFnLmxvY2ssCisJCQkJCQkJCQkJCSBBY2Nlc3NF eGNsdXNpdmVMb2NrLCAmY250KTsKKworCQkJCQkvKgorCQkJCQkgKiBMb2cgdGhlIHJlY292 ZXJ5IGNvbmZsaWN0IGlmIHRoZXJlIGlzIHN0aWxsIHZpcnR1YWwgdHJhbnNhY3Rpb24KKwkJ CQkJICogY29uZmxpY3Rpbmcgd2l0aCB0aGUgbG9jay4KKwkJCQkJICovCisJCQkJCWlmIChj bnQgPiAwKQorCQkJCQl7CisJCQkJCQlMb2dSZWNvdmVyeUNvbmZsaWN0KFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9DSywKKwkJCQkJCQkJCQkJc3RhbmRieVdhaXRTdGFydCwgY3Vy X3RzLCB2eGlkcyk7CisJCQkJCQlsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QgPSB0cnVlOwor CQkJCQl9CisJCQkJfQorCQkJfQogCQl9CiAJCWVsc2UKIAkJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj LmMKaW5kZXggNTk2YmNiN2I4NC4uZTU1YTI4YjFjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CkBAIC0xNTcwLDcgKzE1NzAsMTUgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfYm9vbCBDb25m aWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwK LQorCXsKKwkJeyJsb2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMiLCBQR0NfU0lHSFVQLCBM T0dHSU5HX1dIQVQsCisJCQlnZXR0ZXh0X25vb3AoIkxvZ3Mgc3RhbmRieSByZWNvdmVyeSBj b25mbGljdCB3YWl0cy4iKSwKKwkJCU5VTEwKKwkJfSwKKwkJJmxvZ19yZWNvdmVyeV9jb25m bGljdF93YWl0cywKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJ eyJsb2dfaG9zdG5hbWUiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIQVQsCiAJCQlnZXR0ZXh0 X25vb3AoIkxvZ3MgdGhlIGhvc3QgbmFtZSBpbiB0aGUgY29ubmVjdGlvbiBsb2dzLiIpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmlu ZGV4IDljYjU3MWY3Y2MuLjU2MjU2ODFlOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTU1Myw2ICs1NTMsOCBAQAogCQkJ CQkjICAgJSUgPSAnJScKIAkJCQkJIyBlLmcuICc8JXUlJSVkPiAnCiAjbG9nX2xvY2tfd2Fp dHMgPSBvZmYJCQkjIGxvZyBsb2NrIHdhaXRzID49IGRlYWRsb2NrX3RpbWVvdXQKKyNsb2df cmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMgPSBvZmYJIyBsb2cgc3RhbmRieSByZWNvdmVyeSBj b25mbGljdCB3YWl0cworCQkJCQkjID49IGRlYWRsb2NrX3RpbWVvdXQKICNsb2dfcGFyYW1l dGVyX21heF9sZW5ndGggPSAtMQkJIyB3aGVuIGxvZ2dpbmcgc3RhdGVtZW50cywgbGltaXQg bG9nZ2VkCiAJCQkJCSMgYmluZC1wYXJhbWV0ZXIgdmFsdWVzIHRvIE4gYnl0ZXM7CiAJCQkJ CSMgLTEgbWVhbnMgcHJpbnQgaW4gZnVsbCwgMCBkaXNhYmxlcwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaAppbmRleCBmYWFmMWQzODE3Li44NTdhYTFmODFkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaApAQCAtMjMsNiArMjMsNyBAQAogZXh0ZXJuIGludAl2YWN1dW1fZGVmZXJfY2xlYW51 cF9hZ2U7CiBleHRlcm4gaW50CW1heF9zdGFuZGJ5X2FyY2hpdmVfZGVsYXk7CiBleHRlcm4g aW50CW1heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxheTsKK2V4dGVybiBib29sCWxvZ19yZWNv dmVyeV9jb25mbGljdF93YWl0czsKIAogZXh0ZXJuIHZvaWQgSW5pdFJlY292ZXJ5VHJhbnNh Y3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duUmVjb3ZlcnlU cmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwpAQCAtMzIsMTIgKzMzLDE0IEBAIGV4dGVy biB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9u SWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFRhYmxlc3BhY2UoT2lkIHRzaWQpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoRGF0YWJhc2UoT2lkIGRiaWQpOwogCi1leHRlcm4gdm9pZCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZyk7CitleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywg Ym9vbCBhbHJlYWR5X2xvZ2dlZCk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhCdWZmZXJQaW4odm9pZCk7CiBleHRlcm4gdm9pZCBDaGVja1JlY292ZXJ5Q29u ZmxpY3REZWFkbG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YW5kYnlEZWFkTG9ja0hhbmRs ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFuZGJ5VGltZW91dEhhbmRsZXIodm9pZCk7CiBl eHRlcm4gdm9pZCBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpOworZXh0ZXJuIHZv aWQgTG9nUmVjb3ZlcnlDb25mbGljdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwgVGltZXN0 YW1wVHogd2FpdF9zdGFydCwKKwkJCQkJCQkJVGltZXN0YW1wVHogY3VyX3RzLCBWaXJ0dWFs VHJhbnNhY3Rpb25JZCAqd2FpdF9saXN0KTsKIAogLyoKICAqIFN0YW5kYnkgUm1nciAoUk1f U1RBTkRCWV9JRCkK --------------CEBB940A36F2BE2DB5B00015--