Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gOlO1-0002Zq-IT for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Nov 2018 15:22:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gOlO0-0004Bd-7g for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Nov 2018 15:22:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gOlNz-0004BW-O3 for pgsql-hackers@lists.postgresql.org; Mon, 19 Nov 2018 15:22:52 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by makus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gOlNt-0007dO-3G for pgsql-hackers@postgresql.org; Mon, 19 Nov 2018 15:22:50 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 8F2E121C8842 for ; Mon, 19 Nov 2018 18:22:42 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 6CF6C21C8841 for ; Mon, 19 Nov 2018 18:22:42 +0300 (MSK) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_4267409633d5525d4c927d0966e30e1e" Date: Mon, 19 Nov 2018 18:22:42 +0300 From: s.cherkashin@postgrespro.ru To: pgsql-hackers@postgresql.org Subject: Add client connection check during the execution of the query Message-ID: <77def86b27e41f0efcba411460e929ae@postgrespro.ru> X-Sender: s.cherkashin@postgrespro.ru User-Agent: Roundcube Webmail/1.3.8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_4267409633d5525d4c927d0966e30e1e Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed This patch adds verification of the connection with the client during the execution of the SQL query. The feature enables using the GUC variable ‘client_connection_check_interval’. The default check interval is 1 second. If you set the value of ‘client_connection_check_interval’ to 0, then the check will not be performed. The feature will be useful in cases when, during the execution of a very long query, the client suddenly terminates the connection - this will allow backend to cancel further execution of the query and free server resources. --=_4267409633d5525d4c927d0966e30e1e Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=Add_client_connection_check.patch Content-Disposition: attachment; filename=Add_client_connection_check.patch; size=11538 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCBjNGVmZmEwMzRjLi44M2M2NjJkZTBmIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC03Njc3 LDYgKzc2NzcsMjcgQEAgZHluYW1pY19saWJyYXJ5X3BhdGggPSAnQzpcdG9vbHNccG9zdGdyZXNx bDtIOlxteV9wcm9qZWN0XGxpYjskbGliZGlyJwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWNsaWVudC1jb25uZWN0 aW9uLWNoZWNrLWludGVydmFsIiB4cmVmbGFiZWw9ImNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJt PgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVy dmFsPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJh PgorICAgICAgICBUaGlzIHBhcmFtZXRlciBzZXRzIGEgdGltZSBpbnRlcnZhbCAoaW4gbWlsbGlz ZWNvbmRzKSBiZXR3ZWVuIHBlcmlvZGljIAorICAgICAgICB2ZXJpZmljYXRpb24gb2YgdGhlIGNv bm5lY3Rpb24gd2l0aCB0aGUgY2xpZW50IGR1cmluZyB0aGUgZXhlY3V0aW9uCisgICAgICAgIG9m IHRoZSBxdWVyeS4gSW4gY2FzZSB3aGVuIHRoZSBjbGllbnQgYWJvcnRzIHRoZSBjb25uZWN0aW9u LAorICAgICAgICB0aGUgZXhlY3V0aW9uIG9mIHRoZSBxdWVyeSB3aWxsIGJlIHRlcm1pbmF0ZWQu CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBJZiB2YWx1ZSBpcyAtMSwg dGhlbiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCwgYW5kIHRoZSBiYWNrZW5kIHdpbGwKKyAgICAg ICAgZGV0ZWN0IGNsaWVudCBkaXNjb25uZWN0aW9uIG9ubHkgd2hlbiB0cnlpbmcgdG8gc2VuZCBo aW0gYSByZXNwb25zZQorICAgICAgICB0byB0aGUgcXVlcnkuIFplcm8gc2VsZWN0cyBhIHN1aXRh YmxlIGRlZmF1bHQgdmFsdWUgKDEgc2Vjb25kKS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xp c3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAg ICA8L3NlY3QyPgogICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bx Y29tbS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKaW5kZXggMGM5NTkzZDRjYy4uZGQx OTE3ZWZlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKKysrIGIvc3Jj L2JhY2tlbmQvbGlicHEvcHFjb21tLmMKQEAgLTEyMCw2ICsxMjAsNyBAQAogICovCiBpbnQJCQlV bml4X3NvY2tldF9wZXJtaXNzaW9uczsKIGNoYXIJICAgKlVuaXhfc29ja2V0X2dyb3VwOworaW50 IAkJY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWw7CiAKIC8qIFdoZXJlIHRoZSBVbml4 IHNvY2tldCBmaWxlcyBhcmUgKGxpc3Qgb2YgcGFsbG9jJ2Qgc3RyaW5ncykgKi8KIHN0YXRpYyBM aXN0ICpzb2NrX3BhdGhzID0gTklMOwpAQCAtMTkyNiwzICsxOTI3LDI1IEBAIHBxX3NldGtlZXBh bGl2ZXNjb3VudChpbnQgY291bnQsIFBvcnQgKnBvcnQpCiAKIAlyZXR1cm4gU1RBVFVTX09LOwog fQorCitib29sIHBxX2lzX2NsaWVudF9jb25uZWN0ZWQodm9pZCkKK3sKKwlDaGVja0NsaWVudENv bm5lY3Rpb25QZW5kaW5nID0gZmFsc2U7CisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmCisJCU15 UHJvY1BvcnQgIT0gTlVMTCAmJiAhUHFDb21tUmVhZGluZ01zZyAmJiAhUHFDb21tQnVzeSkKKwl7 CisJCWNoYXIgbmV4dGJ5dGU7CisJCWludCByOworCisJCXIgPSByZWN2KE15UHJvY1BvcnQtPnNv Y2ssICZuZXh0Ynl0ZSwgMSwgTVNHX1BFRUsgfCBNU0dfRE9OVFdBSVQpOworCisJCWlmIChyID09 IDAgfHwgKHIgPT0gLTEgJiYKKwkJCWVycm5vICE9IEVBR0FJTiAmJiBlcnJubyAhPSBFV09VTERC TE9DSyAmJiBlcnJubyAhPSBFSU5UUikpCisJCXsKKwkJCUNsaWVudENvbm5lY3Rpb25Mb3N0ID0g dHJ1ZTsKKwkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorCXJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGEzYjk3NTc1NjUuLjIy NDNiNjcyZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMwMTcsNiArMzAxNywxMyBAQCBQcm9jZXNz SW50ZXJydXB0cyh2b2lkKQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwK IAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gYWRtaW5pc3RyYXRv ciBjb21tYW5kIikpKTsKIAl9CisJaWYgKGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFs ID4gMCAmJiBDaGVja0NsaWVudENvbm5lY3Rpb25QZW5kaW5nKQorCXsKKwkJaWYgKHBxX2lzX2Ns aWVudF9jb25uZWN0ZWQoKSkKKwkJCWVuYWJsZV90aW1lb3V0X2FmdGVyKFNLSVBfQ0xJRU5UX0NI RUNLX1RJTUVPVVQsCisJCQkJCQkJCSBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7 CisKKwl9CiAJaWYgKENsaWVudENvbm5lY3Rpb25Mb3N0KQogCXsKIAkJUXVlcnlDYW5jZWxQZW5k aW5nID0gZmFsc2U7IC8qIGxvc3QgY29ubmVjdGlvbiB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KQEAg LTQxOTUsNiArNDIwMiw5IEBAIFBvc3RncmVzTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLAog CQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJRG9pbmdDb21tYW5kUmVhZCA9IGZh bHNlOworCQlpZiAoY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwpCisJCQllbmFibGVf dGltZW91dF9hZnRlcihTS0lQX0NMSUVOVF9DSEVDS19USU1FT1VULAorCQkJCQkJCQkgY2xpZW50 X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwpOwogCiAJCS8qCiAJCSAqICg1KSB0dXJuIG9mZiB0 aGUgaWRsZS1pbi10cmFuc2FjdGlvbiB0aW1lb3V0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmlu ZGV4IGM2OTM5Nzc5YjkuLjk2ZDQ0YTE1ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBA IC0zMCw2ICszMCw3IEBAIFByb3RvY29sVmVyc2lvbiBGcm9udGVuZFByb3RvY29sOwogdm9sYXRp bGUgc2lnX2F0b21pY190IEludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBQcm9jRGllUGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IENoZWNrQ2xp ZW50Q29ubmVjdGlvblBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDbGll bnRDb25uZWN0aW9uTG9zdCA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVJblRy YW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRv bWljX3QgQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jCmluZGV4IDRmMWQyYTBkMjguLjFkZmRmZThiMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rp bml0LmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RiX3JvbGVfc2V0 dGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImxp YnBxL2F1dGguaCIKKyNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL2xp YnBxLWJlLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKQEAgLTcyLDYgKzczLDcgQEAgc3RhdGljIHZvaWQgU2h1dGRvd25Qb3N0Z3JlcyhpbnQgY29k ZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIFN0YXRlbWVudFRpbWVvdXRIYW5kbGVyKHZvaWQp Owogc3RhdGljIHZvaWQgTG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpOwogc3RhdGljIHZvaWQgSWRs ZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dEhhbmRsZXIodm9pZCk7CitzdGF0aWMgdm9pZCBD bGllbnRDaGVja1RpbWVvdXRIYW5kbGVyKHZvaWQpOwogc3RhdGljIGJvb2wgVGhlcmVJc0F0TGVh c3RPbmVSb2xlKHZvaWQpOwogc3RhdGljIHZvaWQgcHJvY2Vzc19zdGFydHVwX29wdGlvbnMoUG9y dCAqcG9ydCwgYm9vbCBhbV9zdXBlcnVzZXIpOwogc3RhdGljIHZvaWQgcHJvY2Vzc19zZXR0aW5n cyhPaWQgZGF0YWJhc2VpZCwgT2lkIHJvbGVpZCk7CkBAIC02MjgsNiArNjMwLDcgQEAgSW5pdFBv c3RncmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lkLCBjb25zdCBjaGFyICp1c2Vy bmFtZSwKIAkJUmVnaXN0ZXJUaW1lb3V0KExPQ0tfVElNRU9VVCwgTG9ja1RpbWVvdXRIYW5kbGVy KTsKIAkJUmVnaXN0ZXJUaW1lb3V0KElETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VU LAogCQkJCQkJSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dEhhbmRsZXIpOworCQlSZWdp c3RlclRpbWVvdXQoU0tJUF9DTElFTlRfQ0hFQ0tfVElNRU9VVCwgQ2xpZW50Q2hlY2tUaW1lb3V0 SGFuZGxlcik7CiAJfQogCiAJLyoKQEAgLTEyMzksNiArMTI0MiwxMyBAQCBJZGxlSW5UcmFuc2Fj dGlvblNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKQogCVNldExhdGNoKE15TGF0Y2gpOwogfQog CitzdGF0aWMgdm9pZAorQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcih2b2lkKQoreworCUNoZWNr Q2xpZW50Q29ubmVjdGlvblBlbmRpbmcgPSB0cnVlOworCUludGVycnVwdFBlbmRpbmcgPSB0cnVl OworfQorCiAvKgogICogUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSByb2xlIGlzIGRlZmlu ZWQgaW4gdGhpcyBkYXRhYmFzZSBjbHVzdGVyLgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCA1 MTQ1OTU2OTliLi4xMWM2ZDViZjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMwNzIsNiArMzA3 MiwxNiBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJ CU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7ImNsaWVudF9jb25uZWN0aW9uX2NoZWNr X2ludGVydmFsIiwgUEdDX1VTRVJTRVQsIENMSUVOVF9DT05OX09USEVSLAorCQkJZ2V0dGV4dF9u b29wKCJTZXRzIHRoZSB0aW1lIGludGVydmFsIGZvciBjaGVja2luZyBjb25uZWN0aW9uIHdpdGgg dGhlIGNsaWVudC4iKSwKKwkJCWdldHRleHRfbm9vcCgiQSB2YWx1ZSBvZiAtMSBkaXNhYmxlcyB0 aGlzIGZlYXR1cmUuIFplcm8gc2VsZWN0cyBhIHN1aXRhYmxlIGRlZmF1bHQgdmFsdWUuIiksCisJ CQlHVUNfVU5JVF9NUworCQl9LAorCQkmY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWws CisJCTEwMDAsIDAsIElOVF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCS8qIEVuZC1v Zi1saXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAw LCAwLCAwLCBOVUxMLCBOVUxMLCBOVUxMCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYWIwNjNkYWU0MS4uNDBhNzYxMGE3NyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNjIzLDYgKzYy Myw5IEBACiAKICNkeW5hbWljX2xpYnJhcnlfcGF0aCA9ICckbGliZGlyJwogCisjY2xpZW50X2Nv bm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwgPSAxMDAwCSMgc2V0IHRpbWUgaW50ZXJ2YWwgYmV0d2Vl bgorCQkJCQkJCQkJCQkjIGNvbm5lY3Rpb24gY2hlY2tzLCBpbiBtcworCQkJCQkJCQkJCQkjIDAg aXMgZGlzYWJsZWQKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBMT0NLIE1BTkFHRU1FTlQK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmggYi9zcmMvaW5jbHVkZS9saWJw cS9saWJwcS5oCmluZGV4IGM3NzYyZjY4YTYuLjBiZjY4MTUwMGUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2xpYnBxL2xpYnBxLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaApAQCAt NzEsNiArNzEsNyBAQCBleHRlcm4gaW50CXBxX2dldGJ5dGUodm9pZCk7CiBleHRlcm4gaW50CXBx X3BlZWtieXRlKHZvaWQpOwogZXh0ZXJuIGludAlwcV9nZXRieXRlX2lmX2F2YWlsYWJsZSh1bnNp Z25lZCBjaGFyICpjKTsKIGV4dGVybiBpbnQJcHFfcHV0Ynl0ZXMoY29uc3QgY2hhciAqcywgc2l6 ZV90IGxlbik7CitleHRlcm4gYm9vbCBwcV9pc19jbGllbnRfY29ubmVjdGVkKHZvaWQpOwogCiAv KgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGJlLXNlY3VyZS5jCkBAIC0xMDIsNiAr MTAzLDcgQEAgZXh0ZXJuIFdhaXRFdmVudFNldCAqRmVCZVdhaXRTZXQ7CiBleHRlcm4gY2hhciAq U1NMQ2lwaGVyU3VpdGVzOwogZXh0ZXJuIGNoYXIgKlNTTEVDREhDdXJ2ZTsKIGV4dGVybiBib29s IFNTTFByZWZlclNlcnZlckNpcGhlcnM7CitleHRlcm4gaW50IGNsaWVudF9jb25uZWN0aW9uX2No ZWNrX2ludGVydmFsOwogCiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGJlLXNl Y3VyZS1jb21tb24uYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBkNmIzMmMwNzBjLi44YzgyODA1OWZjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4u aApAQCAtODMsNyArODMsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21p Y190IFF1ZXJ5Q2FuY2VsUGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdf YXRvbWljX3QgUHJvY0RpZVBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nOwogZXh0ZXJu IFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDb25maWdSZWxvYWRQZW5kaW5nOwot CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENoZWNrQ2xpZW50Q29u bmVjdGlvblBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190 IENsaWVudENvbm5lY3Rpb25Mb3N0OwogCiAvKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxlIGJl Y2F1c2UgdGhleSBhcmUgZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJzOiAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91 dC5oCmluZGV4IGRjYzczMDdjMTYuLmUxOWEzOTc2ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3RpbWVvdXQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90aW1lb3V0LmgKQEAgLTMx LDYgKzMxLDcgQEAgdHlwZWRlZiBlbnVtIFRpbWVvdXRJZAogCVNUQU5EQllfVElNRU9VVCwKIAlT VEFOREJZX0xPQ0tfVElNRU9VVCwKIAlJRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9V VCwKKwlTS0lQX0NMSUVOVF9DSEVDS19USU1FT1VULAogCS8qIEZpcnN0IHVzZXItZGVmaW5hYmxl IHRpbWVvdXQgcmVhc29uICovCiAJVVNFUl9USU1FT1VULAogCS8qIE1heGltdW0gbnVtYmVyIG9m IHRpbWVvdXQgcmVhc29ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmls ZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggMTlkNjBhNTA2ZS4uNTI2YTUxNDlj ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9t b2R1bGVzL01ha2VmaWxlCkBAIC03LDYgKzcsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9z cmMvTWFrZWZpbGUuZ2xvYmFsCiBTVUJESVJTID0gXAogCQkgIGJyaW4gXAogCQkgIGNvbW1pdF90 cyBcCisJCSAgY29ubmVjdGlvbiBcCiAJCSAgZHVtbXlfc2VjbGFiZWwgXAogCQkgIHNuYXBzaG90 X3Rvb19vbGQgXAogCQkgIHRlc3RfYmxvb21maWx0ZXIgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9jb25uZWN0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9jb25uZWN0aW9u L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjJlYzcwNmZk NTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2Nvbm5lY3Rpb24vTWFrZWZp bGUKQEAgLTAsMCArMSwxNCBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL2Nvbm5lY3Rpb24vTWFrZWZp bGUKKworc3ViZGlyID0gc3JjL3Rlc3QvbW9kdWxlcy9jb25uZWN0aW9uCit0b3BfYnVpbGRkaXIg PSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2Jh bAorCitjaGVjazoKKwkkKHByb3ZlX2NoZWNrKQorCitpbnN0YWxsY2hlY2s6CisJJChwcm92ZV9p bnN0YWxsY2hlY2spCisKK2NsZWFuIGRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuOgorCXJtIC1y ZiB0bXBfY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvY29ubmVjdGlvbi90LzAw MV9jbG9zZV9jb25uZWN0aW9uLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy9jb25uZWN0aW9uL3QvMDAx X2Nsb3NlX2Nvbm5lY3Rpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uOWQxZTdkNTk5MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvY29ubmVj dGlvbi90LzAwMV9jbG9zZV9jb25uZWN0aW9uLnBsCkBAIC0wLDAgKzEsNjEgQEAKKyMgQ2hlY2sg aWYgYmFja2VuZCBzdG9wcGVkIGFmdGVyIGNsaWVudCBkaXNjb25uZWN0aW9uCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVzTm9kZTsKK3VzZSBUZXN0TGliOwordXNlIFRl c3Q6Ok1vcmUgdGVzdHMgPT4gMjsKKworbXkgJGxvbmdfcXVlcnkgPSBxeworRE8KKyQkCitERUNM QVJFIHJvd19kYXRhIFJFQ09SRDsKK0JFR0lOCitFWEVDVVRFICdDUkVBVEUgVEFCTEUgSUYgTk9U IEVYSVNUUyBrZWVwX2FsaXZlX3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLDEwMDAw MCkgQVMgdHQnOworRk9SIHJvd19kYXRhIElOCisgICAgU0VMRUNUIHR0CisgICAgRlJPTSBrZWVw X2FsaXZlX3Rlc3QKK0xPT1AKKyAgICBFWEVDVVRFICdTRUxFQ1QgY291bnQoKikgRlJPTSBrZWVw X2FsaXZlX3Rlc3QnOworRU5EIExPT1A7CitFTkQkJDsKK307CitteSAkc2V0X2d1YyA9IHF7Cisg ICAgU0VUIGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsID0gMTAwMDsKK307CisKK215 ICRub2RlID0gZ2V0X25ld19ub2RlKCdub2RlJyk7CitteSAoJHBpZCwgJHRpbWVkX291dCk7Cisk bm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRFU1QgMTogR1VDIGNsaWVudF9jb25u ZWN0aW9uX2NoZWNrX2ludGVydmFsOiBlbmFibGVkICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFNldCBHVUMgb3B0aW9ucywg Z2V0IGJhY2tlbmQgcGlkIGFuZCBydW4gYSBsb25nIHRpbWUgcXVlcnkKKyRub2RlLT5wc3FsKCdw b3N0Z3JlcycsICIkc2V0X2d1YyBTRUxFQ1QgcGdfYmFja2VuZF9waWQoKTsgJGxvbmdfcXVlcnki LAorICAgICAgICAgICAgc3Rkb3V0ID0+IFwkcGlkLCB0aW1lb3V0ID0+IDIsIHRpbWVkX291dCA9 PiBcJHRpbWVkX291dCk7CisKKyMgR2l2ZSB0aW1lIHRvIHRoZSBiYWNrZW5kIHRvIGRldGVjdCBj bGllbnQgZGlzY29ubmVjdGVkCitzbGVlcCAzOworIyBDaGVjayBpZiBiYWNrZW5kIGlzIHN0aWxs IGFsaXZlCitteSAkaXNfYWxpdmUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IHdoZXJlIHBpZCA9ICRwaWQ7Iik7Citp cygkaXNfYWxpdmUsICcwJywgJ1Rlc3Q6IGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFs IGVuYWJsZScpOworJG5vZGUtPnN0b3A7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVEVTVCAyOiBHVUMgY2xpZW50X2Nvbm5l Y3Rpb25fY2hlY2tfaW50ZXJ2YWw6IGRpc2FibGVkICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGUtPnN0YXJ0OworJHNl dF9ndWMgPSBxeworICAgIFNFVCBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCA9IDA7 Cit9OworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgIiRzZXRfZ3VjIFNFTEVDVCBwZ19iYWNrZW5k X3BpZCgpOyAkbG9uZ19xdWVyeSIsCisgICAgICAgICAgICBzdGRvdXQgPT4gXCRwaWQsIHRpbWVv dXQgPT4gMiwgdGltZWRfb3V0ID0+IFwkdGltZWRfb3V0KTsKKyMgR2l2ZSB0aW1lIHRvIHRoZSBj bGllbnQgdG8gZGlzY29ubmVjdAorc2xlZXAgMzsKKyMgQ2hlY2sgaWYgYmFja2VuZCBpcyBzdGls bCBhbGl2ZQorJGlzX2FsaXZlID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gcGdfc3RhdF9hY3Rpdml0eSB3aGVyZSBwaWQgPSAkcGlkOyIpOworaXMo JGlzX2FsaXZlLCAnMScsICdUZXN0OiBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCBk aXNhYmxlJyk7Ciskbm9kZS0+c3RvcDsK --=_4267409633d5525d4c927d0966e30e1e--