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 1gs9lF-0000tt-6L for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Feb 2019 17:16:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gs9lD-0007IV-PL for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Feb 2019 17:16:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gs9lD-0007IO-GL for pgsql-hackers@lists.postgresql.org; Fri, 08 Feb 2019 17:16:19 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gs9lA-0005Tb-Qv for pgsql-hackers@postgresql.org; Fri, 08 Feb 2019 17:16:18 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id DC33521CBB39; Fri, 8 Feb 2019 20:16:15 +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 B124121CBB28; Fri, 8 Feb 2019 20:16:15 +0300 (MSK) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_613cf2adf89560fb8db46e3469952b42" Date: Fri, 08 Feb 2019 20:16:15 +0300 From: s.cherkashin@postgrespro.ru To: Tom Lane Cc: pgsql-hackers@postgresql.org Subject: Re: Add client connection check during the execution of the query In-Reply-To: <19003.1547420739@sss.pgh.pa.us> References: <77def86b27e41f0efcba411460e929ae@postgrespro.ru> <19003.1547420739@sss.pgh.pa.us> Message-ID: 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 --=_613cf2adf89560fb8db46e3469952b42 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed The purpose of this patch is to stop the execution of continuous requests in case of a disconnection from the client. In most cases, the client must wait for a response from the server before sending new data - which means there should not remain unread data on the socket and we will be able to determine a broken connection. Perhaps exceptions are possible, but I could not think of such a use case (except COPY). I would be grateful if someone could offer such cases or their solutions. I added a test for the GUC variable when the client connects via SSL, but I'm not sure that this test is really necessary. Best regards, Sergey Cherkashin. --=_613cf2adf89560fb8db46e3469952b42 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=Add_client_connection_check_v2.patch Content-Disposition: attachment; filename=Add_client_connection_check_v2.patch; size=13400 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCBiNmY1ODIyYjg0Li4zNmQwMzFkZjNjIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC04MjU5 LDYgKzgyNTksMjYgQEAgZHluYW1pY19saWJyYXJ5X3BhdGggPSAnQzpcdG9vbHNccG9zdGdyZXNx bDtIOlxteV9wcm9qZWN0XGxpYjskbGliZGlyJwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWNsaWVudC1jb25uZWN0 aW9uLWNoZWNrLWludGVydmFsIiB4cmVmbGFiZWw9ImNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJt PgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVy dmFsPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJh PgorICAgICAgICBTZXRzIGEgdGltZSBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLCBiZXR3ZWVu IHBlcmlvZGljCisgICAgICAgIHZlcmlmaWNhdGlvbiBvZiBjbGllbnQtc2VydmVyIGNvbm5lY3Rp b24gZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlvbi4KKyAgICAgICAgSWYgdGhlIGNsaWVudCBhYm9ydHMg dGhlIGNvbm5lY3Rpb24sIHRoZSBxdWVyeSBpcyB0ZXJtaW5hdGVkLgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD56ZXJvPC9s aXRlcmFsPiAtIGl0IGRpc2FibGVzIGNvbm5lY3Rpb24KKyAgICAgICAgY2hlY2tzLCBzbyB0aGUg YmFja2VuZCB3aWxsIGRldGVjdCBjbGllbnQgZGlzY29ubmVjdGlvbiBvbmx5IHdoZW4gdHJ5aW5n CisgICAgICAgIHRvIHNlbmQgYSByZXNwb25zZSB0byB0aGUgcXVlcnkuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJp YWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9saWJwcS9wcWNvbW0uYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCmluZGV4IGMz OTYxN2E0MzAuLjdlNDM3MzQ4NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29t bS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCkBAIC0xMjAsNiArMTIwLDcgQEAK ICAqLwogaW50CQkJVW5peF9zb2NrZXRfcGVybWlzc2lvbnM7CiBjaGFyCSAgICpVbml4X3NvY2tl dF9ncm91cDsKK2ludCAJCWNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsOwogCiAvKiBX aGVyZSB0aGUgVW5peCBzb2NrZXQgZmlsZXMgYXJlIChsaXN0IG9mIHBhbGxvYydkIHN0cmluZ3Mp ICovCiBzdGF0aWMgTGlzdCAqc29ja19wYXRocyA9IE5JTDsKQEAgLTE5MjYsMyArMTkyNywzMyBA QCBwcV9zZXRrZWVwYWxpdmVzY291bnQoaW50IGNvdW50LCBQb3J0ICpwb3J0KQogCiAJcmV0dXJu IFNUQVRVU19PSzsKIH0KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CXBxX2NoZWNrX2NsaWVudF9jb25uZWN0aW9uIC0gY2hlY2sgaWYgY2xpZW50IGNvbm5lY3RlZCB0 byBzb2NrZXQgb3Igbm90CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov Cit2b2lkIHBxX2NoZWNrX2NsaWVudF9jb25uZWN0aW9uKHZvaWQpCit7CisJQ2hlY2tDbGllbnRD b25uZWN0aW9uUGVuZGluZyA9IGZhbHNlOworCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJgorCQlN eVByb2NQb3J0ICE9IE5VTEwgJiYgIVBxQ29tbVJlYWRpbmdNc2cgJiYgIVBxQ29tbUJ1c3kpCisJ eworCQljaGFyIG5leHRieXRlOworCQlpbnQgcjsKKworI2lmZGVmIFdJTjMyCisJCXBnd2luMzJf bm9ibG9jayA9IDE7CisjZW5kaWYKKwkJciA9IHJlY3YoTXlQcm9jUG9ydC0+c29jaywgJm5leHRi eXRlLCAxLCBNU0dfUEVFSyk7CisjaWZkZWYgV0lOMzIKKwkJcGd3aW4zMl9ub2Jsb2NrID0gMDsK KyNlbmRpZgorCisJCWlmIChyID09IDAgfHwgKHIgPT0gLTEgJiYKKwkJCWVycm5vICE9IEVBR0FJ TiAmJiBlcnJubyAhPSBFV09VTERCTE9DSyAmJiBlcnJubyAhPSBFSU5UUikpCisJCXsKKwkJCUNs aWVudENvbm5lY3Rpb25Mb3N0ID0gdHJ1ZTsKKwkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwor CQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGU3NzNmMjBkOWYuLjAyMzBhMGZkZDAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKQEAgLTMwMzAsNiArMzAzMCw4IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZv aWQpCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLAogCQkJCQkgZXJybXNn KCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQiKSkp OwogCX0KKwlpZiAoQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZykKKwkJcHFfY2hlY2tfY2xp ZW50X2Nvbm5lY3Rpb24oKTsKIAlpZiAoQ2xpZW50Q29ubmVjdGlvbkxvc3QpCiAJewogCQlRdWVy eUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsgLyogbG9zdCBjb25uZWN0aW9uIHRydW1wcyBRdWVyeUNh bmNlbCAqLwpAQCAtNDIwOCw2ICs0MjEwLDkgQEAgUG9zdGdyZXNNYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10sCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQlEb2luZ0NvbW1h bmRSZWFkID0gZmFsc2U7CisJCWlmIChjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCkK KwkJCWVuYWJsZV90aW1lb3V0X2FmdGVyKFNLSVBfQ0xJRU5UX0NIRUNLX1RJTUVPVVQsCisJCQkJ CQkJCSBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7CiAKIAkJLyoKIAkJICogKDUp IHR1cm4gb2ZmIHRoZSBpZGxlLWluLXRyYW5zYWN0aW9uIHRpbWVvdXQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9n bG9iYWxzLmMKaW5kZXggZmQ1MTkzNGFhZi4uYzE1YWVmMzc5MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9n bG9iYWxzLmMKQEAgLTMwLDYgKzMwLDcgQEAgUHJvdG9jb2xWZXJzaW9uIEZyb250ZW5kUHJvdG9j b2w7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwogdm9s YXRpbGUgc2lnX2F0b21pY190IFF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUg c2lnX2F0b21pY190IFByb2NEaWVQZW5kaW5nID0gZmFsc2U7Cit2b2xhdGlsZSBzaWdfYXRvbWlj X3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0 b21pY190IENsaWVudENvbm5lY3Rpb25Mb3N0ID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKaW5kZXggYzBiNjIzMTQ1OC4uNDViYzhiYWJiYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvcG9zdGluaXQuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdf ZGJfcm9sZV9zZXR0aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAj aW5jbHVkZSAibGlicHEvYXV0aC5oIgorI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVk ZSAibGlicHEvbGlicHEtYmUuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgpAQCAtNzIsNiArNzMsNyBAQCBzdGF0aWMgdm9pZCBTaHV0ZG93blBvc3Rn cmVzKGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgU3RhdGVtZW50VGltZW91dEhh bmRsZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBMb2NrVGltZW91dEhhbmRsZXIodm9pZCk7CiBzdGF0 aWMgdm9pZCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKTsKK3N0 YXRpYyB2b2lkIENsaWVudENoZWNrVGltZW91dEhhbmRsZXIodm9pZCk7CiBzdGF0aWMgYm9vbCBU aGVyZUlzQXRMZWFzdE9uZVJvbGUodm9pZCk7CiBzdGF0aWMgdm9pZCBwcm9jZXNzX3N0YXJ0dXBf b3B0aW9ucyhQb3J0ICpwb3J0LCBib29sIGFtX3N1cGVydXNlcik7CiBzdGF0aWMgdm9pZCBwcm9j ZXNzX3NldHRpbmdzKE9pZCBkYXRhYmFzZWlkLCBPaWQgcm9sZWlkKTsKQEAgLTYyOCw2ICs2MzAs NyBAQCBJbml0UG9zdGdyZXMoY29uc3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsIGNvbnN0 IGNoYXIgKnVzZXJuYW1lLAogCQlSZWdpc3RlclRpbWVvdXQoTE9DS19USU1FT1VULCBMb2NrVGlt ZW91dEhhbmRsZXIpOwogCQlSZWdpc3RlclRpbWVvdXQoSURMRV9JTl9UUkFOU0FDVElPTl9TRVNT SU9OX1RJTUVPVVQsCiAJCQkJCQlJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0SGFuZGxl cik7CisJCVJlZ2lzdGVyVGltZW91dChTS0lQX0NMSUVOVF9DSEVDS19USU1FT1VULCBDbGllbnRD aGVja1RpbWVvdXRIYW5kbGVyKTsKIAl9CiAKIAkvKgpAQCAtMTIzOSw2ICsxMjQyLDE2IEBAIElk bGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiAJU2V0TGF0Y2goTXlM YXRjaCk7CiB9CiAKK3N0YXRpYyB2b2lkCitDbGllbnRDaGVja1RpbWVvdXRIYW5kbGVyKHZvaWQp Cit7CisJQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRydWU7CisJSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7CisJaWYgKGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsID4gMCkK KwkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIoU0tJUF9DTElFTlRfQ0hFQ0tfVElNRU9VVCwKKwkJCQkJ CQkgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwpOworfQorCiAvKgogICogUmV0dXJu cyB0cnVlIGlmIGF0IGxlYXN0IG9uZSByb2xlIGlzIGRlZmluZWQgaW4gdGhpcyBkYXRhYmFzZSBj bHVzdGVyLgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBjMjE2ZWQwOTIyLi40YTE0MzE0Nzdk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMxNDIsNiArMzE0MiwxNiBAQCBzdGF0aWMgc3RydWN0 IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9 LAogCisJeworCQl7ImNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsIiwgUEdDX1VTRVJT RVQsIENMSUVOVF9DT05OX09USEVSLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSB0aW1lIGlu dGVydmFsIGZvciBjaGVja2luZyBjb25uZWN0aW9uIHdpdGggdGhlIGNsaWVudC4iKSwKKwkJCWdl dHRleHRfbm9vcCgiQSB2YWx1ZSBvZiAtMSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFplcm8gc2Vs ZWN0cyBhIHN1aXRhYmxlIGRlZmF1bHQgdmFsdWUuIiksCisJCQlHVUNfVU5JVF9NUworCQl9LAor CQkmY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwsCisJCTAsIDAsIElOVF9NQVgsCisJ CU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJ e05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAwLCAwLCAwLCBOVUxMLCBOVUxMLCBOVUxM CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXgg YTIxODY1YTc3Zi4uYzY4MmRjYzQ2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNjc0LDYgKzY3NCw5IEBACiAKICNkeW5hbWljX2xpYnJh cnlfcGF0aCA9ICckbGliZGlyJwogCisjY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwg PSAxMDAwCSMgc2V0IHRpbWUgaW50ZXJ2YWwgYmV0d2VlbgorCQkJCQkJCQkJCQkjIGNvbm5lY3Rp b24gY2hlY2tzLCBpbiBtcworCQkJCQkJCQkJCQkjIDAgaXMgZGlzYWJsZWQKIAogIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIyBMT0NLIE1BTkFHRU1FTlQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2xpYnBxL2xpYnBxLmggYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCmluZGV4IDc1NTgxOWNj NTguLjAwNDhhOWVlNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKKysr IGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaApAQCAtNzEsNiArNzEsNyBAQCBleHRlcm4gaW50 CXBxX2dldGJ5dGUodm9pZCk7CiBleHRlcm4gaW50CXBxX3BlZWtieXRlKHZvaWQpOwogZXh0ZXJu IGludAlwcV9nZXRieXRlX2lmX2F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyICpjKTsKIGV4dGVybiBp bnQJcHFfcHV0Ynl0ZXMoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBw cV9jaGVja19jbGllbnRfY29ubmVjdGlvbih2b2lkKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9y IGZ1bmN0aW9ucyBpbiBiZS1zZWN1cmUuYwpAQCAtMTAyLDYgKzEwMyw3IEBAIGV4dGVybiBXYWl0 RXZlbnRTZXQgKkZlQmVXYWl0U2V0OwogZXh0ZXJuIGNoYXIgKlNTTENpcGhlclN1aXRlczsKIGV4 dGVybiBjaGFyICpTU0xFQ0RIQ3VydmU7CiBleHRlcm4gYm9vbCBTU0xQcmVmZXJTZXJ2ZXJDaXBo ZXJzOworZXh0ZXJuIGludCBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbDsKIGV4dGVy biBpbnQJc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uOwogZXh0ZXJuIGludAlzc2xfbWF4X3Byb3Rv Y29sX3ZlcnNpb247CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3Jj L2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggYzllMzUwMDNhNS4uOGI3ZjcyZDBkMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmgKQEAgLTgzLDcgKzgzLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBRdWVyeUNhbmNlbFBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IFByb2NEaWVQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ29uZmlnUmVsb2FkUGVuZGluZzsK LQorZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDaGVja0NsaWVudENv bm5lY3Rpb25QZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBDbGllbnRDb25uZWN0aW9uTG9zdDsKIAogLyogdGhlc2UgYXJlIG1hcmtlZCB2b2xhdGlsZSBi ZWNhdXNlIHRoZXkgYXJlIGV4YW1pbmVkIGJ5IHNpZ25hbCBoYW5kbGVyczogKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVvdXQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVv dXQuaAppbmRleCA5MjQ0YTJhN2I3Li5hY2QyNmJiMzljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy90aW1lb3V0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oCkBAIC0z MSw2ICszMSw3IEBAIHR5cGVkZWYgZW51bSBUaW1lb3V0SWQKIAlTVEFOREJZX1RJTUVPVVQsCiAJ U1RBTkRCWV9MT0NLX1RJTUVPVVQsCiAJSURMRV9JTl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVP VVQsCisJU0tJUF9DTElFTlRfQ0hFQ0tfVElNRU9VVCwKIAkvKiBGaXJzdCB1c2VyLWRlZmluYWJs ZSB0aW1lb3V0IHJlYXNvbiAqLwogCVVTRVJfVElNRU9VVCwKIAkvKiBNYXhpbXVtIG51bWJlciBv ZiB0aW1lb3V0IHJlYXNvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZp bGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDE5ZDYwYTUwNmUuLjUyNmE1MTQ5 Y2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9NYWtlZmlsZQpAQCAtNyw2ICs3LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikv c3JjL01ha2VmaWxlLmdsb2JhbAogU1VCRElSUyA9IFwKIAkJICBicmluIFwKIAkJICBjb21taXRf dHMgXAorCQkgIGNvbm5lY3Rpb24gXAogCQkgIGR1bW15X3NlY2xhYmVsIFwKIAkJICBzbmFwc2hv dF90b29fb2xkIFwKIAkJICB0ZXN0X2Jsb29tZmlsdGVyIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvY29ubmVjdGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvY29ubmVjdGlv bi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41YzQ0ZDdh ZDQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9jb25uZWN0aW9uL01ha2Vm aWxlCkBAIC0wLDAgKzEsMTYgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy9jb25uZWN0aW9uL01ha2Vm aWxlCisKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvY29ubmVjdGlvbgordG9wX2J1aWxkZGly ID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKKworZXhwb3J0IHdpdGhfb3BlbnNzbAorCitjaGVjazoKKwkkKHByb3ZlX2NoZWNrKQorCitp bnN0YWxsY2hlY2s6CisJJChwcm92ZV9pbnN0YWxsY2hlY2spCisKK2NsZWFuIGRpc3RjbGVhbiBt YWludGFpbmVyLWNsZWFuOgorCXJtIC1yZiB0bXBfY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvY29ubmVjdGlvbi90LzAwMV9jbG9zZV9jb25uZWN0aW9uLnBsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9jb25uZWN0aW9uL3QvMDAxX2Nsb3NlX2Nvbm5lY3Rpb24ucGwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2Y3Mjc4MzNlYwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvY29ubmVjdGlvbi90LzAwMV9jbG9zZV9jb25uZWN0aW9uLnBsCkBA IC0wLDAgKzEsMTA3IEBACisjIENoZWNrIGlmIGJhY2tlbmQgc3RvcHBlZCBhZnRlciBjbGllbnQg ZGlzY29ubmVjdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3Jlc05v ZGU7Cit1c2UgVGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlOwordXNlIEZpbGU6OkNvcHk7CisKK2lm ICgkRU5We3dpdGhfb3BlbnNzbH0gZXEgJ3llcycpCit7CisgICAgcGxhbiB0ZXN0cyA9PiAzOwor fQorZWxzZQoreworICAgIHBsYW4gdGVzdHMgPT4gMjsKK30KKworbXkgJGxvbmdfcXVlcnkgPSBx eworRE8KKyQkCitERUNMQVJFIHJvd19kYXRhIFJFQ09SRDsKK0JFR0lOCitFWEVDVVRFICdDUkVB VEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBrZWVwX2FsaXZlX3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygwLDEwMDAwMCkgQVMgdHQnOworRk9SIHJvd19kYXRhIElOCisgICAgU0VMRUNUIHR0 CisgICAgRlJPTSBrZWVwX2FsaXZlX3Rlc3QKK0xPT1AKKyAgICBFWEVDVVRFICdTRUxFQ1QgY291 bnQoKikgRlJPTSBrZWVwX2FsaXZlX3Rlc3QnOworRU5EIExPT1A7CitFTkQkJDsKK307CitteSAk c2V0X2d1Y19vbiA9IHF7CisgICAgU0VUIGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFs ID0gMTAwMDsKK307CitteSAkc2V0X2d1Y19vZmYgPSBxeworICAgIFNFVCBjbGllbnRfY29ubmVj dGlvbl9jaGVja19pbnRlcnZhbCA9IDA7Cit9OworbXkgKCRwaWQsICR0aW1lZF9vdXQpOworCitt eSAkbm9kZSA9IGdldF9uZXdfbm9kZSgnbm9kZScpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+c3Rh cnQ7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBURVNUIDE6IEdVQyBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbDog ZW5hYmxlZCAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIyBTZXQgR1VDIG9wdGlvbnMsIGdldCBiYWNrZW5kIHBpZCBhbmQgcnVu IGEgbG9uZyB0aW1lIHF1ZXJ5Ciskbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiJHNldF9ndWNfb24g U0VMRUNUIHBnX2JhY2tlbmRfcGlkKCk7ICRsb25nX3F1ZXJ5IiwKKyAgICAgICAgICAgIHN0ZG91 dCA9PiBcJHBpZCwgdGltZW91dCA9PiAyLCB0aW1lZF9vdXQgPT4gXCR0aW1lZF9vdXQpOworCisj IEdpdmUgdGltZSB0byB0aGUgYmFja2VuZCB0byBkZXRlY3QgY2xpZW50IGRpc2Nvbm5lY3RlZAor c2xlZXAgMzsKKyMgQ2hlY2sgaWYgYmFja2VuZCBpcyBzdGlsbCBhbGl2ZQorbXkgJGlzX2FsaXZl ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf c3RhdF9hY3Rpdml0eSB3aGVyZSBwaWQgPSAkcGlkOyIpOworaXMoJGlzX2FsaXZlLCAnMCcsICdU ZXN0OiBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCBlbmFibGUnKTsKKyRub2RlLT5z dG9wOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRFU1QgMjogR1VDIGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFs OiBkaXNhYmxlZCAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyRub2RlLT5zdGFydDsKKyRub2RlLT5wc3FsKCdwb3N0Z3Jlcycs ICIkc2V0X2d1Y19vZmYgU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCk7ICRsb25nX3F1ZXJ5IiwKKyAg ICAgICAgICAgIHN0ZG91dCA9PiBcJHBpZCwgdGltZW91dCA9PiAyLCB0aW1lZF9vdXQgPT4gXCR0 aW1lZF9vdXQpOworIyBHaXZlIHRpbWUgdG8gdGhlIGNsaWVudCB0byBkaXNjb25uZWN0CitzbGVl cCAzOworIyBDaGVjayBpZiBiYWNrZW5kIGlzIHN0aWxsIGFsaXZlCiskaXNfYWxpdmUgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19zdGF0X2Fj dGl2aXR5IHdoZXJlIHBpZCA9ICRwaWQ7Iik7CitpcygkaXNfYWxpdmUsICcxJywgJ1Rlc3Q6IGNs aWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsIGRpc2FibGUnKTsKKyRub2RlLT5zdG9wOwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRFU1QgMzogVXNpbmcgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwgd2hl biAgICAjCisjICAgICAgICAgY2xpZW50IGNvbm5lY3RlZCB1c2luZyBTU0wgICAgICAgICAgICAg ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKK2lmICgkRU5We3dpdGhfb3BlbnNzbH0gZXEgJ3llcycpCit7CisgICAg IyBUaGUgY2xpZW50J3MgcHJpdmF0ZSBrZXkgbXVzdCBub3QgYmUgd29ybGQtcmVhZGFibGUsIHNv IHRha2UgYSBjb3B5CisgICAgIyBvZiB0aGUga2V5IHN0b3JlZCBpbiB0aGUgY29kZSB0cmVlIGFu ZCB1cGRhdGUgaXRzIHBlcm1pc3Npb25zLgorICAgIGNvcHkoIi4uLy4uL3NzbC9zc2wvY2xpZW50 LmtleSIsICIuLi8uLi9zc2wvc3NsL2NsaWVudF90bXAua2V5Iik7CisgICAgY2htb2QgMDYwMCwg Ii4uLy4uL3NzbC9zc2wvY2xpZW50X3RtcC5rZXkiOworICAgIGNvcHkoIi4uLy4uL3NzbC9zc2wv Y2xpZW50LXJldm9rZWQua2V5IiwgIi4uLy4uL3NzbC9zc2wvY2xpZW50LXJldm9rZWRfdG1wLmtl eSIpOworICAgIGNobW9kIDA2MDAsICIuLi8uLi9zc2wvc3NsL2NsaWVudC1yZXZva2VkX3RtcC5r ZXkiOworICAgICRFTlZ7UEdIT1NUfSA9ICRub2RlLT5ob3N0OworICAgICRFTlZ7UEdQT1JUfSA9 ICRub2RlLT5wb3J0OworCisgICAgb3BlbiBteSAkc3NsY29uZiwgJz4nLCAkbm9kZS0+ZGF0YV9k aXIgLiAiL3NzbGNvbmZpZy5jb25mIjsKKyAgICBwcmludCAkc3NsY29uZiAic3NsPW9uXG4iOwor ICAgIHByaW50ICRzc2xjb25mICJzc2xfY2VydF9maWxlPSdzZXJ2ZXItY24tb25seS5jcnQnXG4i OworICAgIHByaW50ICRzc2xjb25mICJzc2xfa2V5X2ZpbGU9J3NlcnZlci1wYXNzd29yZC5rZXkn XG4iOworICAgIHByaW50ICRzc2xjb25mICJzc2xfcGFzc3BocmFzZV9jb21tYW5kPSdlY2hvIHNl Y3JldDEnXG4iOworICAgIGNsb3NlICRzc2xjb25mOworCisgICAgJG5vZGUtPnN0YXJ0OworICAg ICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICIkc2V0X2d1Y19vbiBTRUxFQ1QgcGdfYmFja2VuZF9w aWQoKTsgJGxvbmdfcXVlcnkiLAorICAgICAgICAgICAgICAgIHN0ZG91dCA9PiBcJHBpZCwgdGlt ZW91dCA9PiAyLCB0aW1lZF9vdXQgPT4gXCR0aW1lZF9vdXQsCisgICAgICAgICAgICAgICAgc3Ns bW9kZSA9PiAncmVxdWlyZScpOworCisgICAgIyBHaXZlIHRpbWUgdG8gdGhlIGJhY2tlbmQgdG8g ZGV0ZWN0IGNsaWVudCBkaXNjb25uZWN0ZWQKKyAgICBzbGVlcCAzOworICAgICMgQ2hlY2sgaWYg YmFja2VuZCBpcyBzdGlsbCBhbGl2ZQorICAgIG15ICRpc19hbGl2ZSA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgd2hl cmUgcGlkID0gJHBpZDsiKTsKKyAgICBpcygkaXNfYWxpdmUsICcwJywgJ1Rlc3Q6IGNsaWVudF9j b25uZWN0aW9uX2NoZWNrX2ludGVydmFsIGVuYWJsZWQsIFNTTCcpOworICAgICRub2RlLT5zdG9w OworfQo= --=_613cf2adf89560fb8db46e3469952b42--