Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1doret-0003fd-Dd for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Sep 2017 13:43:23 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dores-0007G5-1A for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Sep 2017 13:43:22 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dord8-0004Kd-SR for pgsql-hackers@postgresql.org; Mon, 04 Sep 2017 13:41:35 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dord0-00022m-HR for pgsql-hackers@postgresql.org; Mon, 04 Sep 2017 13:41:33 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id CF36521C091B for ; Mon, 4 Sep 2017 16:41:23 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru Received: from mail.postgrespro.ru (unknown [192.168.27.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id A827F21C08CA for ; Mon, 4 Sep 2017 16:41:23 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1504532483; bh=uKMTZRB/TiS7R9USiuVSiJwMgqWIVJEGkN1hX1OkG9Q=; h=Date:From:To:Subject:In-Reply-To:References; b=puKoAw0/Godi6SYh0sz3Af9C2eNliiKHP6et0HEFfKHtQ+JftXieaFhtdtWjAk/hg xzM/cZ+aWNaLksNoJIxRZS6wLq8pQvBMdTG0+CBko451ALGqC+Pc5dM1bL1GGVPtKY 1JD+/78LGx1w3RwgLK/g1dhNb35bU6OaNPxT20lc= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_88ef29997e11908d328c1bf120512d41" Date: Mon, 04 Sep 2017 16:41:23 +0300 From: i.kartyshov@postgrespro.ru To: pgsql-hackers@postgresql.org Subject: Re: make async slave to wait for lsn to be replayed In-Reply-To: References: <0240c26c-9f84-30ea-fca9-93ab2df5f305@postgrespro.ru> <9dcc266e-d258-1a94-f4a9-30c0f435e5d2@pgmasters.net> <001601f4-c70e-2fc2-c45a-8d8192ae9d77@postgrespro.ru> Message-ID: <45fd50e15a0809a6b837cd8eafe251d7@postgrespro.ru> X-Sender: i.kartyshov@postgrespro.ru User-Agent: Roundcube Webmail/1.2.4 List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org --=_88ef29997e11908d328c1bf120512d41 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed I forget to include patch in last letter. Craig Ringer wrote 2017-08-15 05:00: > That ship sailed a long time ago unfortunately, they're all over > pg_stat_replication and pg_replication_slots and so on. They're > already routinely used for monitoring replication lag in bytes, > waiting for a peer to catch up, etc. > > -- > > Craig Ringer http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Training & Services Function pg_replication_slots is only master, and waitlsn is async hot standby replication function. It allows us to wait untill insert made on master is be replayed on replica. -- Ivan Kartyshov Postgres Professional: http://www.postgrespro.com Russian Postgres Company --=_88ef29997e11908d328c1bf120512d41 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=waitlsn_10dev_v6.patch Content-Disposition: attachment; filename=waitlsn_10dev_v6.patch; size=20697 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCAwMWFjYzJl Li42NzkyZWIwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZp bGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21s CkBAIC0xODEsNiArMTgxLDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUg c2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElU WSB1cGRhdGUgICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8 IUVOVElUWSB2YWN1dW0gICAgICAgICAgICAgU1lTVEVNICJ2YWN1dW0uc2dt bCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAgU1lTVEVNICJ2YWx1 ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0bHNuICAgICAgICAgICAgU1lTVEVN ICJ3YWl0bHNuLnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRp bGl0aWVzIC0tPgogPCFFTlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RF TSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi93YWl0bHNuLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3dhaXRsc24u c2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzdl ODY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi93YWl0 bHNuLnNnbWwKQEAgLTAsMCArMSwxMTkgQEAKKzwhLS0KK2RvYy9zcmMvc2dt bC9yZWYvd2FpdGxzbi5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24K Ky0tPgorCis8cmVmZW50cnkgaWQ9IlNRTC1XQUlUTFNOIj4KKyA8aW5kZXh0 ZXJtIHpvbmU9InNxbC13YWl0bHNuIj4KKyAgPHByaW1hcnk+V0FJVExTTjwv cHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVm ZW50cnl0aXRsZT5XQUlUTFNOPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1 YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5XQUlUTFNOPC9yZWZuYW1lPgor ICA8cmVmcHVycG9zZT53YWl0IHVudGlsIHRhcmdldCA8YWNyb255bT5MU048 Lz4gaGFzIGJlZW4gcmVwbGF5ZWQ8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1l ZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorV0FJVExT TiA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+J0xTTic8L3JlcGxh Y2VhYmxlPiBbICwgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmRl bGF5PC9yZXBsYWNlYWJsZT4gXQorV0FJVExTTl9JTkZJTklURSA8cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+J0xTTic8L3JlcGxhY2VhYmxlPgor V0FJVExTTl9OT19XQUlUIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVS Ij4nTFNOJzwvcmVwbGFjZWFibGU+Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lu b3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlv bjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+V0FJVExT TjwvY29tbWFuZD4gd2FpdCB0aWxsIHRhcmdldCA8YWNyb255bT5MU048Lz4g d2lsbAorICAgYmUgcmVwbGF5ZWQgd2l0aCBhbiBvcHRpb25hbCA8cXVvdGU+ ZGVsYXk8Lz4gKG1pbGxpc2Vjb25kcyBieSBkZWZhdWx0CisgICBpbmZpbml0 eSkgdG8gYmUgd2FpdCBmb3IgTFNOIHRvIHJlcGxheWVkLgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5XQUlUTFNOPC9jb21tYW5kPiBw cm92aWRlcyBhIHNpbXBsZQorICAgaW50ZXJwcm9jZXNzIDxhY3JvbnltPkxT TjwvPiB3YWl0IG1lY2hhbmlzbSBmb3IgYSBiYWNrZW5kcyBvbiBzbGF2ZQor ICAgaW4gbWFzdGVyLXNsYXZlIHJlcGxpY2F0aW9uIHNjaGVtZSBvbiA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGRhdGFiYXNlLgor ICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+V0FJVExT Tl9JTkZJTklURTwvY29tbWFuZD4gd2FpdCB0aWxsIHRhcmdldCA8YWNyb255 bT5MU048Lz4gd2lsbAorICAgYmUgcmVwbGF5ZWQgb24gc2xhdmUgLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+V0FJVExTTl9O T19XQUlUPC9jb21tYW5kPiB3aWxsIHRlbGwgaWYgdGFyZ2V0IDxhY3Jvbnlt PkxTTjwvPiB3YXMgcmVwbGF5ZWQgd2l0aG91dCBhbnkgd2FpdC4KKyAgPC9w YXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Q YXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+TFNOPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRhcmdldCBsb2cgc2VxdWVuY2Ug bnVtYmVyIHRvIGJlIHdhaXQgZm9yLgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ ZGVsYXk8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGltZSBpbiBtaWxpc2Vjb25kcyB0byB3YWl0 aW5nIGZvciBMU04gdG8gYmUgcmVwbGF5ZWQuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFi bGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRs ZT5Ob3RlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBEZWxheSB0aW1lIGZv ciB3YWl0aW5nIHRpbGwgTFNOIHRvIGJlIHJlcGxheWVkIG11c3QgYmUgaW50 ZWdlci4gRm9yCisgICBkZWZhdWx0IGl0IGlzIGluZmluaXR5LiBXYWl0aW5n IGNhbiBiZSBpbnRlcnVwcGVkIHVzaW5nIEN0bCtDLCBvcgorICAgYnkgUG9z dG1hc3RlciBkZWF0aC4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBh cmE+CisgICBDb25maWd1cmUgYW5kIGV4ZWN1dGUgYSB3YWl0bHNuIGZyb20K KyAgIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj46CisKKzxwcm9n cmFtbGlzdGluZz4KK1dBSVRMU04gJzAvM0YwN0E2QjEnLCAxMDAwMDsKK05P VElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIG1ha2UgYmlnZ2Vy IGRlbGF5LgorV0FJVExTTgorCitXQUlUTFNOICcwLzNGMDdBNjExJzsKK1dB SVRMU04KKworV0FJVExTTiAnMC8zRjBGRjc5MScsIDUwMDAwMDsKK15DQ2Fu Y2VsIHJlcXVlc3Qgc2VudAorTk9USUNFOiAgTFNOIGlzIG5vdCByZWFjaGVk LiBUcnkgdG8gbWFrZSBiaWdnZXIgZGVsYXkuCitFUlJPUjogIGNhbmNlbGlu ZyBzdGF0ZW1lbnQgZHVlIHRvIHVzZXIgcmVxdWVzdAorPC9wcm9ncmFtbGlz dGluZz4KKzwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgor ICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+Cisg ICBUaGVyZSBpcyBubyA8Y29tbWFuZD5XQUlUTFNOPC9jb21tYW5kPiBzdGF0 ZW1lbnQgaW4gdGhlIFNRTAorICAgc3RhbmRhcmQuCisgIDwvcGFyYT4KKyA8 L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uu c2dtbAppbmRleCA5MDAwYjNhLi4wYzU5NTFhIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl ZmVyZW5jZS5zZ21sCkBAIC0yMDksNiArMjA5LDcgQEAKICAgICZ1cGRhdGU7 CiAgICAmdmFjdXVtOwogICAgJnZhbHVlczsKKyAgICZ3YWl0bHNuOwogCiAg PC9yZWZlcmVuY2U+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCBkZjQ4NDNmLi45ZGZiNTlkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC00MCw2ICs0MCw3IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Rh Ymxlc3BhY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0bHNuLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAj aW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCkBAIC0xNDcsNyArMTQ4LDYgQEAg Y29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IHN5bmNfbWV0aG9kX29w dGlvbnNbXSA9IHsKIAl7TlVMTCwgMCwgZmFsc2V9CiB9OwogCi0KIC8qCiAg KiBBbHRob3VnaCBvbmx5ICJvbiIsICJvZmYiLCBhbmQgImFsd2F5cyIgYXJl IGRvY3VtZW50ZWQsCiAgKiB3ZSBhY2NlcHQgYWxsIHRoZSBsaWtlbHkgdmFy aWFudHMgb2YgIm9uIiBhbmQgIm9mZiIuCkBAIC03MjM3LDYgKzcyMzcsMTUg QEAgU3RhcnR1cFhMT0codm9pZCkKIAkJCQkJYnJlYWs7CiAJCQkJfQogCisJ CQkJLyoKKwkJCQkgKiBBZnRlciB1cGRhdGUgbGFzdFJlcGxheWVkRW5kUmVj UHRyIHNldCBMYXRjaGVzIGluIFNITUVNIGFycmF5CisJCQkJICovCisJCQkJ aWYgKFhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5X YWl0TFNOKCkpCisJCQkJeworCisJCQkJCVdhaXRMU05TZXRMYXRjaChYTG9n Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIpOworCQkJCX0KKwogCQkJCS8q IEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwgcmVjb3JkICovCiAJ CQkJcmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncmVhZGVyLCBJbnZhbGlkWExv Z1JlY1B0ciwgTE9HLCBmYWxzZSk7CiAJCQl9IHdoaWxlIChyZWNvcmQgIT0g TlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDRh NmM5OWUuLjBkMTAxMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2Vm aWxlCkBAIC0yMCw2ICsyMCw2IEBAIE9CSlMgPSBhbWNtZHMubyBhZ2dyZWdh dGVjbWRzLm8gYWx0ZXIubyBhbmFseXplLm8gYXN5bmMubyBjbHVzdGVyLm8g Y29tbWVudC5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5v IHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAogCXNjaGVtYWNtZHMu byBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0 aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyB0YWJsZXNwYWNlLm8gdHJpZ2dl ci5vIHRzZWFyY2hjbWRzLm8gdHlwZWNtZHMubyB1c2VyLm8gXAotCXZhY3V1 bS5vIHZhY3V1bWxhenkubyB2YXJpYWJsZS5vIHZpZXcubworCXZhY3V1bS5v IHZhY3V1bWxhenkubyB2YXJpYWJsZS5vIHZpZXcubyB3YWl0bHNuLm8KIAog aW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggYmFjYzA4ZS4uN2Q2 MDExZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC0xMzks NyArMTM5LDYgQEAKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAotCiAvKgogICogTWF4aW11 bSBzaXplIG9mIGEgTk9USUZZIHBheWxvYWQsIGluY2x1ZGluZyB0ZXJtaW5h dGluZyBOVUxMLiAgVGhpcwogICogbXVzdCBiZSBrZXB0IHNtYWxsIGVub3Vn aCBzbyB0aGF0IGEgbm90aWZpY2F0aW9uIG1lc3NhZ2UgZml0cyBvbiBvbmUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjZjYjdiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdGxzbi5jCkBAIC0wLDAg KzEsMjczIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CisgKiB3YWl0bHNuLmMKKyAqCSAgV2FpdExTTiBzdGF0bWVudDogV0FJVExT TgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE3LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAyMDE3LCBSZWdlbnRzIG9mIFBvc3RncmVzUHJv CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY29t bWFuZHMvd2FpdGxzbi5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqIFdhaXQgZm9yIExTTiBiZWVuIHJlcGxheWVkIG9uIHNsYXZl CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5j bHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVk ZSAicGdzdGF0LmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvYmFja2VuZGlkLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cu aCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJj b21tYW5kcy93YWl0bHNuLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKKyNpbmNsdWRlICJmdW5j YXBpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKKworLyogTGF0Y2hlcyBPd24tRGlzb3du TGF0Y2ggYW5kIEFib3J0Q9CwbGxCYWNrICovCitzdGF0aWMgdWludDMyIFdh aXRMU05TaG1lbVNpemUodm9pZCk7CitzdGF0aWMgdm9pZCBXTERpc293bkxh dGNoQWJvcnQoWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpOworc3RhdGlj IHZvaWQgV0xPd25MYXRjaChYTG9nUmVjUHRyIHRyZ19sc24pOworc3RhdGlj IHZvaWQgV0xEaXNvd25MYXRjaCh2b2lkKTsKKwordm9pZAkJX1BHX2luaXQo dm9pZCk7CisKKy8qIFNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyAqLwordHlw ZWRlZiBzdHJ1Y3QKK3sKKwlpbnQJCQkJCXBpZDsKKwl2b2xhdGlsZSBzbG9j a190CXNsb2NrOworCUxhdGNoCQkJCWxhdGNoOworCVhMb2dSZWNQdHIJCQl0 cmdfbHNuOworfSBCSURMYXRjaDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlj aGFyCQkJZHVtbXk7CQkJLy8g0KPQkdCg0JDQotCsCisJaW50CQkJCWJhY2tl bmRfbWF4aWQ7CisJWExvZ1JlY1B0cgkJbWluX2xzbjsKKwlCSURMYXRjaAkJ bF9hcnJbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gR2xvYlN0YXRlOwor CitzdGF0aWMgdm9sYXRpbGUgR2xvYlN0YXRlICAqc3RhdGU7Citib29sCQkJ CQkJaXNfbGF0Y2hfb3duZWQgPSBmYWxzZTsKKworLyogVGFrZSBMYXRjaCBm b3IgY3VycmVudCBiYWNrZW5kIGF0IHRoZSBiZWdpbmluZyBvZiBXQUlUTFNO ICovCitzdGF0aWMgdm9pZAorV0xPd25MYXRjaChYTG9nUmVjUHRyIHRyZ19s c24pCit7CisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bF9hcnJbTXlCYWNr ZW5kSWRdLnNsb2NrKTsKKwlPd25MYXRjaCgmc3RhdGUtPmxfYXJyW015QmFj a2VuZElkXS5sYXRjaCk7CisJaXNfbGF0Y2hfb3duZWQgPSB0cnVlOworCisJ aWYgKHN0YXRlLT5iYWNrZW5kX21heGlkIDwgTXlCYWNrZW5kSWQpCisJCXN0 YXRlLT5iYWNrZW5kX21heGlkID0gTXlCYWNrZW5kSWQ7CisKKwlzdGF0ZS0+ bF9hcnJbTXlCYWNrZW5kSWRdLnBpZCA9IE15UHJvY1BpZDsKKwlzdGF0ZS0+ bF9hcnJbTXlCYWNrZW5kSWRdLnRyZ19sc24gPSB0cmdfbHNuOworCVNwaW5M b2NrUmVsZWFzZSgmc3RhdGUtPmxfYXJyW015QmFja2VuZElkXS5zbG9jayk7 CisKKwlpZiAodHJnX2xzbiA8IHN0YXRlLT5taW5fbHNuKQorCQlzdGF0ZS0+ bWluX2xzbiA9IHRyZ19sc247Cit9CisKKy8qIFJlbGVhc2UgTGF0Y2ggZm9y IGN1cnJlbnQgYmFja2VuZCBhdCB0aGUgZW5kIG9mIFdBSVRMU04gKi8KK3N0 YXRpYyB2b2lkCitXTERpc293bkxhdGNoKHZvaWQpCit7CisJaW50IGk7CisJ WExvZ1JlY1B0ciB0cmdfbHNuID0gc3RhdGUtPmxfYXJyW015QmFja2VuZElk XS50cmdfbHNuOworCisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bF9hcnJb TXlCYWNrZW5kSWRdLnNsb2NrKTsKKwlEaXNvd25MYXRjaCgmc3RhdGUtPmxf YXJyW015QmFja2VuZElkXS5sYXRjaCk7CisJaXNfbGF0Y2hfb3duZWQgPSBm YWxzZTsKKwlzdGF0ZS0+bF9hcnJbTXlCYWNrZW5kSWRdLnBpZCA9IDA7CisJ c3RhdGUtPmxfYXJyW015QmFja2VuZElkXS50cmdfbHNuID0gSW52YWxpZFhM b2dSZWNQdHI7CisKKwkvKiBVcGRhdGUgc3RhdGUtPm1pbl9sc24gaWZmIGl0 IGlzIG5lc3Nlc2FyeSBjaG9vc2luZyBuZXh0IG1pbl9sc24gKi8KKwlpZiAo c3RhdGUtPm1pbl9sc24gPT0gdHJnX2xzbikKKwl7CisJCXN0YXRlLT5taW5f bHNuID0gUEdfVUlOVDY0X01BWDsKKwkJZm9yIChpID0gMjsgaSA8PSBzdGF0 ZS0+YmFja2VuZF9tYXhpZDsgaSsrKQorCQkJaWYgKHN0YXRlLT5sX2Fycltp XS50cmdfbHNuICE9IEludmFsaWRYTG9nUmVjUHRyICYmCisJCQkJc3RhdGUt PmxfYXJyW2ldLnRyZ19sc24gPCBzdGF0ZS0+bWluX2xzbikKKwkJCQlzdGF0 ZS0+bWluX2xzbiA9IHN0YXRlLT5sX2FycltpXS50cmdfbHNuOworCX0KKwor CWlmIChzdGF0ZS0+YmFja2VuZF9tYXhpZCA9PSBNeUJhY2tlbmRJZCkKKwkJ Zm9yIChpID0gKE1heENvbm5lY3Rpb25zKzEpOyBpID49MjsgaS0tKQorCQkJ aWYgKHN0YXRlLT5sX2FycltpXS5waWQgIT0gMCkKKwkJCXsKKwkJCQlzdGF0 ZS0+YmFja2VuZF9tYXhpZCA9IGk7CisJCQkJYnJlYWs7CisJCQl9CisKKwlT cGluTG9ja1JlbGVhc2UoJnN0YXRlLT5sX2FycltNeUJhY2tlbmRJZF0uc2xv Y2spOworfQorCisvKiBDYWxsQmFjayBmdW5jdGlvbiBvbiBhYm9ydCovCitz dGF0aWMgdm9pZAorV0xEaXNvd25MYXRjaEFib3J0KFhhY3RFdmVudCBldmVu dCwgdm9pZCAqYXJnKQoreworCWlmIChpc19sYXRjaF9vd25lZCAmJiAoZXZl bnQgPT0gWEFDVF9FVkVOVF9QQVJBTExFTF9BQk9SVCB8fAorCQkJCQkJICAg ZXZlbnQgPT0gWEFDVF9FVkVOVF9BQk9SVCkpCisJeworCQlXTERpc293bkxh dGNoKCk7CisJfQorfQorCisvKiBNb2R1bGUgbG9hZCBjYWxsYmFjayAqLwor dm9pZAorX1BHX2luaXQodm9pZCkKK3sKKwlpZiAoIUlzVW5kZXJQb3N0bWFz dGVyKQorCQlSZWdpc3RlclhhY3RDYWxsYmFjayhXTERpc293bkxhdGNoQWJv cnQsIE5VTEwpOworfQorCisvKiBHZXQgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5 IHRvIHJvb20gR2xvYlN0YXRlICovCitzdGF0aWMgdWludDMyCitXYWl0TFNO U2htZW1TaXplKHZvaWQpCit7CisJcmV0dXJuIG9mZnNldG9mKEdsb2JTdGF0 ZSwgbF9hcnIpICsgc2l6ZW9mKEJJRExhdGNoKSAqIChNYXhDb25uZWN0aW9u cysxKTsKK30KKworLyogSW5pdCBhcnJheSBvZiBMYXRjaGVzIGluIHNoYXJl ZCBtZW1vcnkgKi8KK3ZvaWQKK1dhaXRMU05TaG1lbUluaXQodm9pZCkKK3sK Kwlib29sCWZvdW5kOworCXVpbnQJaTsKKworCXN0YXRlID0gKEdsb2JTdGF0 ZSAqKSBTaG1lbUluaXRTdHJ1Y3QoInBnX3dhaXRfbHNuIiwKKwkJCQkJCQkJ CQkgIFdhaXRMU05TaG1lbVNpemUoKSwKKwkJCQkJCQkJCQkgICZmb3VuZCk7 CisJaWYgKCFmb3VuZCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCAoTWF4Q29u bmVjdGlvbnMrMSk7IGkrKykKKwkJeworCQkJc3RhdGUtPmxfYXJyW2ldLnBp ZCA9IDA7CisJCQlzdGF0ZS0+bF9hcnJbaV0udHJnX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOworCQkJU3BpbkxvY2tJbml0KCZzdGF0ZS0+bF9hcnJbaV0u c2xvY2spOworCQkJSW5pdFNoYXJlZExhdGNoKCZzdGF0ZS0+bF9hcnJbaV0u bGF0Y2gpOworCQl9CisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gMDsKKwkJ c3RhdGUtPm1pbl9sc24gPSBQR19VSU5UNjRfTUFYOworCX0KK30KKworLyog U2V0IGFsbCBMYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgY2F1c2UgbmV3IExT TiBiZWVuIHJlcGxheWVkKi8KK3ZvaWQKK1dhaXRMU05TZXRMYXRjaChYTG9n UmVjUHRyIGN1cl9sc24pCit7CisJdWludCBpOworCisJZm9yIChpID0gMjsg aSA8PSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJaWYgKHN0 YXRlLT5sX2FycltpXS50cmdfbHNuICE9IDApCisJCXsKKwkJU3BpbkxvY2tB Y3F1aXJlKCZzdGF0ZS0+bF9hcnJbaV0uc2xvY2spOworCQlpZiAoc3RhdGUt PmxfYXJyW2ldLnRyZ19sc24gPD0gY3VyX2xzbikKKwkJCVNldExhdGNoKCZz dGF0ZS0+bF9hcnJbaV0ubGF0Y2gpOworCQlTcGluTG9ja1JlbGVhc2UoJnN0 YXRlLT5sX2FycltpXS5zbG9jayk7CisJCX0KKwl9Cit9CisKKy8qIEdldCBt aW5pbWFsIExTTiB0aGF0IHdpbGwgYmUgbmV4dCAqLworWExvZ1JlY1B0cgor R2V0TWluV2FpdExTTih2b2lkKQoreworCXJldHVybiBzdGF0ZS0+bWluX2xz bjsKK30KKworLyoKKyAqIE9uIFdBSVRMU04gb3duIGxhdGNoIGFuZCB3YWl0 IHRpbGwgTFNOIGlzIHJlcGxheWVkLCBQb3N0bWFzdGVyIGRlYXRoLCBpbnRl cnJ1cHRpb24KKyAqIG9yIHRpbWVvdXQuCisgKi8KK3ZvaWQKK1dhaXRMU05V dGlsaXR5KGNvbnN0IGNoYXIgKmxzbiwgY29uc3QgaW50IGRlbGF5LCBEZXN0 UmVjZWl2ZXIgKmRlc3QpCit7CisJWExvZ1JlY1B0cgkJdHJnX2xzbiA9IERh dHVtR2V0TFNOKERpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfbHNuX2luLCBDU3Ry aW5nR2V0RGF0dW0obHNuKSkpOworCVhMb2dSZWNQdHIJCWN1cl9sc247CisJ aW50CQkJCWxhdGNoX2V2ZW50czsKKwl1aW50NjRfdAkJdGRlbGF5ID0gZGVs YXk7CisJbG9uZwkJCXNlY3M7CisJaW50CQkJCW1pY3Jvc2VjczsKKwlUaW1l c3RhbXBUegkJdGltZXIgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJVHVw T3V0cHV0U3RhdGUJKnRzdGF0ZTsKKwlUdXBsZURlc2MJCXR1cGRlc2M7CisJ Y2hhcgkJICAgKnZhbHVlID0gImZhbHNlIjsKKworCWlmIChkZWxheSA+IDAp CisJCWxhdGNoX2V2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9QT1NUTUFTVEVSX0RFQVRIOworCWVsc2UKKwkJbGF0Y2hfZXZlbnRz ID0gV0xfTEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSDsKKworCVdM T3duTGF0Y2godHJnX2xzbik7CisKKwlmb3IgKDs7KQorCXsKKwkJY3VyX2xz biA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisKKwkJLyogSWYgTFNO IGhhZCBiZWVuIFJlcGxheWVkICovCisJCWlmICh0cmdfbHNuIDw9IGN1cl9s c24pCisJCQlicmVhazsKKworCQkvKiBJZiB0aGUgcG9zdG1hc3RlciBkaWVz LCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYgKCFQb3N0bWFzdGVySXNB bGl2ZSgpKQorCQkJYnJlYWs7CisKKwkJLyogSWYgRGVsYXkgdGltZSBpcyBv dmVyICovCisJCWlmIChsYXRjaF9ldmVudHMgJiBXTF9USU1FT1VUKQorCQl7 CisJCQlpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHModGltZXIsR2V0 Q3VycmVudFRpbWVzdGFtcCgpLGRlbGF5KSkKKwkJCQlicmVhazsKKwkJCVRp bWVzdGFtcERpZmZlcmVuY2UodGltZXIsR2V0Q3VycmVudFRpbWVzdGFtcCgp LCZzZWNzLCAmbWljcm9zZWNzKTsKKwkJCXRkZWxheSA9IGRlbGF5IC0gKHNl Y3MqMTAwMCArIG1pY3Jvc2Vjcy8xMDAwKTsKKwkJfQorCisJCU15UGdYYWN0 LT54bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCVdhaXRMYXRjaCgm c3RhdGUtPmxfYXJyW015QmFja2VuZElkXS5sYXRjaCwgbGF0Y2hfZXZlbnRz LCB0ZGVsYXksIFdBSVRfRVZFTlRfQ0xJRU5UX1JFQUQpOworCQlSZXNldExh dGNoKCZzdGF0ZS0+bF9hcnJbTXlCYWNrZW5kSWRdLmxhdGNoKTsKKworCQkv KiBDSEVDS19GT1JfSU5URVJSVVBUUyBpZiB0aGV5IGNvbWVzIHRoZW4gZGlz b3duIGxhdGNoIGN1cnJlbnQgKi8KKwkJaWYgKEludGVycnVwdFBlbmRpbmcp CisJCXsKKwkJCVdMRGlzb3duTGF0Y2goKTsKKwkJCVByb2Nlc3NJbnRlcnJ1 cHRzKCk7CisJCX0KKworCX0KKworCVdMRGlzb3duTGF0Y2goKTsKKworCWlm ICh0cmdfbHNuID4gY3VyX2xzbikKKwkJZWxvZyhOT1RJQ0UsIkxTTiBpcyBu b3QgcmVhY2hlZC4gVHJ5IHRvIG1ha2UgYmlnZ2VyIGRlbGF5LiIpOworCWVs c2UKKwkJdmFsdWUgPSAidHJ1ZSI7CisKKwkvKiBuZWVkIGEgdHVwbGUgZGVz Y3JpcHRvciByZXByZXNlbnRpbmcgYSBzaW5nbGUgVEVYVCBjb2x1bW4gKi8K Kwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSwgZmFsc2Up OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikg MSwgIkxTTiByZWFjaGVkIiwgVEVYVE9JRCwgLTEsIDApOworCS8qIHByZXBh cmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCisJdHN0YXRlID0gYmVn aW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MpOworCS8qIFNl bmQgaXQgKi8KKwlkb190ZXh0X291dHB1dF9vbmVsaW5lKHRzdGF0ZSwgdmFs dWUpOworCWVuZF90dXBfb3V0cHV0KHRzdGF0ZSk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQppbmRleCA3ZDBkZTk5Li44OWUxZTFkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTI3NSw3ICsyNzUsNyBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlTZWNMYWJlbFN0bXQgU2Vs ZWN0U3RtdCBUcmFuc2FjdGlvblN0bXQgVHJ1bmNhdGVTdG10CiAJCVVubGlz dGVuU3RtdCBVcGRhdGVTdG10IFZhY3V1bVN0bXQKIAkJVmFyaWFibGVSZXNl dFN0bXQgVmFyaWFibGVTZXRTdG10IFZhcmlhYmxlU2hvd1N0bXQKLQkJVmll d1N0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVyc2lvblN0bXQKKwkJ Vmlld1N0bXQgV2FpdExTTlN0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29u dmVyc2lvblN0bXQKIAkJRGVhbGxvY2F0ZVN0bXQgUHJlcGFyZVN0bXQgRXhl Y3V0ZVN0bXQKIAkJRHJvcE93bmVkU3RtdCBSZWFzc2lnbk93bmVkU3RtdAog CQlBbHRlclRTQ29uZmlndXJhdGlvblN0bXQgQWx0ZXJUU0RpY3Rpb25hcnlT dG10CkBAIC0zMjIsNyArMzIyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxsaXN0PglPcHRTY2hlbWFFbHRMaXN0 CiAKICV0eXBlIDxib29sZWFuPiBUcmlnZ2VyRm9yU3BlYyBUcmlnZ2VyRm9y VHlwZQotJXR5cGUgPGl2YWw+CVRyaWdnZXJBY3Rpb25UaW1lCisldHlwZSA8 aXZhbD4JVHJpZ2dlckFjdGlvblRpbWUgV2FpdERlbGF5CiAldHlwZSA8bGlz dD4JVHJpZ2dlckV2ZW50cyBUcmlnZ2VyT25lRXZlbnQKICV0eXBlIDx2YWx1 ZT4JVHJpZ2dlckZ1bmNBcmcKICV0eXBlIDxub2RlPglUcmlnZ2VyV2hlbgpA QCAtNjgyLDcgKzY4Miw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBW QUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElDIFZBUllJTkcKIAlWRVJC T1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCiAKLQlXSEVOIFdI RVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBXSVRISU4gV0lUSE9VVCBX T1JLIFdSQVBQRVIgV1JJVEUKKwlXQUlUTFNOIFdBSVRMU05fSU5GSU5JVEUg V0FJVExTTl9OT19XQUlUIFdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRP VworCVdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAK IAlYTUxfUCBYTUxBVFRSSUJVVEVTIFhNTENPTkNBVCBYTUxFTEVNRU5UIFhN TEVYSVNUUyBYTUxGT1JFU1QgWE1MTkFNRVNQQUNFUwogCVhNTFBBUlNFIFhN TFBJIFhNTFJPT1QgWE1MU0VSSUFMSVpFIFhNTFRBQkxFCkBAIC05MzMsNiAr OTM0LDcgQEAgc3RtdCA6CiAJCQl8IFZhcmlhYmxlU2V0U3RtdAogCQkJfCBW YXJpYWJsZVNob3dTdG10CiAJCQl8IFZpZXdTdG10CisJCQl8IFdhaXRMU05T dG10CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsgJCQgPSBOVUxMOyB9CiAJCTsK QEAgLTEzODE5LDcgKzEzODIxLDQxIEBAIGZyYW1lX2JvdW5kOgogCQkJCX0K IAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKgkJUVVFUlk6CisgKgkJCQlXQUlUTFNOIDxMU04+IGNhbiBhcHBlYXIg YXMgYSBxdWVyeS1sZXZlbCBjb21tYW5kCisgKgorICoKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KIAorV2FpdExTTlN0bXQ6CisJCQlX QUlUTFNOIFNjb25zdCBXYWl0RGVsYXkKKwkJCQl7CisJCQkJCVdhaXRMU05T dG10ICpuID0gbWFrZU5vZGUoV2FpdExTTlN0bXQpOworCQkJCQluLT5sc24g PSAkMjsKKwkJCQkJbi0+ZGVsYXkgPSAkMzsKKwkJCQkJJCQgPSAoTm9kZSAq KW47CisJCQkJfQorCQkJfCBXQUlUTFNOX0lORklOSVRFIFNjb25zdAorCQkJ CXsKKwkJCQkJV2FpdExTTlN0bXQgKm4gPSBtYWtlTm9kZShXYWl0TFNOU3Rt dCk7CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9IDA7CisJ CQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgV0FJVExTTl9OT19X QUlUIFNjb25zdAorCQkJCXsKKwkJCQkJV2FpdExTTlN0bXQgKm4gPSBtYWtl Tm9kZShXYWl0TFNOU3RtdCk7CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQlu LT5kZWxheSA9IDE7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJ OworV2FpdERlbGF5OgorCQkJJywnIEljb25zdAkJCQkJCQl7ICQkID0gJDI7 IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCXsgJCQgPSAwOyB9CisJCTsKIC8q CiAgKiBTdXBwb3J0aW5nIG5vbnRlcm1pbmFscyBmb3IgZXhwcmVzc2lvbnMu CiAgKi8KQEAgLTE0ODU2LDYgKzE0ODkyLDkgQEAgdW5yZXNlcnZlZF9rZXl3 b3JkOgogCQkJfCBWSUVXCiAJCQl8IFZJRVdTCiAJCQl8IFZPTEFUSUxFCisJ CQl8IFdBSVRMU04KKwkJCXwgV0FJVExTTl9JTkZJTklURQorCQkJfCBXQUlU TFNOX05PX1dBSVQKIAkJCXwgV0hJVEVTUEFDRV9QCiAJCQl8IFdJVEhJTgog CQkJfCBXSVRIT1VUCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMK aW5kZXggMmQxZWQxNC4uOTMyMTM2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9zdWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvd2FpdGxzbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5oIgpAQCAtMjcxLDYgKzI3MiwxMSBAQCBDcmVhdGVTaGFyZWRNZW1v cnlBbmRTZW1hcGhvcmVzKGJvb2wgbWFrZVByaXZhdGUsIGludCBwb3J0KQog CUFzeW5jU2htZW1Jbml0KCk7CiAJQmFja2VuZFJhbmRvbVNobWVtSW5pdCgp OwogCisJLyoKKwkgKiBJbml0IGFycmF5IG9mIExhdGNoZXMgIGluIFNITUVN IGZvciBXQUlUTFNOCisJICovCisJV2FpdExTTlNobWVtSW5pdCgpOworCiAj aWZkZWYgRVhFQ19CQUNLRU5ECiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYwppbmRleCA3NzU0NzdjLi42MWYwNjc0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImNvbW1h bmRzL3VzZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNp bmNsdWRlICJjb21tYW5kcy92aWV3LmgiCisjaW5jbHVkZSAiY29tbWFuZHMv d2FpdGxzbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rl ci9iZ3dyaXRlci5oIgpAQCAtOTIzLDYgKzkyNCwyMCBAQCBzdGFuZGFyZF9Q cm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJYnJlYWs7 CiAJCQl9CiAKKwkJY2FzZSBUX1dhaXRMU05TdG10OgorCQkJeworCQkJCVdh aXRMU05TdG10ICpzdG10ID0gKFdhaXRMU05TdG10ICopIHBhcnNldHJlZTsK KwkJCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJCXsKKwkJCQkJ ZXJlcG9ydChFUlJPUiwoZXJyY29kZShFUlJDT0RFX1JFQURfT05MWV9TUUxf VFJBTlNBQ1RJT04pLAorCQkJCQkJCWVycm1zZygiY2Fubm90IGV4ZWN1dGUg JXMgbm90IGR1cmluZyByZWNvdmVyeSIsCisJCQkJCQkJIldhaXRMU04iKSkp OworCQkJCX0KKwkJCQllbHNlCisJCQkJCVdhaXRMU05VdGlsaXR5KHN0bXQt Pmxzbiwgc3RtdC0+ZGVsYXksIGRlc3QpOworCQkJfQorCQkJYnJlYWs7CisK IAkJZGVmYXVsdDoKIAkJCS8qIEFsbCBvdGhlciBzdGF0ZW1lbnQgdHlwZXMg aGF2ZSBldmVudCB0cmlnZ2VyIHN1cHBvcnQgKi8KIAkJCVByb2Nlc3NVdGls aXR5U2xvdyhwc3RhdGUsIHBzdG10LCBxdWVyeVN0cmluZywKQEAgLTI0ODEs NiArMjQ5NiwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJl ZSkKIAkJCXRhZyA9ICJOT1RJRlkiOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBU X1dhaXRMU05TdG10OgorCQkJdGFnID0gIldBSVRMU04iOworCQkJYnJlYWs7 CisKIAkJY2FzZSBUX0xpc3RlblN0bXQ6CiAJCQl0YWcgPSAiTElTVEVOIjsK IAkJCWJyZWFrOwpAQCAtMzEwMCw2ICszMTE5LDEwIEBAIEdldENvbW1hbmRM b2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQlsZXYgPSBMT0dTVE1UX0FM TDsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9XYWl0TFNOU3RtdDoKKwkJCWxl diA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3Rl blN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdGxzbi5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvd2FpdGxzbi5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjQ5Y2Y5ZTgKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmgKQEAgLTAsMCArMSwy MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog d2FpdGxzbi5oCisgKgkgIFdhaXRMU04gbm90aWZpY2F0aW9uOiBXQUlUTFNO CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDIwMTYsIFJlZ2VudHMgb2YgUG9zdGdyZXNQUk8K KyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmgKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBX QUlUTFNOX0gKKyNkZWZpbmUgV0FJVExTTl9ICisjaW5jbHVkZSAidGNvcC9k ZXN0LmgiCisKK2V4dGVybiB2b2lkIFdhaXRMU05VdGlsaXR5KGNvbnN0IGNo YXIgKmxzbiwgY29uc3QgaW50IGRlbGF5LCBEZXN0UmVjZWl2ZXIgKmRlc3Qp OworZXh0ZXJuIHZvaWQgV2FpdExTTlNobWVtSW5pdCh2b2lkKTsKK2V4dGVy biB2b2lkIFdhaXRMU05TZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9sc24pOwor ZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TWluV2FpdExTTih2b2lkKTsKKworI2Vu ZGlmICAgLyogV0FJVExTTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApp bmRleCAyN2JkNGYzLi5kZjVkMjk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVz LmgKQEAgLTQ3OSw2ICs0NzksNyBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwog CVRfU3RhcnRSZXBsaWNhdGlvbkNtZCwKIAlUX1RpbWVMaW5lSGlzdG9yeUNt ZCwKIAlUX1NRTENtZCwKKwlUX1dhaXRMU05TdG10LAogCiAJLyoKIAkgKiBU QUdTIEZPUiBSQU5ET00gT1RIRVIgU1RVRkYKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAppbmRleCA1ZjJhNGE3Li4wZmY1MzdjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zNDI0LDQgKzM0MjQs MTYgQEAgdHlwZWRlZiBzdHJ1Y3QgRHJvcFN1YnNjcmlwdGlvblN0bXQKIAlE cm9wQmVoYXZpb3IgYmVoYXZpb3I7CQkvKiBSRVNUUklDVCBvciBDQVNDQURF IGJlaGF2aW9yICovCiB9IERyb3BTdWJzY3JpcHRpb25TdG10OwogCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgICAgICAgICAgICBXYWl0TFNO IFN0YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0 eXBlZGVmIHN0cnVjdCBXYWl0TFNOU3RtdAoreworCU5vZGVUYWcgICAgICAg ICB0eXBlOworCWNoYXIgICAgICAgKmxzbjsgICAgICAgICAgICAgICAgICAv KiBUYXJhZ2V0IExTTiB0byB3YWl0IGZvciAqLworCWludCAgICAgICAgICAg ICAgICAgICAgIGRlbGF5OyAgICAvKiBEZWxheSB0byB3YWl0IGZvciBMU04q LworCWJvb2wgICAgICAgICAgICBub3dhaXQ7ICAgICAgICAgICAvKiBObyB3 YWl0IGZvciBMU04ganVzdCByZXN1bHQqLworfSBXYWl0TFNOU3RtdDsKKwog I2VuZGlmCQkJCQkJCS8qIFBBUlNFTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oCmluZGV4IGY1MGU0NWUuLjZlYmI0YTggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQzMyw2ICs0MzMsOSBAQCBQR19L RVlXT1JEKCJ2ZXJzaW9uIiwgVkVSU0lPTl9QLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJ2aWV3IiwgVklFVywgVU5SRVNFUlZFRF9LRVlX T1JEKQogUEdfS0VZV09SRCgidmlld3MiLCBWSUVXUywgVU5SRVNFUlZFRF9L RVlXT1JEKQogUEdfS0VZV09SRCgidm9sYXRpbGUiLCBWT0xBVElMRSwgVU5S RVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZV09SRCgid2FpdGxzbiIsIFdBSVRM U04sIFVOUkVTRVJWRURfS0VZV09SRCkKK1BHX0tFWVdPUkQoIndhaXRsc25f aW5maW5pdGUiLCBXQUlUTFNOX0lORklOSVRFLCBVTlJFU0VSVkVEX0tFWVdP UkQpCitQR19LRVlXT1JEKCJ3YWl0bHNuX25vX3dhaXQiLCBXQUlUTFNOX05P X1dBSVQsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoIndoZW4i LCBXSEVOLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgid2hlcmUi LCBXSEVSRSwgUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoIndoaXRl c3BhY2UiLCBXSElURVNQQUNFX1AsIFVOUkVTRVJWRURfS0VZV09SRCkK --=_88ef29997e11908d328c1bf120512d41 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --=_88ef29997e11908d328c1bf120512d41--