Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vq5qO-004TgJ-2S for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Feb 2026 08:45:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vq5pO-002t3U-0F for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Feb 2026 08:44:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vq5pN-002t3M-1P for pgsql-hackers@lists.postgresql.org; Wed, 11 Feb 2026 08:44:06 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vq5pL-0000000062r-2tRJ for pgsql-hackers@postgresql.org; Wed, 11 Feb 2026 08:44:05 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-79639c2ceb6so35549437b3.1 for ; Wed, 11 Feb 2026 00:44:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770799444; cv=none; d=google.com; s=arc-20240605; b=dxKHc9cI7YXvUhoTQhsGQg2cmjLE4hVmt+8KvZAu58zRTlwSJDxwF1U98Rc6hylXZx PLN8KkRQ6kv0rR61eOd1XuP+gFD6Jy8g4/IiXfEv8APNChSPW/GoxmRbdpCH/iupN10T tp3IC1tcHsdPrn5X7ndiHg8lVX0lgdnuc3i8B7mG61g4uCOjEMatc1cXkql8w1x3yEJY yS/0Mko2bGi7DJKMkDKuIP3C9k6iBgMAX4Md9/NGzm8VZC2HOQcBFMJjdGNyTuaKfP/x wxgmaeoZ2rLHLIo4VkrvukuK4ZC5FKgatUNA/iJRLHU/Q+m2hpc/dldeBfr+MtVkPawe oOxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=0ML2FJ9/JDG3S5HkARp7W9SZ1qk5WMJ97IIspHjIl8c=; fh=IGuDNqhJFnhnT5+mP8Bm2McT7BDaMvAB5UN7bJYnOH8=; b=OvkzHMX1VBzoX7z4skWwKBavSUczJ1H+46FnGQxSPjErrA3ON8of+QlLCUpHauMbP9 RoZTMWKhdyUPCvGBAqq6WCswsHrUHhfAqSydn4baPl9jP5I8wvDfjQ+oSi6j2t7SZI4Y gMN0ceehJYoVqU3k1NIHh7g+c7pdh0S3A8taQv+/eEmv6I6iwV8KTUh1gh1HTnKLWgcC 2bRlqYnEAThZYEUbO3HweJidkD+IzBJVtDW22c8SbiNykJvZWe/Radq01acvNUOqwKe7 lr72oYTiIZJipazv0KZCdFSuPNymoMwR56MNIr5NPqeti2YWyhPg/3mIv1enjuQs6Z8h pfCg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1770799444; x=1771404244; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0ML2FJ9/JDG3S5HkARp7W9SZ1qk5WMJ97IIspHjIl8c=; b=Nr+adVGaJe8Dca7EcJ/YVRJvgaAZrLjLPs2+53wCI2QN2gqC5mDXpM1+hXndgOCN6S kSG1ZYDoTxbesQ2NmfUz3EjyixLHv2pB6IVru7jqttXtxN4BMn7IoILsUCL9re6AocU9 w7xyqCv4FMNYDn9WWPYL1wC2gYimV2W12ij2U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770799444; x=1771404244; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0ML2FJ9/JDG3S5HkARp7W9SZ1qk5WMJ97IIspHjIl8c=; b=pIXC07vtjMW9ZCxJ79/vrCB7yYMcuuZYWQBro2yZpBRdcUGhfsWEV2c+6bPRXeYzE/ tzNz1DCxd5EwTkfhb6jN3MSNCvTKmIsBkTqXugmswpVCLp++gYzf8IqfVCmyuzByJu22 7MqTII1DpECPHztsbjVEgKZpZYb6/FX7cYvRn7aiUD/e6Kw53G+aBlTksBcWTfu1gzHG yc7nmiVmaupoKJOg9JSqICMUkGl9PVcB6BisZxw/hf1ZY0zOlqBypgkdvWOyZh56wME0 WYrO4krj+0qJlWGUV4IpGHHbyqC3qAIOpHceudNP9pAFYFbsk9L1zUGHIRAQvWj77Zpt FSYw== X-Gm-Message-State: AOJu0YxrclbtrR6lqEAdxp4noVij2MPco6i6PQVH94OQWUVIlYQFREqQ wwDOOQb0gjgtmtq/MZq7mQCPkE4CW7TYCsgr7klYWt7tYDy+PG8t/xEqLUlCkTmZBtOzfSigjMT 9KIpeywIgBINKhorRryPCdbYZo96Hk+X8LewPoaO8mA== X-Gm-Gg: AZuq6aLJaMIwtfx93P2KHD4g6ROyIa5vsjHKQxEhg3ZWSYaverlWOxr+S7FJMiOfUhF JrlB6puyknBv/RmTRJtXwURK05SQ/jykb6bfNhbvXKtFLPaep4AB2rYGSNxlue52ZXQQp6ok5IW 86A8IiD/fKCM6RnOt1gW1/UK0i7Es06eRA62RuZ9WDHIMiCN0D8TPh5RTy7fRGL3WG4+Z3+F9ch K1qtjOlNWB02IFuqVLtnnzpYK14ciSthYsBx9hNELKMkRVv2eriZPr5FbXBbHCaFds7Lw9WtFu/ Qf+Jv29o+sKS6aGV X-Received: by 2002:a05:690c:4c01:b0:794:fc73:5d2e with SMTP id 00721157ae682-7966ab048b4mr14707977b3.54.1770799443443; Wed, 11 Feb 2026 00:44:03 -0800 (PST) MIME-Version: 1.0 References: <0cbf5d34-f117-456f-bcc0-50fa9a8eafba@gmail.com> In-Reply-To: From: Anthonin Bonnefoy Date: Wed, 11 Feb 2026 09:43:51 +0100 X-Gm-Features: AZwV_Qh91SjaG6gVgMkMlfGVIB2URuP0wKO4qu446IgcIIqMcfA8mwSjBMvLbsY Message-ID: Subject: Re: Propagate XLogFindNextRecord error to callers To: Mircea Cadariu Cc: PostgreSQL Hackers , Japin Li Content-Type: multipart/mixed; boundary="000000000000cc3d1e064a885f4b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cc3d1e064a885f4b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 9, 2026 at 1:15=E2=80=AFPM Mircea Cadariu wrote: > In XLogNextRecord, right before the above code, we do *errormsg =3D NULL.= Should this be done also in XLogFindNextRecord in the patch? > > If so, what about even extracting a helper method which will be called fr= om both places? XLogReadRecord may already have consumed errormsg_deferred and set errormsg. We can't set it to NULL, or that would erase a valid error message. A simplification would have been to remove processing the deferred error processing from XLogNextRecord and leave it to XLogFindNextRecord, but there are some calls to XLogNextRecord (like in xlogprefetcher.c), so being able to get the error message when calling XLogNextRecord is necessary. > A nit for the commit message: Propage -> Propagate Fixed --000000000000cc3d1e064a885f4b Content-Type: application/octet-stream; name="v4-0001-Propagate-errormsg-to-XLogFindNextRecord-caller.patch" Content-Disposition: attachment; filename="v4-0001-Propagate-errormsg-to-XLogFindNextRecord-caller.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlhs555o0 RnJvbSA5YmQ4YTcwYmIwOTBmMjAxODJjOWEyMWMyNmRjZjgwM2MwZTYxMDI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogRnJpLCAxMiBEZWMgMjAyNSAwOTo1NjowMCArMDEwMApTdWJq ZWN0OiBQcm9wYWdhdGUgZXJyb3Jtc2cgdG8gWExvZ0ZpbmROZXh0UmVjb3JkIGNhbGxlcgoKQ3Vy cmVudGx5LCBYTG9nRmluZE5leHRSZWNvcmQgZXJyb3Jtc2cgaXMgaWdub3JlZCBhbmQgY2FsbGVy cyB3aWxsIG9ubHkKb3V0cHV0IGEgZ2VuZXJpYyAnY291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNv cmQnIG1lc3NhZ2Ugd2l0aG91dApkZXRhaWxzLgpBZGRpdGlvbmFsbHksIGludmFsaWQgcGFnZSBo ZWFkZXIgd29uJ3QgZ28gdGhyb3VnaCBYTG9nUmVhZFJlY29yZCwKbGVhdmluZyB0aGUgZXJyb3Ig aW4gc3RhdGUtPmVycm9ybXNnX2J1Zi4KClRoaXMgcGF0Y2ggcHJvcGFnYXRlcyBYTG9nRmluZE5l eHRSZWNvcmQncyBlcnJvciBtZXNzYWdlIHRvIHRoZSBjYWxsZXJzCmFuZCBkaXNwbGF5cyBpdC4g SW4gY2FzZSBvZiBhbiBpbnZhbGlkIHBhZ2UgaGVhZGVyLCB0aGUgZXJyb3Jtc2cgaXMKZmlsbGVk IHdpdGggZXJyb3Jtc2dfYnVmIGNvbnRlbnQuCi0tLQogY29udHJpYi9wZ193YWxpbnNwZWN0L3Bn X3dhbGluc3BlY3QuYyAgIHwgMTYgKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlYWRlci5jIHwgMTYgKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgIHwgMTcgKysrKysrKysrKysrLS0tLS0KIHNyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgICAgICAgICB8IDEyICsrKysrKysrKy0tLQogc3Jj L2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsICAgICAgIHwgMjMgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVhZGVyLmggICAgICAgICB8ICAyICst CiA2IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMgYi9jb250cmli L3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jCmluZGV4IDcxNmEwOTIyYzZiLi45OGRkMzFi NjliYiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYwor KysgYi9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jCkBAIC05Nyw2ICs5Nyw3 IEBAIEluaXRYTG9nUmVhZGVyU3RhdGUoWExvZ1JlY1B0ciBsc24pCiAJWExvZ1JlYWRlclN0YXRl ICp4bG9ncmVhZGVyOwogCVJlYWRMb2NhbFhMb2dQYWdlTm9XYWl0UHJpdmF0ZSAqcHJpdmF0ZV9k YXRhOwogCVhMb2dSZWNQdHIJZmlyc3RfdmFsaWRfcmVjb3JkOworCWNoYXIJICAgKmVycm9ybXNn OwogCiAJLyoKIAkgKiBSZWFkaW5nIFdBTCBiZWxvdyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgZmly c3Qgc2VnbWVudHMgaXNuJ3QgYWxsb3dlZC4KQEAgLTEyNCwxMiArMTI1LDE5IEBAIEluaXRYTG9n UmVhZGVyU3RhdGUoWExvZ1JlY1B0ciBsc24pCiAJCQkJIGVycmRldGFpbCgiRmFpbGVkIHdoaWxl IGFsbG9jYXRpbmcgYSBXQUwgcmVhZGluZyBwcm9jZXNzb3IuIikpKTsKIAogCS8qIGZpcnN0IGZp bmQgYSB2YWxpZCByZWNwdHIgdG8gc3RhcnQgZnJvbSAqLwotCWZpcnN0X3ZhbGlkX3JlY29yZCA9 IFhMb2dGaW5kTmV4dFJlY29yZCh4bG9ncmVhZGVyLCBsc24pOworCWZpcnN0X3ZhbGlkX3JlY29y ZCA9IFhMb2dGaW5kTmV4dFJlY29yZCh4bG9ncmVhZGVyLCBsc24sICZlcnJvcm1zZyk7CiAKIAlp ZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKGZpcnN0X3ZhbGlkX3JlY29yZCkpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJZXJybXNnKCJjb3VsZCBub3QgZmluZCBhIHZhbGlkIHJlY29yZCBhZnRlciAlWC8l MDhYIiwKLQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxzbikpKTsKKwl7CisJCWlmIChlcnJvcm1z ZykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycm1zZygiY291bGQgbm90IGZpbmQgYSB2YWxp ZCByZWNvcmQgYWZ0ZXIgJVgvJTA4WDogJXMiLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxz biksIGVycm9ybXNnKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycm1zZygi Y291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNvcmQgYWZ0ZXIgJVgvJTA4WCIsCisJCQkJCQkgICBM U05fRk9STUFUX0FSR1MobHNuKSkpOworCX0KIAogCXJldHVybiB4bG9ncmVhZGVyOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jCmluZGV4IDAzYWRhOGFhMGM1Li41YTE1 MWJiZjI3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIuYwpAQCAtMTM5 MSwxMiArMTM5MSwxMSBAQCBYTG9nUmVhZGVyUmVzZXRFcnJvcihYTG9nUmVhZGVyU3RhdGUgKnN0 YXRlKQogICogWExvZ1JlYWRSZWNvcmQoKSB3aWxsIHJlYWQgdGhlIG5leHQgdmFsaWQgcmVjb3Jk LgogICovCiBYTG9nUmVjUHRyCi1YTG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIpCitYTG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0 YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIsIGNoYXIgKiplcnJvcm1zZykKIHsKIAlYTG9n UmVjUHRyCXRtcFJlY1B0cjsKIAlYTG9nUmVjUHRyCWZvdW5kID0gSW52YWxpZFhMb2dSZWNQdHI7 CiAJWExvZ1BhZ2VIZWFkZXIgaGVhZGVyOwotCWNoYXIJICAgKmVycm9ybXNnOwogCiAJQXNzZXJ0 KFhMb2dSZWNQdHJJc1ZhbGlkKFJlY1B0cikpOwogCkBAIC0xNDgxLDcgKzE0ODAsNyBAQCBYTG9n RmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIp CiAJICogb3Igd2UganVzdCBqdW1wZWQgb3ZlciB0aGUgcmVtYWluaW5nIGRhdGEgb2YgYSBjb250 aW51YXRpb24uCiAJICovCiAJWExvZ0JlZ2luUmVhZChzdGF0ZSwgdG1wUmVjUHRyKTsKLQl3aGls ZSAoWExvZ1JlYWRSZWNvcmQoc3RhdGUsICZlcnJvcm1zZykgIT0gTlVMTCkKKwl3aGlsZSAoWExv Z1JlYWRSZWNvcmQoc3RhdGUsIGVycm9ybXNnKSAhPSBOVUxMKQogCXsKIAkJLyogcGFzdCB0aGUg cmVjb3JkIHdlJ3ZlIGZvdW5kLCBicmVhayBvdXQgKi8KIAkJaWYgKFJlY1B0ciA8PSBzdGF0ZS0+ UmVhZFJlY1B0cikKQEAgLTE0OTYsNiArMTQ5NSwxNyBAQCBYTG9nRmluZE5leHRSZWNvcmQoWExv Z1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIpCiBlcnI6CiAJWExvZ1JlYWRl ckludmFsUmVhZFN0YXRlKHN0YXRlKTsKIAorCS8qCisJICogd2UgbWF5IGhhdmUgcmVwb3J0ZWQg ZXJyb3JzIGR1ZSB0byBpbnZhbGlkIFdBTCBoZWFkZXIsIHByb3BhZ2F0ZSB0aGUKKwkgKiBlcnJv ciBtZXNzYWdlIHRvIHRoZSBjYWxsZXIuCisJICovCisJaWYgKHN0YXRlLT5lcnJvcm1zZ19kZWZl cnJlZCkKKwl7CisJCWlmIChzdGF0ZS0+ZXJyb3Jtc2dfYnVmWzBdICE9ICdcMCcpCisJCQkqZXJy b3Jtc2cgPSBzdGF0ZS0+ZXJyb3Jtc2dfYnVmOworCQlzdGF0ZS0+ZXJyb3Jtc2dfZGVmZXJyZWQg PSBmYWxzZTsKKwl9CisKIAlyZXR1cm4gSW52YWxpZFhMb2dSZWNQdHI7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKaW5kZXggMmQ4ZjU3MDk5ZmQuLmY1MDk3NmE3Zjc2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtOTE3LDYgKzkxNyw3 IEBAIFN1bW1hcml6ZVdBTChUaW1lTGluZUlEIHRsaSwgWExvZ1JlY1B0ciBzdGFydF9sc24sIGJv b2wgZXhhY3QsCiAJV2FsU3VtbWFyeUlPIGlvOwogCUJsb2NrUmVmVGFibGUgKmJydGFiID0gQ3Jl YXRlRW1wdHlCbG9ja1JlZlRhYmxlKCk7CiAJYm9vbAkJZmFzdF9mb3J3YXJkID0gdHJ1ZTsKKwlj aGFyCSAgICplcnJvcm1zZzsKIAogCS8qIEluaXRpYWxpemUgcHJpdmF0ZSBkYXRhIGZvciB4bG9n cmVhZGVyLiAqLwogCXByaXZhdGVfZGF0YSA9IHBhbGxvYzBfb2JqZWN0KFN1bW1hcml6ZXJSZWFk TG9jYWxYTG9nUHJpdmF0ZSk7CkBAIC05NjgsNyArOTY5LDcgQEAgU3VtbWFyaXplV0FMKFRpbWVM aW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFjdCwKIAl9CiAJZWxzZQog CXsKLQkJc3VtbWFyeV9zdGFydF9sc24gPSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlciwg c3RhcnRfbHNuKTsKKwkJc3VtbWFyeV9zdGFydF9sc24gPSBYTG9nRmluZE5leHRSZWNvcmQoeGxv Z3JlYWRlciwgc3RhcnRfbHNuLCAmZXJyb3Jtc2cpOwogCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlk KHN1bW1hcnlfc3RhcnRfbHNuKSkKIAkJewogCQkJLyoKQEAgLTk5Nyw5ICs5OTgsMTYgQEAgU3Vt bWFyaXplV0FMKFRpbWVMaW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFj dCwKIAkJCQlzd2l0Y2hfbHNuID0geGxvZ3JlYWRlci0+RW5kUmVjUHRyOwogCQkJfQogCQkJZWxz ZQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQllcnJtc2coImNvdWxkIG5vdCBmaW5kIGEgdmFs aWQgcmVjb3JkIGFmdGVyICVYLyUwOFgiLAotCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhzdGFy dF9sc24pKSk7CisJCQl7CisJCQkJaWYgKGVycm9ybXNnKQorCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCWVycm1zZygiY291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNvcmQgYWZ0ZXIgJVgvJTA4 WDogJXMiLAorCQkJCQkJCQkgICBMU05fRk9STUFUX0FSR1Moc3RhcnRfbHNuKSwgZXJyb3Jtc2cp KTsKKwkJCQllbHNlCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJybXNnKCJjb3VsZCBu b3QgZmluZCBhIHZhbGlkIHJlY29yZCBhZnRlciAlWC8lMDhYIiwKKwkJCQkJCQkJICAgTFNOX0ZP Uk1BVF9BUkdTKHN0YXJ0X2xzbikpKTsKKwkJCX0KIAkJfQogCiAJCS8qIFdlIHNob3VsZG4ndCBn byBiYWNrd2FyZC4gKi8KQEAgLTEwMTIsNyArMTAyMCw2IEBAIFN1bW1hcml6ZVdBTChUaW1lTGlu ZUlEIHRsaSwgWExvZ1JlY1B0ciBzdGFydF9sc24sIGJvb2wgZXhhY3QsCiAJd2hpbGUgKDEpCiAJ ewogCQlpbnQJCQlibG9ja19pZDsKLQkJY2hhcgkgICAqZXJyb3Jtc2c7CiAJCVhMb2dSZWNvcmQg KnJlY29yZDsKIAkJdWludDgJCXJtaWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVt cC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IGYz NDQ2Mzg1ZDZhLi41MDNiYTc2ZTU1OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3Bn X3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0xMjEy LDExICsxMjEyLDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlwZ19mYXRhbCgi b3V0IG9mIG1lbW9yeSB3aGlsZSBhbGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIik7 CiAKIAkvKiBmaXJzdCBmaW5kIGEgdmFsaWQgcmVjcHRyIHRvIHN0YXJ0IGZyb20gKi8KLQlmaXJz dF9yZWNvcmQgPSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlcl9zdGF0ZSwgcHJpdmF0ZS5z dGFydHB0cik7CisJZmlyc3RfcmVjb3JkID0gWExvZ0ZpbmROZXh0UmVjb3JkKHhsb2dyZWFkZXJf c3RhdGUsIHByaXZhdGUuc3RhcnRwdHIsICZlcnJvcm1zZyk7CiAKIAlpZiAoIVhMb2dSZWNQdHJJ c1ZhbGlkKGZpcnN0X3JlY29yZCkpCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBhIHZhbGlk IHJlY29yZCBhZnRlciAlWC8lMDhYIiwKLQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3Rh cnRwdHIpKTsKKwl7CisJCWlmIChlcnJvcm1zZykKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmlu ZCBhIHZhbGlkIHJlY29yZCBhZnRlciAlWC8lMDhYOiAlcyIsCisJCQkJCSBMU05fRk9STUFUX0FS R1MocHJpdmF0ZS5zdGFydHB0ciksIGVycm9ybXNnKTsKKwkJZWxzZQorCQkJcGdfZmF0YWwoImNv dWxkIG5vdCBmaW5kIGEgdmFsaWQgcmVjb3JkIGFmdGVyICVYLyUwOFgiLAorCQkJCQkgTFNOX0ZP Uk1BVF9BUkdTKHByaXZhdGUuc3RhcnRwdHIpKTsKKwl9CiAKIAkvKgogCSAqIERpc3BsYXkgYSBt ZXNzYWdlIHRoYXQgd2UncmUgc2tpcHBpbmcgZGF0YSBpZiBgZnJvbWAgd2Fzbid0IGEgcG9pbnRl cgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDVkYjVkMjAxMzZmLi4xODk4ODQ4ZTQx OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtNiw2ICs2LDcgQEAgdXNlIHdhcm5p bmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBGaWxlOjpDb3B5 OwogCiBwcm9ncmFtX2hlbHBfb2soJ3BnX3dhbGR1bXAnKTsKIHByb2dyYW1fdmVyc2lvbl9vaygn cGdfd2FsZHVtcCcpOwpAQCAtMjM2LDYgKzIzNywyOCBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJ cXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNvcmQgYXQvLAogCSdlcnJvcnMgYXJlIHNob3duIHdp dGggLS1xdWlldCcpOwogCisjIFdyb25nIFdBTCB2ZXJzaW9uLiBXZSBjb3B5IGFuIGV4aXN0aW5n IHdhbCBmaWxlIGFuZCBzZXQgdGhlCisjIHBhZ2UncyBtYWdpYyB2YWx1ZSB0byAwMDAwLgorewor CW15ICRicm9rZW5fd2FsX2RpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyX3No b3J0KCk7CisJbXkgJGJyb2tlbl93YWwgPSAiJGJyb2tlbl93YWxfZGlyLyRzdGFydF93YWxmaWxl IjsKKwljb3B5KCRub2RlLT5kYXRhX2RpciAuICcvcGdfd2FsLycgLiAkc3RhcnRfd2FsZmlsZSwg JGJyb2tlbl93YWwpCisJCXx8IGRpZSAiY29weWluZyAkc3RhcnRfd2FsZmlsZSAkISI7CisKKwlt eSAkZmg7CisJb3BlbigkZmgsICcrPCcsICRicm9rZW5fd2FsKTsKKwlzeXNzZWVrKCRmaCwgMCwg MCkKKwkJb3IgQkFJTF9PVVQoInN5c3NlZWsgZmFpbGVkOiAkISIpOworCXN5c3dyaXRlKCRmaCwg cGFjaygiUyIsIDApKQorCQlvciBCQUlMX09VVCgic3lzd3JpdGUgZmFpbGVkOiAkISIpOworCWNs b3NlKCRmaCk7CisKKwljb21tYW5kX2ZhaWxzX2xpa2UoCisJCVsgJ3BnX3dhbGR1bXAnLCAkYnJv a2VuX3dhbCBdLAorCQkJcXIvaW52YWxpZCBtYWdpYyBudW1iZXIgMDAwMC9pLAorCQkJJ2RldGFp bGVkIGVycm9yIG1lc3NhZ2Ugc2hvd24gZm9yIGludmFsaWQgV0FMIHBhZ2UgbWFnaWMnCisJKTsK K30KIAogIyBUZXN0IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBk YXRhIGlmIGBmcm9tYAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29y ZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVhZGVyLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZ3JlYWRlci5oCmluZGV4IDgwZjFhNTQ4ZTA4Li41NjdkZjMzYWM4ZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWFkZXIuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZ3JlYWRlci5oCkBAIC0zNDIsNyArMzQyLDcgQEAgZXh0ZXJuIHZvaWQg WExvZ1JlYWRlclNldERlY29kZUJ1ZmZlcihYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLAogCiAvKiBQ b3NpdGlvbiB0aGUgWExvZ1JlYWRlciB0byBnaXZlbiByZWNvcmQgKi8KIGV4dGVybiB2b2lkIFhM b2dCZWdpblJlYWQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIpOwot ZXh0ZXJuIFhMb2dSZWNQdHIgWExvZ0ZpbmROZXh0UmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqc3Rh dGUsIFhMb2dSZWNQdHIgUmVjUHRyKTsKK2V4dGVybiBYTG9nUmVjUHRyIFhMb2dGaW5kTmV4dFJl Y29yZChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0ciwgY2hhciAqKmVy cm9ybXNnKTsKIAogLyogUmV0dXJuIHZhbHVlcyBmcm9tIFhMb2dQYWdlUmVhZENCLiAqLwogdHlw ZWRlZiBlbnVtIFhMb2dQYWdlUmVhZFJlc3VsdAotLSAKMi41Mi4wCgo= --000000000000cc3d1e064a885f4b--