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 1vx1aq-00AycJ-1f for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 11:37:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vx1Zp-000ON9-2V for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 11:36:42 +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 1vx1Zp-000OMz-0g for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 11:36:41 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vx1Zl-000000000hA-3CCk for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 11:36:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1772451393; bh=7sFhPeZdW67CE1k9w+834niR/EfrasLAjdfnQNZqc0s=; h=Message-ID:Date:User-Agent:Subject:To:References:From:In-Reply-To: From; b=WTfnf/qII0yoIjBhFiyTfZP0qMHvs55o/YEnbAJ4petWH+gVuEh57c+ZgeIpzkkS3 WRTJKmFshaDUqWEmbi8YOaEk4ht6jsFqvpuzt7SXt6MvwGhUIqOuU7xkMsD4Db2d+w oeaTX9fI2YT2NLbW96beSnBuNTeZ+HMnlCJDeJH35pMi8UD65hbz0LHEHEKzqPvDK0 6P3cg9OIbPbEvFv91fXF4FDqL1EOz3ANX7qt3KyFebSeS0DS68ucmxtU7G0k668gmq clgXmGTOaN/Yf/Qylq1BEAMex1qsiv3q1ysMxJP4vOkKpVLYriKEtISEp4+wCcy4mz GvTwYLUmLNJsA== Received: from [10.8.4.130] (unknown [95.170.154.43]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.bondar@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id A3AF7606DF for ; Mon, 2 Mar 2026 14:36:33 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------xRQa74TXh4Iyr0HU1AnbFzrc" Message-ID: Date: Mon, 2 Mar 2026 18:35:05 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Pgbench: remove synchronous prepare To: pgsql-hackers@lists.postgresql.org References: <2da56b59-acb6-4ee3-af6b-6e800115dc7f@postgrespro.ru> Content-Language: en-US From: Dmitrii Bondar In-Reply-To: <2da56b59-acb6-4ee3-af6b-6e800115dc7f@postgrespro.ru> X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2026/03/02 10:17:00 #28238882 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------xRQa74TXh4Iyr0HU1AnbFzrc Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Add docs, fix a function number. On 1/27/26 10:34 AM, Dmitrii Bondar wrote: > Hi, Hackers! > > I was testing a connection pooler with pgbench and pgbench froze. I > checked the traffic and noticed that pgbench just blocks the execution > while it is waiting the response to the prepare command. > > To reproduce the problem, it is enough to run pgbouncer with the > session pooling mode and use more clients than the pool size. With the > pool size of 20: > > pgbench -h localhost -p 6432 --client=21 --jobs=1 -S -T 1000 -P 1 > postgres --protocol=prepared > > Pgbench with the extended protocol flag does not have this > issue because pgbench sends the whole parse/bind/execute/sync packet > sequence at once and waits for the result asynchronously. I suggest > implementing this behavior for the prepared protocol too. > > I attached the pgbouncer configuration to reproduce the issue and the > proposed fix. I prefer to add a new function to libpqfe instead of > changing the existing behavior or adding a new state to pgbench. > Although it is largely duplicated code, it looks to be as non-invasive > as possible. Implementation and naming need to be discussed. > > > Tests for pgbench passed. I made small changes to the expected output. > > > Regards, > Dmitrii Bondar. --------------xRQa74TXh4Iyr0HU1AnbFzrc Content-Type: text/x-patch; charset=UTF-8; name="0002-Remove-synchronous-prepare-from-pgbench.patch" Content-Disposition: attachment; filename="0002-Remove-synchronous-prepare-from-pgbench.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZTQzNzlhODUyZjFmOGYyNGNlYWQ1YjNhNWU3YjkwYWU5Y2RhYzU2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEbWl0cmlpIEJvbmRhciA8ZC5ib25kYXJAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAxODowODozMCArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBSZW1vdmUgc3luY2hyb25vdXMgcHJlcGFyZSBmcm9tIHBnYmVuY2gK ClBnYmVuY2ggd2FpdHMgZm9yIHRoZSByZXN1bHQgb2YgYSBwcmVwYXJlIHBhY2tldCBzeW5j aHJvbm91c2x5CndoZW4gdGhlIHByZXBhcmVkIHByb3RvY29sIGZsYWcgaXMgcHJvdmlkZWQu IEZvciB0aGlzIHJlYXNvbgppdCBpcyBpbXBvc3NpYmxlIHRvIHVzZSBpdCB3aXRoIHNvbWUg cG9vbGVycyAoc3VjaCBhcyBQZ0JvdW5jZXIpCmluIHRoZSBzZXNzaW9uIHBvb2xpbmcgbW9k ZS4KSXQgaXMgcmVwbGFjZWQgYnkgdGhlIGZ1bGwgc2VxdWVuY2Ugb2YgcGFyc2UvYmluZC9l eGVjdXRlL3N5bmMKcGFja2V0cy4gVGhpcyBiZWhhdmlvdXIgaXMgc2ltaWxhciB0byBwZ2Jl bmNoIHdpdGggdGhlIGV4dGVuZGVkCnByb3RvY29sIGZsYWcuCi0tLQogZG9jL3NyYy9zZ21s L2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysrCiBz cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAgICAgICB8IDIyICsrKysr KysrLS0KIHNyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIHwg IDEgLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgICAgICAgICAgICAgfCAg MSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgICAgICAgICAgICAgICB8IDQ2 ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5o ICAgICAgICAgICAgICB8ICA5ICsrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xpYnBx LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCBlMDhkNDY3ODJjYy4uMWNk OWMzNTU4YTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9saWJwcS5zZ21sCkBAIC01MzI5LDYgKzUzMjksNyBAQCB1bnNpZ25lZCBj aGFyICpQUXVuZXNjYXBlQnl0ZWEoY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwgc2l6ZV90 ICp0b19sZW5ndGgpOwogICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQYXJh bXMiLz4sCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRQcmVwYXJlIi8+LAogICAg PHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQcmVwYXJlZCIvPiwKKyAgIDx4cmVm IGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFBCRVMiLz4sCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJw cS1QUXNlbmREZXNjcmliZVByZXBhcmVkIi8+LAogICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFzZW5kRGVzY3JpYmVQb3J0YWwiLz4sCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNl bmRDbG9zZVByZXBhcmVkIi8+LCBhbmQKQEAgLTU0NTAsNiArNTQ1MSwzNCBAQCBpbnQgUFFz ZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAg PC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUXNlbmRQ QkVTIj4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRc2VuZFBCRVM8L2Z1bmN0aW9uPjxpbmRl eHRlcm0+PHByaW1hcnk+UFFzZW5kUEJFUzwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+ CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU2VuZHMgYSByZXF1 ZXN0IHRvIHByZXBhcmUgYW5kIGV4ZWN1dGUgYSBzdGF0ZW1lbnQgd2l0aCBnaXZlbgorICAg ICAgIHBhcmFtZXRlcnMsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIHJlc3VsdChzKS4KKzxz eW5vcHNpcz4KK2ludCBQUXNlbmRQQkVTKFBHY29ubiAqY29ubiwKKyAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnN0bXROYW1lLAorICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcXVl cnksCisgICAgICAgICAgICAgICBpbnQgblBhcmFtcywKKyAgICAgICAgICAgICAgIGNvbnN0 IE9pZCAqcGFyYW1UeXBlcywKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICpw YXJhbVZhbHVlcywKKyAgICAgICAgICAgICAgIGNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAor ICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUZvcm1hdHMsCisgICAgICAgICAgICAg ICBpbnQgcmVzdWx0Rm9ybWF0KTsKKzwvc3lub3BzaXM+CisKKyAgICAgICBUaGlzIGlzIHNp bWlsYXIgdG8gPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQcmVwYXJlZCIvPiwg YnV0IHRoZQorICAgICAgIHN0YXRlbWVudCBpcyBwcmVwYXJlZCBhcyBwYXJ0IG9mIHRoZSBz YW1lIHJlcXVlc3QgdXNpbmcgdGhlIHN1cHBsaWVkCisgICAgICAgcXVlcnkgc3RyaW5nLiBJ bnRlcm5hbGx5LCBpdCBzZW5kcyBhIFBhcnNlLCBCaW5kLCBFeGVjdXRlLCBhbmQgU3luYwor ICAgICAgIG1lc3NhZ2Ugc2VxdWVuY2UuIFRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMgYXJl IGhhbmRsZWQgaWRlbnRpY2FsbHkgdG8KKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UWV4ZWNQYXJhbXMiLz4uCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAg PC92YXJsaXN0ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUXNlbmRE ZXNjcmliZVByZXBhcmVkIj4KICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRc2VuZERlc2NyaWJl UHJlcGFyZWQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFzZW5kRGVzY3JpYmVQ cmVwYXJlZDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CiAKQEAgLTU1NDAsNiArNTU2 OSw3IEBAIGludCBQUXNlbmRDbG9zZVBvcnRhbChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIg KnBvcnRhbE5hbWUpOwogICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFF1ZXJ5 UGFyYW1zIi8+LAogICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFByZXBhcmUi Lz4sCiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQcmVwYXJlZCIv PiwKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRQQkVTIi8+LAogICAgICAg IDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZERlc2NyaWJlUHJlcGFyZWQiLz4sCiAgICAg ICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kRGVzY3JpYmVQb3J0YWwiLz4sCiAgICAg ICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kQ2xvc2VQcmVwYXJlZCIvPiwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCmluZGV4IDFkYWU5MThjYzA5Li43NDliOTM0N2E2ZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j CkBAIC0zMTc5LDEyICszMTc5LDI2IEBAIHNlbmRDb21tYW5kKENTdGF0ZSAqc3QsIENvbW1h bmQgKmNvbW1hbmQpCiAJewogCQljb25zdCBjaGFyICpwYXJhbXNbTUFYX0FSR1NdOwogCi0J CXByZXBhcmVDb21tYW5kKHN0LCBzdC0+Y29tbWFuZCk7CiAJCWdldFF1ZXJ5UGFyYW1zKCZz dC0+dmFyaWFibGVzLCBjb21tYW5kLCBwYXJhbXMpOwogCi0JCXBnX2xvZ19kZWJ1ZygiY2xp ZW50ICVkIHNlbmRpbmcgJXMiLCBzdC0+aWQsIGNvbW1hbmQtPnByZXBuYW1lKTsKLQkJciA9 IFBRc2VuZFF1ZXJ5UHJlcGFyZWQoc3QtPmNvbiwgY29tbWFuZC0+cHJlcG5hbWUsIGNvbW1h bmQtPmFyZ2MgLSAxLAotCQkJCQkJCQlwYXJhbXMsIE5VTEwsIE5VTEwsIDApOworCQlpZiAo IXN0LT5wcmVwYXJlZCkKKwkJCWFsbG9jQ1N0YXRlUHJlcGFyZWQoc3QpOworCisJCWlmICgh c3QtPnByZXBhcmVkW3N0LT51c2VfZmlsZV1bc3QtPmNvbW1hbmRdKQorCQl7CisJCQlyID0g UFFzZW5kUEJFUyhzdC0+Y29uLCBjb21tYW5kLT5wcmVwbmFtZSwKKwkJCQkJCSAgIGNvbW1h bmQtPmFyZ3ZbMF0sIGNvbW1hbmQtPmFyZ2MgLSAxLCBOVUxMLAorCQkJCQkJICAgcGFyYW1z LCBOVUxMLCBOVUxMLCAwKTsKKwkJCWlmICghcikKKwkJCQlwZ19sb2dfZXJyb3IoIiVzIiwg UFFlcnJvck1lc3NhZ2Uoc3QtPmNvbikpOworCQkJc3QtPnByZXBhcmVkW3N0LT51c2VfZmls ZV1bc3QtPmNvbW1hbmRdID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXBnX2xvZ19k ZWJ1ZygiY2xpZW50ICVkIHNlbmRpbmcgJXMiLCBzdC0+aWQsIGNvbW1hbmQtPnByZXBuYW1l KTsKKwkJCXIgPSBQUXNlbmRRdWVyeVByZXBhcmVkKHN0LT5jb24sIGNvbW1hbmQtPnByZXBu YW1lLCBjb21tYW5kLT5hcmdjIC0gMSwKKwkJCQkJCQkJCXBhcmFtcywgTlVMTCwgTlVMTCwg MCk7CisJCX0KIAl9CiAJZWxzZQkJCQkJCS8qIHVua25vd24gc3FsIG1vZGUgKi8KIAkJciA9 IDA7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3Nl cnZlci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBs CmluZGV4IGI3Njg1ZWE1ZDIwLi5jMDQ3YjVkMDQ2MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKKysrIGIvc3JjL2Jpbi9wZ2Jl bmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKQEAgLTEyMzEsNyArMTIzMSw2IEBA IG15IEBlcnJvcnMgPSAoCiAJCTIsCiAJCVsKIAkJCXFye0VSUk9SOiAgc3ludGF4IGVycm9y fSwKLQkJCXFye3ByZXBhcmVkIHN0YXRlbWVudCAuKiBkb2VzIG5vdCBleGlzdH0KIAkJXSwK IAkJcXstLSBTUUwgc3ludGF4IGVycm9yCiAgICAgU0VMRUNUIDEgKyA7CmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2V4cG9ydHMudHh0CmluZGV4IGRiYmFlNjQyZDc2Li43ZjY2NjQzMTlkNyAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTIxMCwzICsyMTAsNCBAQCBQUWdldEF1dGhE YXRhSG9vayAgICAgICAgIDIwNwogUFFkZWZhdWx0QXV0aERhdGFIb29rICAgICAyMDgKIFBR ZnVsbFByb3RvY29sVmVyc2lvbiAgICAgMjA5CiBhcHBlbmRQUUV4cEJ1ZmZlclZBICAgICAg IDIxMAorUFFzZW5kUEJFUyAgICAgICAgICAgICAgICAyMTEKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKaW5kZXggMjAzZDM4OGJkYmYuLjE5 ZTQzODFlNmJiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMK KysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCkBAIC0xNjgyLDYgKzE2ODIs NTIgQEAgUFFzZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJCQkJCQkgICByZXN1 bHRGb3JtYXQpOwogfQogCisvKiBQUXNlbmRQQkVTCisgKgkJTGlrZSBQUXNlbmRRdWVyeVBy ZXBhcmVkLCBidXQgaXQgYWxzbyBwcmVwYXJlcyBhIHF1ZXJ5CisgKi8KK2ludAorUFFzZW5k UEJFUyhQR2Nvbm4gKmNvbm4sCisJCSAgIGNvbnN0IGNoYXIgKnN0bXROYW1lLAorCQkgICBj b25zdCBjaGFyICpxdWVyeSwKKwkJICAgaW50IG5QYXJhbXMsCisJCSAgIGNvbnN0IE9pZCAq cGFyYW1UeXBlcywKKwkJICAgY29uc3QgY2hhciAqY29uc3QgKnBhcmFtVmFsdWVzLAorCQkg ICBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKKwkJICAgY29uc3QgaW50ICpwYXJhbUZvcm1h dHMsCisJCSAgIGludCByZXN1bHRGb3JtYXQpCit7CisJaWYgKCFQUXNlbmRRdWVyeVN0YXJ0 KGNvbm4sIHRydWUpKQorCQlyZXR1cm4gMDsKKworCS8qIGNoZWNrIHRoZSBhcmd1bWVudHMg Ki8KKwlpZiAoIXN0bXROYW1lKQorCXsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29u biwgInN0YXRlbWVudCBuYW1lIGlzIGEgbnVsbCBwb2ludGVyIik7CisJCXJldHVybiAwOwor CX0KKwlpZiAoIXF1ZXJ5KQorCXsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNvbW1hbmQgc3RyaW5nIGlzIGEgbnVsbCBwb2ludGVyIik7CisJCXJldHVybiAwOworCX0K KwlpZiAoblBhcmFtcyA8IDAgfHwgblBhcmFtcyA+IFBRX1FVRVJZX1BBUkFNX01BWF9MSU1J VCkKKwl7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJudW1iZXIgb2YgcGFy YW1ldGVycyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQiLAorCQkJCQkJCQlQUV9RVUVSWV9Q QVJBTV9NQVhfTElNSVQpOworCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gUFFzZW5kUXVl cnlHdXRzKGNvbm4sCisJCQkJCQkgICBxdWVyeSwKKwkJCQkJCSAgIHN0bXROYW1lLAorCQkJ CQkJICAgblBhcmFtcywKKwkJCQkJCSAgIHBhcmFtVHlwZXMsCisJCQkJCQkgICBwYXJhbVZh bHVlcywKKwkJCQkJCSAgIHBhcmFtTGVuZ3RocywKKwkJCQkJCSAgIHBhcmFtRm9ybWF0cywK KwkJCQkJCSAgIHJlc3VsdEZvcm1hdCk7Cit9CisKIC8qCiAgKiBQUXNlbmRRdWVyeVN0YXJ0 CiAgKglDb21tb24gc3RhcnR1cCBjb2RlIGZvciBQUXNlbmRRdWVyeSBhbmQgc2libGluZyBy b3V0aW5lcwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKaW5kZXggOTA1ZjJmMzNhYjguLjc3 MjU4M2RjZWE5IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5o CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKQEAgLTUyNSw2ICs1MjUs MTUgQEAgZXh0ZXJuIGludAlQUXNlbmRRdWVyeVByZXBhcmVkKFBHY29ubiAqY29ubiwKIAkJ CQkJCQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJCQkJCWNvbnN0IGludCAqcGFy YW1Gb3JtYXRzLAogCQkJCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KTsKK2V4dGVybiBpbnQJUFFz ZW5kUEJFUyhQR2Nvbm4gKmNvbm4sCisJCQkJCSAgIGNvbnN0IGNoYXIgKnN0bXROYW1lLAor CQkJCQkgICBjb25zdCBjaGFyICpxdWVyeSwKKwkJCQkJICAgaW50IG5QYXJhbXMsCisJCQkJ CSAgIGNvbnN0IE9pZCAqcGFyYW1UeXBlcywKKwkJCQkJICAgY29uc3QgY2hhciAqY29uc3Qg KnBhcmFtVmFsdWVzLAorCQkJCQkgICBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKKwkJCQkJ ICAgY29uc3QgaW50ICpwYXJhbUZvcm1hdHMsCisJCQkJCSAgIGludCByZXN1bHRGb3JtYXQp OwogZXh0ZXJuIGludAlQUXNldFNpbmdsZVJvd01vZGUoUEdjb25uICpjb25uKTsKIGV4dGVy biBpbnQJUFFzZXRDaHVua2VkUm93c01vZGUoUEdjb25uICpjb25uLCBpbnQgY2h1bmtTaXpl KTsKIGV4dGVybiBQR3Jlc3VsdCAqUFFnZXRSZXN1bHQoUEdjb25uICpjb25uKTsKLS0gCjIu NTIuMAoK --------------xRQa74TXh4Iyr0HU1AnbFzrc--