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.94.2) (envelope-from ) id 1rSDJx-00C7lg-IY for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jan 2024 09:43:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rSDJv-00BRnp-V6 for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jan 2024 09:43:51 +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.94.2) (envelope-from ) id 1rSDJv-00BRmk-36 for pgsql-hackers@lists.postgresql.org; Tue, 23 Jan 2024 09:43:51 +0000 Received: from meesny.iki.fi ([195.140.195.201]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rSDJq-002wJE-S7 for pgsql-hackers@lists.postgresql.org; Tue, 23 Jan 2024 09:43:49 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (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) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4TK2GS08F2zyNX; Tue, 23 Jan 2024 11:43:43 +0200 (EET) Content-Type: multipart/mixed; boundary="------------Co7IGj78l3L2T0ImNrmDAEif" Message-ID: Date: Tue, 23 Jan 2024 11:43:43 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Network failure may prevent promotion Content-Language: en-US To: Kyotaro Horiguchi , masao.fujii@gmail.com Cc: andres@anarazel.de, michael@paquier.xyz, pgsql-hackers@lists.postgresql.org References: <20240122212910.llghcvr3x4itlett@awork3.anarazel.de> <20240123.132320.1131416933172930185.horikyota.ntt@gmail.com> <20240123.172410.1596193222420636986.horikyota.ntt@gmail.com> From: Heikki Linnakangas In-Reply-To: <20240123.172410.1596193222420636986.horikyota.ntt@gmail.com> 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. --------------Co7IGj78l3L2T0ImNrmDAEif Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 23/01/2024 10:24, Kyotaro Horiguchi wrote: > Thank you for looking this! > > At Tue, 23 Jan 2024 15:07:10 +0900, Fujii Masao wrote in >> Regarding the patch, here are the review comments. >> >> +/* >> + * Is current process a wal receiver? >> + */ >> +bool >> +IsWalReceiver(void) >> +{ >> + return WalRcv != NULL; >> +} >> >> This looks wrong because WalRcv can be non-NULL in processes other >> than walreceiver. > > Mmm. Sorry for the silly mistake. We can use B_WAL_RECEIVER > instead. I'm not sure if the new function IsWalReceiver() is > required. The expression "MyBackendType == B_WAL_RECEIVER" is quite > descriptive. However, the function does make ProcessInterrupts() more > aligned regarding process types. There's an existing AmWalReceiverProcess() macro too. Let's use that. (See also https://www.postgresql.org/message-id/f3ecd4cb-85ee-4e54-8278-5fabfb3a4ed0%40iki.fi for refactoring in this area) Here's a patch set summarizing the changes so far. They should be squashed, but I kept them separate for now to help with review: 1. revert the revert of 728f86fec6. 2. your walrcv_shutdown_deblocking_v2-2.patch 3. Also replace libpqrcv_PQexec() and libpqrcv_PQgetResult() with the wrappers from libpq-be-fe-helpers.h 4. Replace IsWalReceiver() with AmWalReceiverProcess() >> - pqsignal(SIGTERM, SignalHandlerForShutdownRequest); /* request shutdown */ >> + pqsignal(SIGTERM, WalRcvShutdownSignalHandler); /* request shutdown */ >> >> Can't we just use die(), instead? > > There was a comment explaining the problems associated with exiting > within a signal handler; > > - * Currently, only SIGTERM is of interest. We can't just exit(1) within the > - * SIGTERM signal handler, because the signal might arrive in the middle of > - * some critical operation, like while we're holding a spinlock. Instead, the > > And I think we should keep the considerations it suggests. The patch > removes the comment itself, but it does so because it implements our > standard process exit procedure, which incorporates points suggested > by the now-removed comment. die() doesn't call exit(1). Unless DoingCommandRead is set, but it never is in the walreceiver. It looks just like the new WalRcvShutdownSignalHandler() function. Am I missing something? Hmm, but doesn't bgworker_die() have that problem with exit(1)ing in the signal handler? I also wonder if we should replace SignalHandlerForShutdownRequest() completely with die(), in all processes? The difference is that SignalHandlerForShutdownRequest() uses ShutdownRequestPending, while die() uses ProcDiePending && InterruptPending to indicate that the signal was received. Or do some of the processes want to check for ShutdownRequestPending only at specific places, and don't want to get terminated at the any random CHECK_FOR_INTERRUPTS()? -- Heikki Linnakangas Neon (https://neon.tech) --------------Co7IGj78l3L2T0ImNrmDAEif Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Revert-Revert-libpqwalreceiver-Convert-to-libpq-b.patch" Content-Disposition: attachment; filename*0="v3-0001-Revert-Revert-libpqwalreceiver-Convert-to-libpq-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyN2I5ZjgyODNiMmNhYTdhNDI0M2ZlNTdhOGQxNGExMjczOTZlODBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTE6MDE6MDMgKzAyMDAK U3ViamVjdDogW1BBVENIIHYzIDEvNF0gUmV2ZXJ0ICJSZXZlcnQgImxpYnBxd2FscmVjZWl2 ZXI6IENvbnZlcnQgdG8KIGxpYnBxLWJlLWZlLWhlbHBlcnMuaCIiCgpUaGlzIHJldmVydHMg Y29tbWl0IDIxZWY0ZDRkODk3NTYzYWRiMmY3OTIwYWQ1M2I3MzQ5NTBmMWUwYTQuCi0tLQog Li4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgNTUgKysr LS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGli cHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCA3NzY2OTA3 NGU4Mi4uMjAxYzM2Y2IyMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC0y NCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2Nvbm5lY3QuaCIKICNpbmNsdWRlICJm dW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKKyNpbmNsdWRlICJsaWJwcS9saWJw cS1iZS1mZS1oZWxwZXJzLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTEzMiw3ICsxMzMsNiBA QCBsaWJwcXJjdl9jb25uZWN0KGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBib29sIGxvZ2ljYWws IGJvb2wgbXVzdF91c2VfcGFzc3dvcmQsCiAJCQkJIGNvbnN0IGNoYXIgKmFwcG5hbWUsIGNo YXIgKiplcnIpCiB7CiAJV2FsUmVjZWl2ZXJDb25uICpjb25uOwotCVBvc3RncmVzUG9sbGlu Z1N0YXR1c1R5cGUgc3RhdHVzOwogCWNvbnN0IGNoYXIgKmtleXNbNl07CiAJY29uc3QgY2hh ciAqdmFsc1s2XTsKIAlpbnQJCQlpID0gMDsKQEAgLTE4OCw1NiArMTg4LDE3IEBAIGxpYnBx cmN2X2Nvbm5lY3QoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wgbG9naWNhbCwgYm9vbCBt dXN0X3VzZV9wYXNzd29yZCwKIAlBc3NlcnQoaSA8IHNpemVvZihrZXlzKSk7CiAKIAljb25u ID0gcGFsbG9jMChzaXplb2YoV2FsUmVjZWl2ZXJDb25uKSk7Ci0JY29ubi0+c3RyZWFtQ29u biA9IFBRY29ubmVjdFN0YXJ0UGFyYW1zKGtleXMsIHZhbHMsCi0JCQkJCQkJCQkJCSAvKiBl eHBhbmRfZGJuYW1lID0gKi8gdHJ1ZSk7Ci0JaWYgKFBRc3RhdHVzKGNvbm4tPnN0cmVhbUNv bm4pID09IENPTk5FQ1RJT05fQkFEKQotCQlnb3RvIGJhZF9jb25uZWN0aW9uX2Vycm1zZzsK LQotCS8qCi0JICogUG9sbCBjb25uZWN0aW9uIHVudGlsIHdlIGhhdmUgT0sgb3IgRkFJTEVE IHN0YXR1cy4KLQkgKgotCSAqIFBlciBzcGVjIGZvciBQUWNvbm5lY3RQb2xsLCBmaXJzdCB3 YWl0IHRpbGwgc29ja2V0IGlzIHdyaXRlLXJlYWR5LgotCSAqLwotCXN0YXR1cyA9IFBHUkVT X1BPTExJTkdfV1JJVElORzsKLQlkbwotCXsKLQkJaW50CQkJaW9fZmxhZzsKLQkJaW50CQkJ cmM7Ci0KLQkJaWYgKHN0YXR1cyA9PSBQR1JFU19QT0xMSU5HX1JFQURJTkcpCi0JCQlpb19m bGFnID0gV0xfU09DS0VUX1JFQURBQkxFOwotI2lmZGVmIFdJTjMyCi0JCS8qIFdpbmRvd3Mg bmVlZHMgYSBkaWZmZXJlbnQgdGVzdCB3aGlsZSB3YWl0aW5nIGZvciBjb25uZWN0aW9uLW1h ZGUgKi8KLQkJZWxzZSBpZiAoUFFzdGF0dXMoY29ubi0+c3RyZWFtQ29ubikgPT0gQ09OTkVD VElPTl9TVEFSVEVEKQotCQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9DT05ORUNURUQ7Ci0jZW5k aWYKLQkJZWxzZQotCQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7Ci0KLQkJcmMg PSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1f REVBVEggfCBXTF9MQVRDSF9TRVQgfCBpb19mbGFnLAotCQkJCQkJCSAgIFBRc29ja2V0KGNv bm4tPnN0cmVhbUNvbm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9M SUJQUVdBTFJFQ0VJVkVSX0NPTk5FQ1QpOwotCi0JCS8qIEludGVycnVwdGVkPyAqLwotCQlp ZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0J CQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOwotCQl9Ci0KLQkJLyogSWYgc29ja2V0IGlz IHJlYWR5LCBhZHZhbmNlIHRoZSBsaWJwcSBzdGF0ZSBtYWNoaW5lICovCi0JCWlmIChyYyAm IGlvX2ZsYWcpCi0JCQlzdGF0dXMgPSBQUWNvbm5lY3RQb2xsKGNvbm4tPnN0cmVhbUNvbm4p OwotCX0gd2hpbGUgKHN0YXR1cyAhPSBQR1JFU19QT0xMSU5HX09LICYmIHN0YXR1cyAhPSBQ R1JFU19QT0xMSU5HX0ZBSUxFRCk7CisJY29ubi0+c3RyZWFtQ29ubiA9CisJCWxpYnBxc3J2 X2Nvbm5lY3RfcGFyYW1zKGtleXMsIHZhbHMsCisJCQkJCQkJCSAvKiBleHBhbmRfZGJuYW1l ID0gKi8gdHJ1ZSwKKwkJCQkJCQkJV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJVkVSX0NPTk5F Q1QpOwogCiAJaWYgKFBRc3RhdHVzKGNvbm4tPnN0cmVhbUNvbm4pICE9IENPTk5FQ1RJT05f T0spCiAJCWdvdG8gYmFkX2Nvbm5lY3Rpb25fZXJybXNnOwogCiAJaWYgKG11c3RfdXNlX3Bh c3N3b3JkICYmICFQUWNvbm5lY3Rpb25Vc2VkUGFzc3dvcmQoY29ubi0+c3RyZWFtQ29ubikp CiAJewotCQlQUWZpbmlzaChjb25uLT5zdHJlYW1Db25uKTsKKwkJbGlicHFzcnZfZGlzY29u bmVjdChjb25uLT5zdHJlYW1Db25uKTsKIAkJcGZyZWUoY29ubik7CiAKIAkJZXJlcG9ydChF UlJPUiwKQEAgLTI3Myw3ICsyMzQsNyBAQCBiYWRfY29ubmVjdGlvbl9lcnJtc2c6CiAKIAkv KiBlcnJvciBwYXRoLCBlcnJvciBhbHJlYWR5IHNldCAqLwogYmFkX2Nvbm5lY3Rpb246Ci0J UFFmaW5pc2goY29ubi0+c3RyZWFtQ29ubik7CisJbGlicHFzcnZfZGlzY29ubmVjdChjb25u LT5zdHJlYW1Db25uKTsKIAlwZnJlZShjb25uKTsKIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTgw OSw3ICs3NzAsNyBAQCBsaWJwcXJjdl9QUWdldFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4p CiBzdGF0aWMgdm9pZAogbGlicHFyY3ZfZGlzY29ubmVjdChXYWxSZWNlaXZlckNvbm4gKmNv bm4pCiB7Ci0JUFFmaW5pc2goY29ubi0+c3RyZWFtQ29ubik7CisJbGlicHFzcnZfZGlzY29u bmVjdChjb25uLT5zdHJlYW1Db25uKTsKIAlQUWZyZWVtZW0oY29ubi0+cmVjdkJ1Zik7CiAJ cGZyZWUoY29ubik7CiB9Ci0tIAoyLjM5LjIKCg== --------------Co7IGj78l3L2T0ImNrmDAEif Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-Apply-walrcv_shutdown_deblocking_v2-2.patch.patch" Content-Disposition: attachment; filename*0="v3-0002-Apply-walrcv_shutdown_deblocking_v2-2.patch.patch" Content-Transfer-Encoding: base64 RnJvbSA5Mjk1Zjg2OGZhMjA3ZDcxZjdlZWY2MjBlNjRmMzA0N2U4ZjQ1ZTEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTE6MDE6MjUgKzAyMDAK U3ViamVjdDogW1BBVENIIHYzIDIvNF0gQXBwbHkgd2FscmN2X3NodXRkb3duX2RlYmxvY2tp bmdfdjItMi5wYXRjaAoKRnJvbSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkLzIwMjQwMTIzLjE3MjQxMC4xNTk2MTkzMjIyNDIwNjM2OTg2LmhvcmlreW90YS5udHQl NDBnbWFpbC5jb20KLS0tCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu YyAgICAgICAgIHwgNTMgKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDUgKysKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAyICstCiA0IGZpbGVzIGNoYW5nZWQs IDMyIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKaW5kZXggMjAxYzM2Y2IyMjAuLmRiNzc5ZGM2Y2E2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYwpAQCAtNzQ5LDcgKzc0OSw3IEBAIGxpYnBxcmN2X1BRZ2V0UmVz dWx0KFBHY29ubiAqc3RyZWFtQ29ubikKIAkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQogCQl7 CiAJCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCQkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMo KTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAogCQkvKiBDb25zdW1lIHdo YXRldmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldCAqLwpAQCAtMTA1Myw3 ICsxMDUzLDcgQEAgbGlicHFyY3ZfcHJvY2Vzc1R1cGxlcyhQR3Jlc3VsdCAqcGdyZXMsIFdh bFJjdkV4ZWNSZXN1bHQgKndhbHJlcywKIAl7CiAJCWNoYXIJICAgKmNzdHJzW01heFR1cGxl QXR0cmlidXRlTnVtYmVyXTsKIAotCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qIERvIHRoZSBhbGxvY2F0aW9ucyBpbiB0 ZW1wb3JhcnkgY29udGV4dC4gKi8KIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhyb3djb250ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5j CmluZGV4IDcyODA1OTUxOGUxLi5lNDkxZjdkNGM1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5jCkBAIC0xNDcsMzkgKzE0NywzNCBAQCBzdGF0aWMgdm9pZCBY TG9nV2FsUmN2U2VuZFJlcGx5KGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIHN0 YXRpYyB2b2lkIFhMb2dXYWxSY3ZTZW5kSFNGZWVkYmFjayhib29sIGltbWVkKTsKIHN0YXRp YyB2b2lkIFByb2Nlc3NXYWxTbmRyTWVzc2FnZShYTG9nUmVjUHRyIHdhbEVuZCwgVGltZXN0 YW1wVHogc2VuZFRpbWUpOwogc3RhdGljIHZvaWQgV2FsUmN2Q29tcHV0ZU5leHRXYWtldXAo V2FsUmN2V2FrZXVwUmVhc29uIHJlYXNvbiwgVGltZXN0YW1wVHogbm93KTsKK3N0YXRpYyB2 b2lkIFdhbFJjdlNodXRkb3duU2lnbmFsSGFuZGxlcihTSUdOQUxfQVJHUyk7CiAKLS8qCi0g KiBQcm9jZXNzIGFueSBpbnRlcnJ1cHRzIHRoZSB3YWxyZWNlaXZlciBwcm9jZXNzIG1heSBo YXZlIHJlY2VpdmVkLgotICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIGFueSB0aW1lIHRoZSBw cm9jZXNzJ3MgbGF0Y2ggaGFzIGJlY29tZSBzZXQuCi0gKgotICogQ3VycmVudGx5LCBvbmx5 IFNJR1RFUk0gaXMgb2YgaW50ZXJlc3QuICBXZSBjYW4ndCBqdXN0IGV4aXQoMSkgd2l0aGlu IHRoZQotICogU0lHVEVSTSBzaWduYWwgaGFuZGxlciwgYmVjYXVzZSB0aGUgc2lnbmFsIG1p Z2h0IGFycml2ZSBpbiB0aGUgbWlkZGxlIG9mCi0gKiBzb21lIGNyaXRpY2FsIG9wZXJhdGlv biwgbGlrZSB3aGlsZSB3ZSdyZSBob2xkaW5nIGEgc3BpbmxvY2suICBJbnN0ZWFkLCB0aGUK LSAqIHNpZ25hbCBoYW5kbGVyIHNldHMgYSBmbGFnIHZhcmlhYmxlIGFzIHdlbGwgYXMgc2V0 dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoLgotICogV2UgbXVzdCBjaGVjayB0aGUgZmxhZyAo YnkgY2FsbGluZyBQcm9jZXNzV2FsUmN2SW50ZXJydXB0cykgYW55dGltZSB0aGUKLSAqIGxh dGNoIGhhcyBiZWNvbWUgc2V0LiAgT3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIGZvciBh IGxvbmcgdGltZSwgc3VjaCBhcwotICogcmVhZGluZyBmcm9tIGEgcmVtb3RlIHNlcnZlciwg bXVzdCBwYXkgYXR0ZW50aW9uIHRvIHRoZSBsYXRjaCB0b287IHNlZQotICogbGlicHFyY3Zf UFFnZXRSZXN1bHQgZm9yIGV4YW1wbGUuCi0gKi8KIHZvaWQKLVByb2Nlc3NXYWxSY3ZJbnRl cnJ1cHRzKHZvaWQpCitXYWxSY3ZTaHV0ZG93blNpZ25hbEhhbmRsZXIoU0lHTkFMX0FSR1Mp CiB7Ci0JLyoKLQkgKiBBbHRob3VnaCB3YWxyZWNlaXZlciBpbnRlcnJ1cHQgaGFuZGxpbmcg ZG9lc24ndCB1c2UgdGhlIHNhbWUgc2NoZW1lIGFzCi0JICogcmVndWxhciBiYWNrZW5kcywg Y2FsbCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIG1ha2Ugc3VyZSB3ZSByZWNlaXZlCi0J ICogYW55IGluY29taW5nIHNpZ25hbHMgb24gV2luMzIsIGFuZCBhbHNvIHRvIG1ha2Ugc3Vy ZSB3ZSBwcm9jZXNzIGFueQotCSAqIGJhcnJpZXIgZXZlbnRzLgotCSAqLwotCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOwogCi0JaWYgKFNo dXRkb3duUmVxdWVzdFBlbmRpbmcpCisJLyogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBw cm9jX2V4aXQgKi8KKwlpZiAoIXByb2NfZXhpdF9pbnByb2dyZXNzKQogCXsKLQkJZXJlcG9y dChGQVRBTCwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKLQkJCQkg ZXJybXNnKCJ0ZXJtaW5hdGluZyB3YWxyZWNlaXZlciBwcm9jZXNzIGR1ZSB0byBhZG1pbmlz dHJhdG9yIGNvbW1hbmQiKSkpOworCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJUHJv Y0RpZVBlbmRpbmcgPSB0cnVlOwogCX0KKworCVNldExhdGNoKE15TGF0Y2gpOworCisJZXJy bm8gPSBzYXZlX2Vycm5vOworCQogfQogCisvKgorICogSXMgY3VycmVudCBwcm9jZXNzIGEg d2FsIHJlY2VpdmVyPworICovCitib29sCitJc1dhbFJlY2VpdmVyKHZvaWQpCit7CisJcmV0 dXJuIE15QmFja2VuZFR5cGUgPT0gQl9XQUxfUkVDRUlWRVI7Cit9CiAKIC8qIE1haW4gZW50 cnkgcG9pbnQgZm9yIHdhbHJlY2VpdmVyIHByb2Nlc3MgKi8KIHZvaWQKQEAgLTI3Nyw3ICsy NzIsNyBAQCBXYWxSZWNlaXZlck1haW4odm9pZCkKIAlwcXNpZ25hbChTSUdIVVAsIFNpZ25h bEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOyAvKiBzZXQgZmxhZyB0byByZWFkIGNvbmZpZwog CQkJCQkJCQkJCQkJCSAqIGZpbGUgKi8KIAlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOwot CXBxc2lnbmFsKFNJR1RFUk0sIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOyAv KiByZXF1ZXN0IHNodXRkb3duICovCisJcHFzaWduYWwoU0lHVEVSTSwgV2FsUmN2U2h1dGRv d25TaWduYWxIYW5kbGVyKTsgLyogcmVxdWVzdCBzaHV0ZG93biAqLwogCS8qIFNJR1FVSVQg aGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwog CXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19J R04pOwpAQCAtNDU2LDcgKzQ1MSw3IEBAIFdhbFJlY2VpdmVyTWFpbih2b2lkKQogCQkJCQkJ CSBlcnJtc2coImNhbm5vdCBjb250aW51ZSBXQUwgc3RyZWFtaW5nLCByZWNvdmVyeSBoYXMg YWxyZWFkeSBlbmRlZCIpKSk7CiAKIAkJCQkvKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBz aWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCi0JCQkJUHJvY2Vzc1dhbFJjdkludGVycnVw dHMoKTsKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCQkJaWYgKENvbmZpZ1Jl bG9hZFBlbmRpbmcpCiAJCQkJewpAQCAtNTUyLDcgKzU0Nyw3IEBAIFdhbFJlY2VpdmVyTWFp bih2b2lkKQogCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKIAkJCQl7CiAJCQkJCVJlc2V0 TGF0Y2goTXlMYXRjaCk7Ci0JCQkJCVByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKCk7CisJCQkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJCQkJaWYgKHdhbHJjdi0+Zm9yY2VfcmVw bHkpCiAJCQkJCXsKQEAgLTY5MSw3ICs2ODYsNyBAQCBXYWxSY3ZXYWl0Rm9yU3RhcnRQb3Np dGlvbihYTG9nUmVjUHRyICpzdGFydHBvaW50LCBUaW1lTGluZUlEICpzdGFydHBvaW50VExJ KQogCXsKIAkJUmVzZXRMYXRjaChNeUxhdGNoKTsKIAotCQlQcm9jZXNzV2FsUmN2SW50ZXJy dXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCVNwaW5Mb2NrQWNxdWly ZSgmd2FscmN2LT5tdXRleCk7CiAJCUFzc2VydCh3YWxyY3YtPndhbFJjdlN0YXRlID09IFdB TFJDVl9SRVNUQVJUSU5HIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMWEzNGJkMzcxNWYu LjJjZTI0ZDhhOWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK KysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC01OSw2ICs1OSw3IEBACiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3Qu aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRs ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpAQCAtMzI4Niw2ICszMjg3LDEw IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJCQkgKi8KIAkJCXByb2NfZXhpdCgxKTsK IAkJfQorCQllbHNlIGlmIChJc1dhbFJlY2VpdmVyKCkpCisJCQllcmVwb3J0KEZBVEFMLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKKwkJCQkJIGVycm1zZygi dGVybWluYXRpbmcgd2FscmVjZWl2ZXIgcHJvY2VzcyBkdWUgdG8gYWRtaW5pc3RyYXRvciBj b21tYW5kIikpKTsKIAkJZWxzZSBpZiAoSXNCYWNrZ3JvdW5kV29ya2VyKQogCQkJZXJlcG9y dChGQVRBTCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9BRE1JTl9TSFVURE9XTiksCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRleCAwODk5ODkxY2RiOC4uYTc2 ODRiN2JkYzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAt NDU2LDggKzQ1Niw4IEBAIHdhbHJjdl9jbGVhcl9yZXN1bHQoV2FsUmN2RXhlY1Jlc3VsdCAq d2FscmVzKQogfQogCiAvKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gd2FscmVjZWl2 ZXIuYyAqLworZXh0ZXJuIGJvb2wgSXNXYWxSZWNlaXZlcih2b2lkKTsKIGV4dGVybiB2b2lk IFdhbFJlY2VpdmVyTWFpbih2b2lkKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKLWV4dGVy biB2b2lkIFByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgV2Fs UmN2Rm9yY2VSZXBseSh2b2lkKTsKIAogLyogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGlu IHdhbHJlY2VpdmVyZnVuY3MuYyAqLwotLSAKMi4zOS4yCgo= --------------Co7IGj78l3L2T0ImNrmDAEif Content-Type: text/x-patch; charset=UTF-8; name="v3-0003-Use-libpq-be-fe-helpers.h-wrappers-more.patch" Content-Disposition: attachment; filename="v3-0003-Use-libpq-be-fe-helpers.h-wrappers-more.patch" Content-Transfer-Encoding: base64 RnJvbSA0YThmYTc3OGZlNWVlMTgwN2I5MWQyNTg3Nzc1YjdhN2FkMjUwODI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTE6MTY6MjMgKzAyMDAK U3ViamVjdDogW1BBVENIIHYzIDMvNF0gVXNlIGxpYnBxLWJlLWZlLWhlbHBlcnMuaCB3cmFw cGVycyBtb3JlCgotLS0KIC4uLi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIu YyAgICAgICB8IDE0OCArKysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMSBp bnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYwppbmRleCBkYjc3OWRjNmNhNi4uYzYwYTEyMTA5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jCkBAIC0xMDIsOCArMTAyLDYgQEAgc3RhdGljIFdhbFJlY2VpdmVyRnVu Y3Rpb25zVHlwZSBQUVdhbFJlY2VpdmVyRnVuY3Rpb25zID0gewogfTsKIAogLyogUHJvdG90 eXBlcyBmb3IgcHJpdmF0ZSBmdW5jdGlvbnMgKi8KLXN0YXRpYyBQR3Jlc3VsdCAqbGlicHFy Y3ZfUFFleGVjKFBHY29ubiAqc3RyZWFtQ29ubiwgY29uc3QgY2hhciAqcXVlcnkpOwotc3Rh dGljIFBHcmVzdWx0ICpsaWJwcXJjdl9QUWdldFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4p Owogc3RhdGljIGNoYXIgKnN0cmluZ2xpc3RfdG9faWRlbnRpZmllcnN0cihQR2Nvbm4gKmNv bm4sIExpc3QgKnN0cmluZ3MpOwogCiAvKgpAQCAtMjEyLDggKzIxMCw5IEBAIGxpYnBxcmN2 X2Nvbm5lY3QoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wgbG9naWNhbCwgYm9vbCBtdXN0 X3VzZV9wYXNzd29yZCwKIAl7CiAJCVBHcmVzdWx0ICAgKnJlczsKIAotCQlyZXMgPSBsaWJw cXJjdl9QUWV4ZWMoY29ubi0+c3RyZWFtQ29ubiwKLQkJCQkJCQkgIEFMV0FZU19TRUNVUkVf U0VBUkNIX1BBVEhfU1FMKTsKKwkJcmVzID0gbGlicHFzcnZfZXhlYyhjb25uLT5zdHJlYW1D b25uLAorCQkJCQkJCUFMV0FZU19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMLAorCQkJCQkJCVdB SVRfRVZFTlRfTElCUFFXQUxSRUNFSVZFUl9SRUNFSVZFKTsKIAkJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCQl7CiAJCQlQUWNsZWFyKHJlcyk7CkBA IC0zODUsNyArMzg0LDkgQEAgbGlicHFyY3ZfaWRlbnRpZnlfc3lzdGVtKFdhbFJlY2VpdmVy Q29ubiAqY29ubiwgVGltZUxpbmVJRCAqcHJpbWFyeV90bGkpCiAJICogR2V0IHRoZSBzeXN0 ZW0gaWRlbnRpZmllciBhbmQgdGltZWxpbmUgSUQgYXMgYSBEYXRhUm93IG1lc3NhZ2UgZnJv bSB0aGUKIAkgKiBwcmltYXJ5IHNlcnZlci4KIAkgKi8KLQlyZXMgPSBsaWJwcXJjdl9QUWV4 ZWMoY29ubi0+c3RyZWFtQ29ubiwgIklERU5USUZZX1NZU1RFTSIpOworCXJlcyA9IGxpYnBx c3J2X2V4ZWMoY29ubi0+c3RyZWFtQ29ubiwKKwkJCQkJCSJJREVOVElGWV9TWVNURU0iLAor CQkJCQkJV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUpOwogCWlmIChQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7CiAJCVBRY2xlYXIocmVz KTsKQEAgLTUxOCw3ICs1MTksOSBAQCBsaWJwcXJjdl9zdGFydHN0cmVhbWluZyhXYWxSZWNl aXZlckNvbm4gKmNvbm4sCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ucGh5c2ljYWwuc3RhcnRw b2ludFRMSSk7CiAKIAkvKiBTdGFydCBzdHJlYW1pbmcuICovCi0JcmVzID0gbGlicHFyY3Zf UFFleGVjKGNvbm4tPnN0cmVhbUNvbm4sIGNtZC5kYXRhKTsKKwlyZXMgPSBsaWJwcXNydl9l eGVjKGNvbm4tPnN0cmVhbUNvbm4sCisJCQkJCQljbWQuZGF0YSwKKwkJCQkJCVdBSVRfRVZF TlRfTElCUFFXQUxSRUNFSVZFUl9SRUNFSVZFKTsKIAlwZnJlZShjbWQuZGF0YSk7CiAKIAlp ZiAoUFFyZXN1bHRTdGF0dXMocmVzKSA9PSBQR1JFU19DT01NQU5EX09LKQpAQCAtNTQ4LDcg KzU1MSw3IEBAIGxpYnBxcmN2X2VuZHN0cmVhbWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4s IFRpbWVMaW5lSUQgKm5leHRfdGxpKQogCVBHcmVzdWx0ICAgKnJlczsKIAogCS8qCi0JICog U2VuZCBjb3B5LWVuZCBtZXNzYWdlLiAgQXMgaW4gbGlicHFyY3ZfUFFleGVjLCB0aGlzIGNv dWxkIHRoZW9yZXRpY2FsbHkKKwkgKiBTZW5kIGNvcHktZW5kIG1lc3NhZ2UuICBBcyBpbiBs aWJwcXNydl9leGVjLCB0aGlzIGNvdWxkIHRoZW9yZXRpY2FsbHkKIAkgKiBibG9jaywgYnV0 IHRoZSByaXNrIHNlZW1zIHNtYWxsLgogCSAqLwogCWlmIChQUXB1dENvcHlFbmQoY29ubi0+ c3RyZWFtQ29ubiwgTlVMTCkgPD0gMCB8fApAQCAtNTY4LDcgKzU3MSw4IEBAIGxpYnBxcmN2 X2VuZHN0cmVhbWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIFRpbWVMaW5lSUQgKm5leHRf dGxpKQogCSAqIElmIHdlIGhhZCBub3QgeWV0IHJlY2VpdmVkIENvcHlEb25lIGZyb20gdGhl IGJhY2tlbmQsIFBHUkVTX0NPUFlfT1VUIGlzCiAJICogYWxzbyBwb3NzaWJsZSBpbiBjYXNl IHdlIGFib3J0ZWQgdGhlIGNvcHkgaW4gbWlkLXN0cmVhbS4KIAkgKi8KLQlyZXMgPSBsaWJw cXJjdl9QUWdldFJlc3VsdChjb25uLT5zdHJlYW1Db25uKTsKKwlyZXMgPSBsaWJwcXNydl9n ZXRfcmVzdWx0KGNvbm4tPnN0cmVhbUNvbm4sCisJCQkJCQkJICBXQUlUX0VWRU5UX0xJQlBR V0FMUkVDRUlWRVJfUkVDRUlWRSk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdS RVNfVFVQTEVTX09LKQogCXsKIAkJLyoKQEAgLTU4Myw3ICs1ODcsOCBAQCBsaWJwcXJjdl9l bmRzdHJlYW1pbmcoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBUaW1lTGluZUlEICpuZXh0X3Rs aSkKIAkJUFFjbGVhcihyZXMpOwogCiAJCS8qIHRoZSByZXN1bHQgc2V0IHNob3VsZCBiZSBm b2xsb3dlZCBieSBDb21tYW5kQ29tcGxldGUgKi8KLQkJcmVzID0gbGlicHFyY3ZfUFFnZXRS ZXN1bHQoY29ubi0+c3RyZWFtQ29ubik7CisJCXJlcyA9IGxpYnBxc3J2X2dldF9yZXN1bHQo Y29ubi0+c3RyZWFtQ29ubiwKKwkJCQkJCQkJICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlW RVJfUkVDRUlWRSk7CiAJfQogCWVsc2UgaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdS RVNfQ09QWV9PVVQpCiAJewpAQCAtNTk3LDcgKzYwMiw4IEBAIGxpYnBxcmN2X2VuZHN0cmVh bWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIFRpbWVMaW5lSUQgKm5leHRfdGxpKQogCQkJ CQkJCXBjaG9tcChQUWVycm9yTWVzc2FnZShjb25uLT5zdHJlYW1Db25uKSkpKSk7CiAKIAkJ LyogQ29tbWFuZENvbXBsZXRlIHNob3VsZCBmb2xsb3cgKi8KLQkJcmVzID0gbGlicHFyY3Zf UFFnZXRSZXN1bHQoY29ubi0+c3RyZWFtQ29ubik7CisJCXJlcyA9IGxpYnBxc3J2X2dldF9y ZXN1bHQoY29ubi0+c3RyZWFtQ29ubiwKKwkJCQkJCQkJICBXQUlUX0VWRU5UX0xJQlBRV0FM UkVDRUlWRVJfUkVDRUlWRSk7CiAJfQogCiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfQ09NTUFORF9PSykKQEAgLTYwOCw3ICs2MTQsOCBAQCBsaWJwcXJjdl9lbmRzdHJl YW1pbmcoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBUaW1lTGluZUlEICpuZXh0X3RsaSkKIAlQ UWNsZWFyKHJlcyk7CiAKIAkvKiBWZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSByZXN1 bHRzICovCi0JcmVzID0gbGlicHFyY3ZfUFFnZXRSZXN1bHQoY29ubi0+c3RyZWFtQ29ubik7 CisJcmVzID0gbGlicHFzcnZfZ2V0X3Jlc3VsdChjb25uLT5zdHJlYW1Db25uLAorCQkJCQkJ CSAgV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUpOwogCWlmIChyZXMgIT0g TlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCkBAIC02MzMsNyArNjQwLDkgQEAgbGlicHFyY3ZfcmVhZHRpbWVsaW5l aGlzdG9yeWZpbGUoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCSAqIFJlcXVlc3QgdGhlIHBy aW1hcnkgdG8gc2VuZCBvdmVyIHRoZSBoaXN0b3J5IGZpbGUgZm9yIGdpdmVuIHRpbWVsaW5l LgogCSAqLwogCXNucHJpbnRmKGNtZCwgc2l6ZW9mKGNtZCksICJUSU1FTElORV9ISVNUT1JZ ICV1IiwgdGxpKTsKLQlyZXMgPSBsaWJwcXJjdl9QUWV4ZWMoY29ubi0+c3RyZWFtQ29ubiwg Y21kKTsKKwlyZXMgPSBsaWJwcXNydl9leGVjKGNvbm4tPnN0cmVhbUNvbm4sCisJCQkJCQlj bWQsCisJCQkJCQlXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRSk7CiAJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKIAkJUFFjbGVh cihyZXMpOwpAQCAtNjYzLDEwNyArNjcyLDYgQEAgbGlicHFyY3ZfcmVhZHRpbWVsaW5laGlz dG9yeWZpbGUoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCVBRY2xlYXIocmVzKTsKIH0KIAot LyoKLSAqIFNlbmQgYSBxdWVyeSBhbmQgd2FpdCBmb3IgdGhlIHJlc3VsdHMgYnkgdXNpbmcg dGhlIGFzeW5jaHJvbm91cyBsaWJwcQotICogZnVuY3Rpb25zIGFuZCBzb2NrZXQgcmVhZGlu ZXNzIGV2ZW50cy4KLSAqCi0gKiBUaGUgZnVuY3Rpb24gaXMgbW9kZWxlZCBvbiBsaWJwcXNy dl9leGVjKCksIHdpdGggdGhlIGJlaGF2aW9yIGRpZmZlcmVuY2UKLSAqIGJlaW5nIHRoYXQg aXQgY2FsbHMgUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKS4gIEFzIGFuIG9wdGltaXphdGlv biwgaXQKLSAqIHNraXBzIHRyeS9jYXRjaCwgc2luY2UgYWxsIGVycm9ycyB0ZXJtaW5hdGUg dGhlIHByb2Nlc3MuCi0gKgotICogTWF5IHJldHVybiBOVUxMLCByYXRoZXIgdGhhbiBhbiBl cnJvciByZXN1bHQsIG9uIGZhaWx1cmUuCi0gKi8KLXN0YXRpYyBQR3Jlc3VsdCAqCi1saWJw cXJjdl9QUWV4ZWMoUEdjb25uICpzdHJlYW1Db25uLCBjb25zdCBjaGFyICpxdWVyeSkKLXsK LQlQR3Jlc3VsdCAgICpsYXN0UmVzdWx0ID0gTlVMTDsKLQotCS8qCi0JICogUFFleGVjKCkg c2lsZW50bHkgZGlzY2FyZHMgYW55IHByaW9yIHF1ZXJ5IHJlc3VsdHMgb24gdGhlIGNvbm5l Y3Rpb24uCi0JICogVGhpcyBpcyBub3QgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb24gYXMg aXQncyBleHBlY3RlZCB0aGF0IHRoZSBjYWxsZXIKLQkgKiAod2hpY2ggaXMgdGhpcyBsaWJy YXJ5IGluIGFsbCBjYXNlcykgd2lsbCBiZWhhdmUgY29ycmVjdGx5IGFuZCB3ZSBkb24ndAot CSAqIGhhdmUgdG8gYmUgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBvbGQgbGlicHEuCi0J ICovCi0KLQkvKgotCSAqIFN1Ym1pdCB0aGUgcXVlcnkuICBTaW5jZSB3ZSBkb24ndCB1c2Ug bm9uLWJsb2NraW5nIG1vZGUsIHRoaXMgY291bGQKLQkgKiB0aGVvcmV0aWNhbGx5IGJsb2Nr LiAgSW4gcHJhY3RpY2UsIHNpbmNlIHdlIGRvbid0IHNlbmQgdmVyeSBsb25nIHF1ZXJ5Ci0J ICogc3RyaW5ncywgdGhlIHJpc2sgc2VlbXMgbmVnbGlnaWJsZS4KLQkgKi8KLQlpZiAoIVBR c2VuZFF1ZXJ5KHN0cmVhbUNvbm4sIHF1ZXJ5KSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlmb3Ig KDs7KQotCXsKLQkJLyogV2FpdCBmb3IsIGFuZCBjb2xsZWN0LCB0aGUgbmV4dCBQR3Jlc3Vs dC4gKi8KLQkJUEdyZXN1bHQgICAqcmVzdWx0OwotCi0JCXJlc3VsdCA9IGxpYnBxcmN2X1BR Z2V0UmVzdWx0KHN0cmVhbUNvbm4pOwotCQlpZiAocmVzdWx0ID09IE5VTEwpCi0JCQlicmVh azsJCQkJLyogcXVlcnkgaXMgY29tcGxldGUsIG9yIGZhaWx1cmUgKi8KLQotCQkvKgotCQkg KiBFbXVsYXRlIFBRZXhlYygpJ3MgYmVoYXZpb3Igb2YgcmV0dXJuaW5nIHRoZSBsYXN0IHJl c3VsdCB3aGVuIHRoZXJlCi0JCSAqIGFyZSBtYW55LiAgV2UgYXJlIGZpbmUgd2l0aCByZXR1 cm5pbmcganVzdCBsYXN0IGVycm9yIG1lc3NhZ2UuCi0JCSAqLwotCQlQUWNsZWFyKGxhc3RS ZXN1bHQpOwotCQlsYXN0UmVzdWx0ID0gcmVzdWx0OwotCi0JCWlmIChQUXJlc3VsdFN0YXR1 cyhsYXN0UmVzdWx0KSA9PSBQR1JFU19DT1BZX0lOIHx8Ci0JCQlQUXJlc3VsdFN0YXR1cyhs YXN0UmVzdWx0KSA9PSBQR1JFU19DT1BZX09VVCB8fAotCQkJUFFyZXN1bHRTdGF0dXMobGFz dFJlc3VsdCkgPT0gUEdSRVNfQ09QWV9CT1RIIHx8Ci0JCQlQUXN0YXR1cyhzdHJlYW1Db25u KSA9PSBDT05ORUNUSU9OX0JBRCkKLQkJCWJyZWFrOwotCX0KLQotCXJldHVybiBsYXN0UmVz dWx0OwotfQotCi0vKgotICogUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBQUWdldFJlc3Vs dCgpLCBidXQgd2F0Y2ggZm9yIGludGVycnVwdHMuCi0gKi8KLXN0YXRpYyBQR3Jlc3VsdCAq Ci1saWJwcXJjdl9QUWdldFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4pCi17Ci0JLyoKLQkg KiBDb2xsZWN0IGRhdGEgdW50aWwgUFFnZXRSZXN1bHQgaXMgcmVhZHkgdG8gZ2V0IHRoZSBy ZXN1bHQgd2l0aG91dAotCSAqIGJsb2NraW5nLgotCSAqLwotCXdoaWxlIChQUWlzQnVzeShz dHJlYW1Db25uKSkKLQl7Ci0JCWludAkJCXJjOwotCi0JCS8qCi0JCSAqIFdlIGRvbid0IG5l ZWQgdG8gYnJlYWsgZG93biB0aGUgc2xlZXAgaW50byBzbWFsbGVyIGluY3JlbWVudHMsCi0J CSAqIHNpbmNlIHdlJ2xsIGdldCBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIGFuZCBjYW4gaGFu ZGxlIGFueQotCQkgKiBpbnRlcnJ1cHRzIGhlcmUuCi0JCSAqLwotCQlyYyA9IFdhaXRMYXRj aE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdM X1NPQ0tFVF9SRUFEQUJMRSB8Ci0JCQkJCQkJICAgV0xfTEFUQ0hfU0VULAotCQkJCQkJCSAg IFBRc29ja2V0KHN0cmVhbUNvbm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgV0FJVF9F VkVOVF9MSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUpOwotCi0JCS8qIEludGVycnVwdGVkPyAq LwotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7Ci0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQl9Ci0KLQkJLyogQ29uc3VtZSB3 aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQgKi8KLQkJaWYgKFBR Y29uc3VtZUlucHV0KHN0cmVhbUNvbm4pID09IDApCi0JCXsKLQkJCS8qIHRyb3VibGU7IHJl dHVybiBOVUxMICovCi0JCQlyZXR1cm4gTlVMTDsKLQkJfQotCX0KLQotCS8qIE5vdyB3ZSBj YW4gY29sbGVjdCBhbmQgcmV0dXJuIHRoZSBuZXh0IFBHcmVzdWx0ICovCi0JcmV0dXJuIFBR Z2V0UmVzdWx0KHN0cmVhbUNvbm4pOwotfQotCiAvKgogICogRGlzY29ubmVjdCBjb25uZWN0 aW9uIHRvIHByaW1hcnksIGlmIGFueS4KICAqLwpAQCAtODI0LDEzICs3MzIsMTUgQEAgbGli cHFyY3ZfcmVjZWl2ZShXYWxSZWNlaXZlckNvbm4gKmNvbm4sIGNoYXIgKipidWZmZXIsCiAJ ewogCQlQR3Jlc3VsdCAgICpyZXM7CiAKLQkJcmVzID0gbGlicHFyY3ZfUFFnZXRSZXN1bHQo Y29ubi0+c3RyZWFtQ29ubik7CisJCXJlcyA9IGxpYnBxc3J2X2dldF9yZXN1bHQoY29ubi0+ c3RyZWFtQ29ubiwKKwkJCQkJCQkJICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVD RUlWRSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPTU1BTkRfT0sp CiAJCXsKIAkJCVBRY2xlYXIocmVzKTsKIAogCQkJLyogVmVyaWZ5IHRoYXQgdGhlcmUgYXJl IG5vIG1vcmUgcmVzdWx0cy4gKi8KLQkJCXJlcyA9IGxpYnBxcmN2X1BRZ2V0UmVzdWx0KGNv bm4tPnN0cmVhbUNvbm4pOworCQkJcmVzID0gbGlicHFzcnZfZ2V0X3Jlc3VsdChjb25uLT5z dHJlYW1Db25uLAorCQkJCQkJCQkJICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVD RUlWRSk7CiAJCQlpZiAocmVzICE9IE5VTEwpCiAJCQl7CiAJCQkJUFFjbGVhcihyZXMpOwpA QCAtOTcyLDcgKzg4Miw5IEBAIGxpYnBxcmN2X2NyZWF0ZV9zbG90KFdhbFJlY2VpdmVyQ29u biAqY29ubiwgY29uc3QgY2hhciAqc2xvdG5hbWUsCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICIgUEhZU0lDQUwgUkVTRVJWRV9XQUwiKTsKIAl9CiAKLQlyZXMgPSBsaWJw cXJjdl9QUWV4ZWMoY29ubi0+c3RyZWFtQ29ubiwgY21kLmRhdGEpOworCXJlcyA9IGxpYnBx c3J2X2V4ZWMoY29ubi0+c3RyZWFtQ29ubiwKKwkJCQkJCWNtZC5kYXRhLAorCQkJCQkJV0FJ VF9FVkVOVF9MSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUpOwogCXBmcmVlKGNtZC5kYXRhKTsK IAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKQEAgLTEw OTksNyArMTAxMSw5IEBAIGxpYnBxcmN2X2V4ZWMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBj b25zdCBjaGFyICpxdWVyeSwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJ0aGUgcXVlcnkgaW50ZXJmYWNl IHJlcXVpcmVzIGEgZGF0YWJhc2UgY29ubmVjdGlvbiIpKSk7CiAKLQlwZ3JlcyA9IGxpYnBx cmN2X1BRZXhlYyhjb25uLT5zdHJlYW1Db25uLCBxdWVyeSk7CisJcGdyZXMgPSBsaWJwcXNy dl9leGVjKGNvbm4tPnN0cmVhbUNvbm4sCisJCQkJCQkgIHF1ZXJ5LAorCQkJCQkJICBXQUlU X0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRSk7CiAKIAlzd2l0Y2ggKFBRcmVzdWx0 U3RhdHVzKHBncmVzKSkKIAl7Ci0tIAoyLjM5LjIKCg== --------------Co7IGj78l3L2T0ImNrmDAEif Content-Type: text/x-patch; charset=UTF-8; name="v3-0004-Use-existing-AmWalReceiverProcess-function.patch" Content-Disposition: attachment; filename="v3-0004-Use-existing-AmWalReceiverProcess-function.patch" Content-Transfer-Encoding: base64 RnJvbSBjMDc5NzIwMGY1Yjg0NTA1YmZhYjYxODE2NmI4ZjlkNTc2Njg1Njc4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTE6MTk6MDcgKzAyMDAK U3ViamVjdDogW1BBVENIIHYzIDQvNF0gVXNlIGV4aXN0aW5nIEFtV2FsUmVjZWl2ZXJQcm9j ZXNzKCkgZnVuY3Rpb24KCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuYyB8IDkgLS0tLS0tLS0tCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAg ICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggZTQ5 MWY3ZDRjNWUuLjNiZDYzM2U3NWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmMKQEAgLTE2NywxNSArMTY3LDYgQEAgV2FsUmN2U2h1dGRvd25TaWduYWxIYW5k bGVyKFNJR05BTF9BUkdTKQogCQogfQogCi0vKgotICogSXMgY3VycmVudCBwcm9jZXNzIGEg d2FsIHJlY2VpdmVyPwotICovCi1ib29sCi1Jc1dhbFJlY2VpdmVyKHZvaWQpCi17Ci0JcmV0 dXJuIE15QmFja2VuZFR5cGUgPT0gQl9XQUxfUkVDRUlWRVI7Ci19Ci0KIC8qIE1haW4gZW50 cnkgcG9pbnQgZm9yIHdhbHJlY2VpdmVyIHByb2Nlc3MgKi8KIHZvaWQKIFdhbFJlY2VpdmVy TWFpbih2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDJjZTI0ZDhhOWExLi41YTRkYzE5 NzdkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMzI4Nyw3ICszMjg3LDcgQEAgUHJvY2Vz c0ludGVycnVwdHModm9pZCkKIAkJCSAqLwogCQkJcHJvY19leGl0KDEpOwogCQl9Ci0JCWVs c2UgaWYgKElzV2FsUmVjZWl2ZXIoKSkKKwkJZWxzZSBpZiAoQW1XYWxSZWNlaXZlclByb2Nl c3MoKSkKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5f U0hVVERPV04pLAogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyB3YWxyZWNlaXZlciBwcm9j ZXNzIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQiKSkpOwotLSAKMi4zOS4yCgo= --------------Co7IGj78l3L2T0ImNrmDAEif--