Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o4Nww-0005o6-Tz for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Jun 2022 14:36:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o4Nwu-00022o-0J for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Jun 2022 14:36:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o4Nwt-00022R-AC for pgsql-hackers@lists.postgresql.org; Thu, 23 Jun 2022 14:36:47 +0000 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o4Nwo-0002yc-4X for pgsql-hackers@postgresql.org; Thu, 23 Jun 2022 14:36:46 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id DDC8A3200912 for ; Thu, 23 Jun 2022 10:36:39 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Thu, 23 Jun 2022 10:36:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1655994999; x= 1656081399; bh=/aJjtWswhSj1ZtHd7gpaKuFp52hBQVxZBdLjZBy6ekM=; b=J B3WyFpZczbiQjaSySsYQGvJkMAFcaTXtppiANVILzbrViEfGmZTojtE4Ynuh8XAG pYrfE+Rczf2zuUkc0YxVfY/EvtiSPKm6QBsfr4nNkRGGHEl2CSgzUw3NJAZmhJvC UjFhi7Y1blzqldvSoypPKAERpZ5ceP/t00P/AKFZ8HZbZmgbYrV9RQiR7OYV7axL vf/zZnkZlNy4tsFPgYUMTVt8RPctqTueJlh/yCZKvQDQCP1L3h4O/G+dNJXaU5ll V720O0MCIr7f/jZNiXCBKduizDPyOP2uOt/WnxUtzlnkSnfM6RM/yGPhoxv23wcQ cQSwXScdx8QZ8UVSQltoQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrudefjedgjeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghi shgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvg hrnhepteevuedvieekieeghfevfffhhfdvjeevleelfeeikeeikedvffegteekuddtfeel necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvth gvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 23 Jun 2022 10:36:38 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------VmVQIZpYI7OC9CXzI3dR5yJW" Message-ID: <7e4fdbdc-699c-4cd0-115d-fb78a957fc22@enterprisedb.com> Date: Thu, 23 Jun 2022 16:36:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Content-Language: en-US From: Peter Eisentraut Subject: refactor some protocol message sending in walsender and basebackup To: pgsql-hackers 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. --------------VmVQIZpYI7OC9CXzI3dR5yJW Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Some places in walsender.c and basebackup_copy.c open-code the sending of RowDescription and DataRow protocol messages. But there are already more compact and robust solutions available for this, using DestRemoteSimple and associated machinery, already in use in walsender.c. The attached patches 0001 and 0002 are tiny bug fixes I found during this. Patches 0003 and 0004 are the main refactorings. They should probably be combined into one patch eventually, but this way the treatment of RowDescription and DataRow is presented separately. --------------VmVQIZpYI7OC9CXzI3dR5yJW Content-Type: text/plain; charset=UTF-8; name="0001-Fix-attlen-in-RowDescription-of-BASE_BACKUP-response.patch" Content-Disposition: attachment; filename*0="0001-Fix-attlen-in-RowDescription-of-BASE_BACKUP-response.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNjliOTg5NjgzMjQxMjU1NTQ3MGUzMGI0ODFkZjhjYzFlNmJlYmVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAxOSBNYXkgMjAyMiAxMjoyNjo0NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMS80XSBGaXggYXR0bGVuIGluIFJvd0Rlc2NyaXB0aW9uIG9mIEJBU0VfQkFD S1VQIHJlc3BvbnNlCgpTaG91bGQgYmUgOCBmb3IgaW50OCwgbm90IC0xLgotLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXBfY29weS5jIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cF9jb3B5LmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9iYXNlYmFja3VwX2NvcHkuYwppbmRleCBjYWJiMDc3MjQwLi4xZWVkOWQ4 YzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwX2Nv cHkuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwX2NvcHkuYwpA QCAtMzYxLDcgKzM2MSw3IEBAIFNlbmRYbG9nUmVjUHRyUmVzdWx0KFhMb2dSZWNQdHIgcHRy LCBUaW1lTGluZUlEIHRsaSkKIAkgKiB3b3VsZCBub3QgYmUgd2lkZSBlbm91Z2ggZm9yIHRo aXMsIGFzIFRpbWVMaW5lSUQgaXMgdW5zaWduZWQuCiAJICovCiAJcHFfc2VuZGludDMyKCZi dWYsIElOVDhPSUQpOwkvKiB0eXBlIG9pZCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCAtMSk7 CisJcHFfc2VuZGludDE2KCZidWYsIDgpOwogCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsKIAlw cV9zZW5kaW50MTYoJmJ1ZiwgMCk7CiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKCmJhc2UtY29t bWl0OiBhYzBlMmQzODdhMDQ0ZmFlZDMxMGNiZmUyZmFlNzhlY2IwZjZhNGI2Ci0tIAoyLjM2 LjEKCg== --------------VmVQIZpYI7OC9CXzI3dR5yJW Content-Type: text/plain; charset=UTF-8; name="0002-Change-timeline-field-of-IDENTIFY_SYSTEM-to-int8.patch" Content-Disposition: attachment; filename*0="0002-Change-timeline-field-of-IDENTIFY_SYSTEM-to-int8.patch" Content-Transfer-Encoding: base64 RnJvbSAwNDU3MzBlOTJiYjY3ODA2ZjMxZmVlMDMzZTFmODdjNjljOGFlMDhlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAyMyBKdW4gMjAyMiAxMDo1Njo1NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMi80XSBDaGFuZ2UgdGltZWxpbmUgZmllbGQgb2YgSURFTlRJRllfU1lTVEVN IHRvIGludDgKCkl0IHdhcyBpbnQ0LCBidXQgaW4gdGhlIG90aGVyIHJlcGxpY2F0aW9uIGNv bW1hbmRzLCB0aW1lbGluZXMgYXJlCnJldHVybmVkIGFzIGludDguCi0tLQogZG9jL3NyYy9z Z21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgfCAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYyB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggYTk0NzQzYjU4Ny4u YzBiODlhM2MwMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTE4MzgsNyArMTgzOCw3IEBAIDx0 aXRsZT5TdHJlYW1pbmcgUmVwbGljYXRpb24gUHJvdG9jb2w8L3RpdGxlPgogICAgICAgIDwv dmFybGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+ PGxpdGVyYWw+dGltZWxpbmU8L2xpdGVyYWw+ICg8dHlwZT5pbnQ0PC90eXBlPik8L3Rlcm0+ CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnRpbWVsaW5lPC9saXRlcmFsPiAoPHR5cGU+aW50 ODwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4K ICAgICAgICAgICBDdXJyZW50IHRpbWVsaW5lIElELiBBbHNvIHVzZWZ1bCB0byBjaGVjayB0 aGF0IHRoZSBzdGFuZGJ5IGlzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmlu ZGV4IGU0MjY3MTcyMmEuLmZhNjBjOTJlMTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCkBAIC00NDQsNyArNDQ0LDcgQEAgSWRlbnRpZnlTeXN0ZW0odm9pZCkKIAlU dXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAic3lz dGVtaWQiLAogCQkJCQkJCSAgVEVYVE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRCdWls dGluRW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDIsICJ0aW1lbGluZSIsCi0JCQkJCQkJ ICBJTlQ0T0lELCAtMSwgMCk7CisJCQkJCQkJICBJTlQ4T0lELCAtMSwgMCk7CiAJVHVwbGVE ZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMywgInhsb2dwb3Mi LAogCQkJCQkJCSAgVEVYVE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRCdWlsdGluRW50 cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDQsICJkYm5hbWUiLAotLSAKMi4zNi4xCgo= --------------VmVQIZpYI7OC9CXzI3dR5yJW Content-Type: text/plain; charset=UTF-8; name="0003-Refactor-sending-of-RowDescription-messages-in-repli.patch" Content-Disposition: attachment; filename*0="0003-Refactor-sending-of-RowDescription-messages-in-repli.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5ZjMwNjAwZTU0ZTc5YTZkMWUwY2E0ZmVkYTE1MTFkOTAwOTIxNDhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAyMyBKdW4gMjAyMiAxMDo1NTowOSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMy80XSBSZWZhY3RvciBzZW5kaW5nIG9mIFJvd0Rlc2NyaXB0aW9uIG1lc3Nh Z2VzIGluCiByZXBsaWNhdGlvbiBwcm90b2NvbAoKU29tZSByb3V0aW5lcyBvcGVuLWNvZGVk IHRoZSBjb25zdHJ1Y3Rpb24gb2YgUm93RGVzY3JpcHRpb24gbWVzc2FnZXMuCkluc3RlYWQs IHdlIGhhdmUgc3VwcG9ydCBmb3IgZG9pbmcgdGhpcyB1c2luZyB0dXBsZSBkZXNjcmlwdG9y cyBhbmQKRGVzdFJlbW90ZVNpbXBsZSwgc28gdXNlIHRoYXQgaW5zdGVhZC4KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyAgICAgICB8ICA5ICsrKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cF9jb3B5LmMgfCA3NCArKysrKysrLS0tLS0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAg fCAyOSArKystLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNzIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90 dXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYwppbmRleCA5 ZjQxYjFlODU0Li5kNmZiMjYxZTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Y29tbW9uL3R1cGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRl c2MuYwpAQCAtNzM5LDYgKzczOSwxNSBAQCBUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KFR1 cGxlRGVzYyBkZXNjLAogCQkJYXR0LT5hdHRjb2xsYXRpb24gPSBJbnZhbGlkT2lkOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBPSURPSUQ6CisJCQlhdHQtPmF0dGxlbiA9IDQ7CisJCQlhdHQt PmF0dGJ5dmFsID0gdHJ1ZTsKKwkJCWF0dC0+YXR0YWxpZ24gPSBUWVBBTElHTl9JTlQ7CisJ CQlhdHQtPmF0dHN0b3JhZ2UgPSBUWVBTVE9SQUdFX1BMQUlOOworCQkJYXR0LT5hdHRjb21w cmVzc2lvbiA9IEludmFsaWRDb21wcmVzc2lvbk1ldGhvZDsKKwkJCWF0dC0+YXR0Y29sbGF0 aW9uID0gSW52YWxpZE9pZDsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5zdXBwb3J0ZWQgdHlwZSAldSIsIG9pZHR5cGVpZCk7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cF9jb3B5LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwX2NvcHkuYwppbmRleCAxZWVkOWQ4YzNmLi5k ZjA0NzFhN2E0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFj a3VwX2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwX2Nv cHkuYwpAQCAtMjUsMTEgKzI1LDEzIEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog CisjaW5jbHVkZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGVfZC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFm b3JtYXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9iYXNlYmFja3VwLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vYmFzZWJhY2t1cF9zaW5rLmgiCisjaW5jbHVkZSAidGNvcC9kZXN0 LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIHR5cGVkZWYgc3RydWN0IGJi c2lua19jb3B5c3RyZWFtCkBAIC0zMzYsMzUgKzMzOCwyNCBAQCBTZW5kQ29weURvbmUodm9p ZCkKIHN0YXRpYyB2b2lkCiBTZW5kWGxvZ1JlY1B0clJlc3VsdChYTG9nUmVjUHRyIHB0ciwg VGltZUxpbmVJRCB0bGkpCiB7CisJRGVzdFJlY2VpdmVyICpkZXN0OworCVR1cGxlRGVzYwl0 dXBkZXNjOwogCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAljaGFyCQlzdHJbTUFYRk5BTUVMRU5d OwogCVNpemUJCWxlbjsKIAotCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCAnVCcpOyAvKiBSb3dE ZXNjcmlwdGlvbiAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCAyKTsJCS8qIDIgZmllbGRzICov Ci0KLQkvKiBGaWVsZCBoZWFkZXJzICovCi0JcHFfc2VuZHN0cmluZygmYnVmLCAicmVjcHRy Iik7Ci0JcHFfc2VuZGludDMyKCZidWYsIDApOwkJLyogdGFibGUgb2lkICovCi0JcHFfc2Vu ZGludDE2KCZidWYsIDApOwkJLyogYXR0bnVtICovCi0JcHFfc2VuZGludDMyKCZidWYsIFRF WFRPSUQpOwkvKiB0eXBlIG9pZCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCAtMSk7Ci0JcHFf c2VuZGludDMyKCZidWYsIDApOwotCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKLQotCXBxX3Nl bmRzdHJpbmcoJmJ1ZiwgInRsaSIpOwotCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJCS8qIHRh YmxlIG9pZCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsJCS8qIGF0dG51bSAqLworCWRl c3QgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdFJlbW90ZVNpbXBsZSk7CiAKKwl0dXBkZXNj ID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMik7CisJVHVwbGVEZXNjSW5pdEJ1aWx0aW5F bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInJlY3B0ciIsIFRFWFRPSUQsIC0xLCAw KTsKIAkvKgogCSAqIGludDggbWF5IHNlZW0gbGlrZSBhIHN1cnByaXNpbmcgZGF0YSB0eXBl IGZvciB0aGlzLCBidXQgaW4gdGhlb3J5IGludDQKIAkgKiB3b3VsZCBub3QgYmUgd2lkZSBl bm91Z2ggZm9yIHRoaXMsIGFzIFRpbWVMaW5lSUQgaXMgdW5zaWduZWQuCiAJICovCi0JcHFf c2VuZGludDMyKCZidWYsIElOVDhPSUQpOwkvKiB0eXBlIG9pZCAqLwotCXBxX3NlbmRpbnQx NigmYnVmLCA4KTsKLQlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7Ci0JcHFfc2VuZGludDE2KCZi dWYsIDApOwotCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CisJVHVwbGVEZXNjSW5pdEJ1aWx0aW5F bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInRsaSIsIElOVDhPSUQsIC0xLCAwKTsK KworCS8qIHNlbmQgUm93RGVzY3JpcHRpb24gKi8KKwlkZXN0LT5yU3RhcnR1cChkZXN0LCBD TURfU0VMRUNULCB0dXBkZXNjKTsKIAogCS8qIERhdGEgcm93ICovCiAJcHFfYmVnaW5tZXNz YWdlKCZidWYsICdEJyk7CkBAIC0zOTEsNDEgKzM4MiwyMiBAQCBTZW5kWGxvZ1JlY1B0clJl c3VsdChYTG9nUmVjUHRyIHB0ciwgVGltZUxpbmVJRCB0bGkpCiBzdGF0aWMgdm9pZAogU2Vu ZFRhYmxlc3BhY2VMaXN0KExpc3QgKnRhYmxlc3BhY2VzKQogeworCURlc3RSZWNlaXZlciAq ZGVzdDsKKwlUdXBsZURlc2MJdHVwZGVzYzsKIAlTdHJpbmdJbmZvRGF0YSBidWY7CiAJTGlz dENlbGwgICAqbGM7CiAKLQkvKiBDb25zdHJ1Y3QgYW5kIHNlbmQgdGhlIGRpcmVjdG9yeSBp bmZvcm1hdGlvbiAqLwotCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCAnVCcpOyAvKiBSb3dEZXNj cmlwdGlvbiAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCAzKTsJCS8qIDMgZmllbGRzICovCi0K LQkvKiBGaXJzdCBmaWVsZCAtIHNwY29pZCAqLwotCXBxX3NlbmRzdHJpbmcoJmJ1ZiwgInNw Y29pZCIpOwotCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJCS8qIHRhYmxlIG9pZCAqLwotCXBx X3NlbmRpbnQxNigmYnVmLCAwKTsJCS8qIGF0dG51bSAqLwotCXBxX3NlbmRpbnQzMigmYnVm LCBPSURPSUQpOyAvKiB0eXBlIG9pZCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCA0KTsJCS8q IHR5cGxlbiAqLwotCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJCS8qIHR5cG1vZCAqLwotCXBx X3NlbmRpbnQxNigmYnVmLCAwKTsJCS8qIGZvcm1hdCBjb2RlICovCi0KLQkvKiBTZWNvbmQg ZmllbGQgLSBzcGNsb2NhdGlvbiAqLwotCXBxX3NlbmRzdHJpbmcoJmJ1ZiwgInNwY2xvY2F0 aW9uIik7Ci0JcHFfc2VuZGludDMyKCZidWYsIDApOwotCXBxX3NlbmRpbnQxNigmYnVmLCAw KTsKLQlwcV9zZW5kaW50MzIoJmJ1ZiwgVEVYVE9JRCk7Ci0JcHFfc2VuZGludDE2KCZidWYs IC0xKTsKLQlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7Ci0JcHFfc2VuZGludDE2KCZidWYsIDAp OwotCi0JLyogVGhpcmQgZmllbGQgLSBzaXplICovCi0JcHFfc2VuZHN0cmluZygmYnVmLCAi c2l6ZSIpOwotCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsKLQlwcV9zZW5kaW50MTYoJmJ1Ziwg MCk7Ci0JcHFfc2VuZGludDMyKCZidWYsIElOVDhPSUQpOwotCXBxX3NlbmRpbnQxNigmYnVm LCA4KTsKLQlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7Ci0JcHFfc2VuZGludDE2KCZidWYsIDAp OwotCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CisJZGVzdCA9IENyZWF0ZURlc3RSZWNlaXZlcihE ZXN0UmVtb3RlU2ltcGxlKTsKKworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVz YygzKTsKKwlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVy KSAxLCAic3Bjb2lkIiwgT0lET0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEJ1aWx0aW5F bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInNwY2xvY2F0aW9uIiwgVEVYVE9JRCwg LTEsIDApOworCVR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkodHVwZGVzYywgKEF0dHJOdW1i ZXIpIDMsICJzaXplIiwgSU5UOE9JRCwgLTEsIDApOwogCisJLyogc2VuZCBSb3dEZXNjcmlw dGlvbiAqLworCWRlc3QtPnJTdGFydHVwKGRlc3QsIENNRF9TRUxFQ1QsIHR1cGRlc2MpOwor CisJLyogQ29uc3RydWN0IGFuZCBzZW5kIHRoZSBkaXJlY3RvcnkgaW5mb3JtYXRpb24gKi8K IAlmb3JlYWNoKGxjLCB0YWJsZXNwYWNlcykKIAl7CiAJCXRhYmxlc3BhY2VpbmZvICp0aSA9 IGxmaXJzdChsYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IGZh NjBjOTJlMTMuLjJjOWUxOTA2ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCkBAIC01NzksNiArNTc5LDggQEAgUmVhZFJlcGxpY2F0aW9uU2xvdChSZWFkUmVwbGlj YXRpb25TbG90Q21kICpjbWQpCiBzdGF0aWMgdm9pZAogU2VuZFRpbWVMaW5lSGlzdG9yeShU aW1lTGluZUhpc3RvcnlDbWQgKmNtZCkKIHsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisJVHVw bGVEZXNjCXR1cGRlc2M7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWNoYXIJCWhpc3RmbmFt ZVtNQVhGTkFNRUxFTl07CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwpAQCAtNTg3LDM2ICs1 ODksMjEgQEAgU2VuZFRpbWVMaW5lSGlzdG9yeShUaW1lTGluZUhpc3RvcnlDbWQgKmNtZCkK IAlvZmZfdAkJYnl0ZXNsZWZ0OwogCVNpemUJCWxlbjsKIAorCWRlc3QgPSBDcmVhdGVEZXN0 UmVjZWl2ZXIoRGVzdFJlbW90ZVNpbXBsZSk7CisKIAkvKgogCSAqIFJlcGx5IHdpdGggYSBy ZXN1bHQgc2V0IHdpdGggb25lIHJvdywgYW5kIHR3byBjb2x1bW5zLiBUaGUgZmlyc3QgY29s IGlzCiAJICogdGhlIG5hbWUgb2YgdGhlIGhpc3RvcnkgZmlsZSwgMm5kIGlzIHRoZSBjb250 ZW50cy4KIAkgKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMik7CisJ VHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgImZp bGVuYW1lIiwgVEVYVE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRCdWlsdGluRW50cnko dHVwZGVzYywgKEF0dHJOdW1iZXIpIDIsICJjb250ZW50IiwgVEVYVE9JRCwgLTEsIDApOwog CiAJVExIaXN0b3J5RmlsZU5hbWUoaGlzdGZuYW1lLCBjbWQtPnRpbWVsaW5lKTsKIAlUTEhp c3RvcnlGaWxlUGF0aChwYXRoLCBjbWQtPnRpbWVsaW5lKTsKIAogCS8qIFNlbmQgYSBSb3dE ZXNjcmlwdGlvbiBtZXNzYWdlICovCi0JcHFfYmVnaW5tZXNzYWdlKCZidWYsICdUJyk7Ci0J cHFfc2VuZGludDE2KCZidWYsIDIpOwkJLyogMiBmaWVsZHMgKi8KLQotCS8qIGZpcnN0IGZp ZWxkICovCi0JcHFfc2VuZHN0cmluZygmYnVmLCAiZmlsZW5hbWUiKTsJLyogY29sIG5hbWUg Ki8KLQlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7CQkvKiB0YWJsZSBvaWQgKi8KLQlwcV9zZW5k aW50MTYoJmJ1ZiwgMCk7CQkvKiBhdHRudW0gKi8KLQlwcV9zZW5kaW50MzIoJmJ1ZiwgVEVY VE9JRCk7CS8qIHR5cGUgb2lkICovCi0JcHFfc2VuZGludDE2KCZidWYsIC0xKTsJCS8qIHR5 cGxlbiAqLwotCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJCS8qIHR5cG1vZCAqLwotCXBxX3Nl bmRpbnQxNigmYnVmLCAwKTsJCS8qIGZvcm1hdCBjb2RlICovCi0KLQkvKiBzZWNvbmQgZmll bGQgKi8KLQlwcV9zZW5kc3RyaW5nKCZidWYsICJjb250ZW50Iik7IC8qIGNvbCBuYW1lICov Ci0JcHFfc2VuZGludDMyKCZidWYsIDApOwkJLyogdGFibGUgb2lkICovCi0JcHFfc2VuZGlu dDE2KCZidWYsIDApOwkJLyogYXR0bnVtICovCi0JcHFfc2VuZGludDMyKCZidWYsIFRFWFRP SUQpOwkvKiB0eXBlIG9pZCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCAtMSk7CQkvKiB0eXBs ZW4gKi8KLQlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7CQkvKiB0eXBtb2QgKi8KLQlwcV9zZW5k aW50MTYoJmJ1ZiwgMCk7CQkvKiBmb3JtYXQgY29kZSAqLwotCXBxX2VuZG1lc3NhZ2UoJmJ1 Zik7CisJZGVzdC0+clN0YXJ0dXAoZGVzdCwgQ01EX1NFTEVDVCwgdHVwZGVzYyk7CiAKIAkv KiBTZW5kIGEgRGF0YVJvdyBtZXNzYWdlICovCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsICdE Jyk7Ci0tIAoyLjM2LjEKCg== --------------VmVQIZpYI7OC9CXzI3dR5yJW Content-Type: text/plain; charset=UTF-8; name="0004-Refactor-sending-of-DataRow-messages-in-replication-.patch" Content-Disposition: attachment; filename*0="0004-Refactor-sending-of-DataRow-messages-in-replication-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNjE0OTU4ZGZkYzUzYzQyYTVmZGMyZGIyMzRjY2YxMzczMjNkMTJlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAyMyBKdW4gMjAyMiAxNToyNTozMiArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggNC80XSBSZWZhY3RvciBzZW5kaW5nIG9mIERhdGFSb3cgbWVzc2FnZXMgaW4g cmVwbGljYXRpb24KIHByb3RvY29sCgpTb21lIHJvdXRpbmVzIG9wZW4tY29kZWQgdGhlIGNv bnN0cnVjdGlvbiBvZiBEYXRhUm93IG1lc3NhZ2VzLiAgVXNlClR1cE91dHB1dFN0YXRlIHN0 cnVjdCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMgaW5zdGVhZCwgd2hpY2ggd2FzCmFscmVh ZHkgZG9uZSBpbiBzb21lIHBsYWNlcy4KClNlbmRUaW1lTGluZUhpc3RvcnkoKSBpcyBhIGJp dCBtb3JlIGNvbXBsaWNhdGVkIGFuZCBpc24ndCBjb252ZXJ0ZWQgYnkKdGhpcy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50c2ltcGxlLmMgICB8IDExICsrKysKIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXBfY29weS5jIHwgNjYgKysrKysrKyst LS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgNDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9w cmludHNpbXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9wcmludHNpbXBsZS5j CmluZGV4IGU5OWFhMjc5ZjYuLjU4NzQwMjZlNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcHJpbnRzaW1wbGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Y29tbW9uL3ByaW50c2ltcGxlLmMKQEAgLTEyMSw2ICsxMjEsMTcgQEAgcHJpbnRzaW1wbGUo VHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAqc2VsZikKIAkJCQl9CiAJCQkJ YnJlYWs7CiAKKwkJCWNhc2UgT0lET0lEOgorCQkJCXsKKwkJCQkJT2lkCQkJbnVtID0gT2Jq ZWN0SWRHZXREYXR1bSh2YWx1ZSk7CisJCQkJCWNoYXIJCXN0clsxMV07CS8qIDEwIGRpZ2l0 cyBhbmQgJ1wwJyAqLworCQkJCQlpbnQJCQlsZW47CisKKwkJCQkJbGVuID0gcGdfbGx0b2Eo bnVtLCBzdHIpOyAvLyBYWFggdGhpcyBpcyBlbm91Z2ggYnV0IHNob3VsZCB3ZSBtYWtlIGEg cGdfdXRvYT8KKwkJCQkJcHFfc2VuZGNvdW50ZWR0ZXh0KCZidWYsIHN0ciwgbGVuLCBmYWxz ZSk7CisJCQkJfQorCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1Is ICJ1bnN1cHBvcnRlZCB0eXBlIE9JRDogJXUiLCBhdHRyLT5hdHR0eXBpZCk7CiAJCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXBfY29weS5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cF9jb3B5LmMKaW5kZXggZGYwNDcx YTdhNC4uYjZlMzk5YTVjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v YmFzZWJhY2t1cF9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJh Y2t1cF9jb3B5LmMKQEAgLTI3LDExICsyNywxMyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3R1 cGRlc2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgorI2luY2x1ZGUgImV4 ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRl ICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2Jhc2ViYWNrdXAu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9iYXNlYmFja3VwX3NpbmsuaCIKICNpbmNsdWRl ICJ0Y29wL2Rlc3QuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL3RpbWVzdGFtcC5oIgogCiB0eXBlZGVmIHN0cnVjdCBiYnNpbmtfY29weXN0cmVh bQpAQCAtODYsNyArODgsNiBAQCBzdGF0aWMgdm9pZCBTZW5kQ29weU91dFJlc3BvbnNlKHZv aWQpOwogc3RhdGljIHZvaWQgU2VuZENvcHlEb25lKHZvaWQpOwogc3RhdGljIHZvaWQgU2Vu ZFhsb2dSZWNQdHJSZXN1bHQoWExvZ1JlY1B0ciBwdHIsIFRpbWVMaW5lSUQgdGxpKTsKIHN0 YXRpYyB2b2lkIFNlbmRUYWJsZXNwYWNlTGlzdChMaXN0ICp0YWJsZXNwYWNlcyk7Ci1zdGF0 aWMgdm9pZCBzZW5kX2ludDhfc3RyaW5nKFN0cmluZ0luZm9EYXRhICpidWYsIGludDY0IGlu dHZhbCk7CiAKIHN0YXRpYyBjb25zdCBiYnNpbmtfb3BzIGJic2lua19jb3B5c3RyZWFtX29w cyA9IHsKIAkuYmVnaW5fYmFja3VwID0gYmJzaW5rX2NvcHlzdHJlYW1fYmVnaW5fYmFja3Vw LApAQCAtMzM5LDEwICszNDAsMTAgQEAgc3RhdGljIHZvaWQKIFNlbmRYbG9nUmVjUHRyUmVz dWx0KFhMb2dSZWNQdHIgcHRyLCBUaW1lTGluZUlEIHRsaSkKIHsKIAlEZXN0UmVjZWl2ZXIg KmRlc3Q7CisJVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKIAlUdXBsZURlc2MJdHVwZGVzYzsK LQlTdHJpbmdJbmZvRGF0YSBidWY7Ci0JY2hhcgkJc3RyW01BWEZOQU1FTEVOXTsKLQlTaXpl CQlsZW47CisJRGF0dW0JCXZhbHVlc1syXTsKKwlib29sCQludWxsc1syXSA9IHswfTsKIAog CWRlc3QgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdFJlbW90ZVNpbXBsZSk7CiAKQEAgLTM1 NSwyMiArMzU2LDE0IEBAIFNlbmRYbG9nUmVjUHRyUmVzdWx0KFhMb2dSZWNQdHIgcHRyLCBU aW1lTGluZUlEIHRsaSkKIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2MsIChB dHRyTnVtYmVyKSAyLCAidGxpIiwgSU5UOE9JRCwgLTEsIDApOwogCiAJLyogc2VuZCBSb3dE ZXNjcmlwdGlvbiAqLwotCWRlc3QtPnJTdGFydHVwKGRlc3QsIENNRF9TRUxFQ1QsIHR1cGRl c2MpOworCXRzdGF0ZSA9IGJlZ2luX3R1cF9vdXRwdXRfdHVwZGVzYyhkZXN0LCB0dXBkZXNj LCAmVFRTT3BzVmlydHVhbCk7CiAKIAkvKiBEYXRhIHJvdyAqLwotCXBxX2JlZ2lubWVzc2Fn ZSgmYnVmLCAnRCcpOwotCXBxX3NlbmRpbnQxNigmYnVmLCAyKTsJCS8qIG51bWJlciBvZiBj b2x1bW5zICovCi0KLQlsZW4gPSBzbnByaW50ZihzdHIsIHNpemVvZihzdHIpLAotCQkJCSAg ICIlWC8lWCIsIExTTl9GT1JNQVRfQVJHUyhwdHIpKTsKLQlwcV9zZW5kaW50MzIoJmJ1Ziwg bGVuKTsKLQlwcV9zZW5kYnl0ZXMoJmJ1Ziwgc3RyLCBsZW4pOwotCi0JbGVuID0gc25wcmlu dGYoc3RyLCBzaXplb2Yoc3RyKSwgIiV1IiwgdGxpKTsKLQlwcV9zZW5kaW50MzIoJmJ1Ziwg bGVuKTsKLQlwcV9zZW5kYnl0ZXMoJmJ1Ziwgc3RyLCBsZW4pOworCXZhbHVlc1swXT0gQ1N0 cmluZ0dldFRleHREYXR1bShwc3ByaW50ZigiJVgvJVgiLCBMU05fRk9STUFUX0FSR1MocHRy KSkpOworCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0odGxpKTsKKwlkb190dXBfb3V0cHV0 KHRzdGF0ZSwgdmFsdWVzLCBudWxscyk7CiAKLQlwcV9lbmRtZXNzYWdlKCZidWYpOworCWVu ZF90dXBfb3V0cHV0KHRzdGF0ZSk7CiAKIAkvKiBTZW5kIGEgQ29tbWFuZENvbXBsZXRlIG1l c3NhZ2UgKi8KIAlwcV9wdXR0ZXh0bWVzc2FnZSgnQycsICJTRUxFQ1QiKTsKQEAgLTM4Myw2 ICszNzYsNyBAQCBzdGF0aWMgdm9pZAogU2VuZFRhYmxlc3BhY2VMaXN0KExpc3QgKnRhYmxl c3BhY2VzKQogewogCURlc3RSZWNlaXZlciAqZGVzdDsKKwlUdXBPdXRwdXRTdGF0ZSAqdHN0 YXRlOwogCVR1cGxlRGVzYwl0dXBkZXNjOwogCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAlMaXN0 Q2VsbCAgICpsYzsKQEAgLTM5NSw1MSArMzg5LDM1IEBAIFNlbmRUYWJsZXNwYWNlTGlzdChM aXN0ICp0YWJsZXNwYWNlcykKIAlUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSAzLCAic2l6ZSIsIElOVDhPSUQsIC0xLCAwKTsKIAogCS8qIHNlbmQg Um93RGVzY3JpcHRpb24gKi8KLQlkZXN0LT5yU3RhcnR1cChkZXN0LCBDTURfU0VMRUNULCB0 dXBkZXNjKTsKKwl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVw ZGVzYywgJlRUU09wc1ZpcnR1YWwpOwogCiAJLyogQ29uc3RydWN0IGFuZCBzZW5kIHRoZSBk aXJlY3RvcnkgaW5mb3JtYXRpb24gKi8KIAlmb3JlYWNoKGxjLCB0YWJsZXNwYWNlcykKIAl7 CiAJCXRhYmxlc3BhY2VpbmZvICp0aSA9IGxmaXJzdChsYyk7CisJCURhdHVtCQl2YWx1ZXNb M107CisJCWJvb2wJCW51bGxzWzNdID0gezB9OwogCiAJCS8qIFNlbmQgb25lIGRhdGFyb3cg bWVzc2FnZSAqLwogCQlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgJ0QnKTsKIAkJcHFfc2VuZGlu dDE2KCZidWYsIDMpOwkvKiBudW1iZXIgb2YgY29sdW1ucyAqLwogCQlpZiAodGktPnBhdGgg PT0gTlVMTCkKIAkJewotCQkJcHFfc2VuZGludDMyKCZidWYsIC0xKTsgLyogTGVuZ3RoID0g LTEgPT0+IE5VTEwgKi8KLQkJCXBxX3NlbmRpbnQzMigmYnVmLCAtMSk7CisJCQludWxsc1sw XSA9IHRydWU7CisJCQludWxsc1sxXSA9IHRydWU7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlT aXplCQlsZW47Ci0KLQkJCWxlbiA9IHN0cmxlbih0aS0+b2lkKTsKLQkJCXBxX3NlbmRpbnQz MigmYnVmLCBsZW4pOwotCQkJcHFfc2VuZGJ5dGVzKCZidWYsIHRpLT5vaWQsIGxlbik7Ci0K LQkJCWxlbiA9IHN0cmxlbih0aS0+cGF0aCk7Ci0JCQlwcV9zZW5kaW50MzIoJmJ1ZiwgbGVu KTsKLQkJCXBxX3NlbmRieXRlcygmYnVmLCB0aS0+cGF0aCwgbGVuKTsKKwkJCXZhbHVlc1sw XSA9IE9iamVjdElkR2V0RGF0dW0odGktPm9pZCk7CisJCQl2YWx1ZXNbMV0gPSBDU3RyaW5n R2V0VGV4dERhdHVtKHRpLT5wYXRoKTsKIAkJfQogCQlpZiAodGktPnNpemUgPj0gMCkKLQkJ CXNlbmRfaW50OF9zdHJpbmcoJmJ1ZiwgdGktPnNpemUgLyAxMDI0KTsKKwkJCXZhbHVlc1sy XSA9IEludDY0R2V0RGF0dW0odGktPnNpemUgLyAxMDI0KTsKIAkJZWxzZQotCQkJcHFfc2Vu ZGludDMyKCZidWYsIC0xKTsgLyogTlVMTCAqLworCQkJbnVsbHNbMl0gPSB0cnVlOwogCi0J CXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CisJCWRvX3R1cF9vdXRwdXQodHN0YXRlLCB2YWx1ZXMs IG51bGxzKTsKIAl9Ci19Ci0KLS8qCi0gKiBTZW5kIGEgNjQtYml0IGludGVnZXIgYXMgYSBz dHJpbmcgdmlhIHRoZSB3aXJlIHByb3RvY29sLgotICovCi1zdGF0aWMgdm9pZAotc2VuZF9p bnQ4X3N0cmluZyhTdHJpbmdJbmZvRGF0YSAqYnVmLCBpbnQ2NCBpbnR2YWwpCi17Ci0JY2hh cgkJaXNbMzJdOwogCi0Jc3ByaW50ZihpcywgSU5UNjRfRk9STUFULCBpbnR2YWwpOwotCXBx X3NlbmRpbnQzMihidWYsIHN0cmxlbihpcykpOwotCXBxX3NlbmRieXRlcyhidWYsIGlzLCBz dHJsZW4oaXMpKTsKKwllbmRfdHVwX291dHB1dCh0c3RhdGUpOwogfQotLSAKMi4zNi4xCgo= --------------VmVQIZpYI7OC9CXzI3dR5yJW--