Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuw3U-00DaF4-13 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 17:18:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vuw3S-002WNd-0F for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 17:18:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuw3R-002WNU-22 for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 17:18:37 +0000 Received: from mail-qv1-xf2b.google.com ([2607:f8b0:4864:20::f2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vuw3M-00000000zQh-0JJv for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 17:18:34 +0000 Received: by mail-qv1-xf2b.google.com with SMTP id 6a1803df08f44-899a5db525cso9245646d6.3 for ; Tue, 24 Feb 2026 09:18:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771953511; cv=none; d=google.com; s=arc-20240605; b=S0iwjuuEmvaKpyX1hEqjL6yE+7euA9e+JejTDGvOep+QHD1eJ2+EaNejYIiHywHsJd tScgFatuhsu66RXV/JvxGCMRsK+Vb4TWgyzjoQN2rpqX0GTtjeWgO8RGbuC2eebWIEUu W1I9wS+BBRaf59uNHMVV+Do/zfcz+oNNAzR+Jjx32ZeZXSJupZ/9NHH20sUA/AxyA2vF mYZHXkWage3p3a0Sruex9R+AB4UkLOgsRtzmRPfZB6wJfLNqk4KlHi9RtNa6fV7bcnRc oLnqMS7ySECK2QCPbt+8WXWnP8ESYdYfo+XqkEAFmjEH1xciDgL3wojEOsy8GipVIwdJ HxlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=hoV/GJ90fOlwrT0sbSa+vYOifIC1jV38WjbO94CYarU=; fh=aDW2jHdUzU7yXN97lita37w6Ir8oNKeWoWMp/TmgPEY=; b=VaVQlwbytIP7DFdr7O58PryGDYBOEofjH5JVhdYi97mF3UNiQgfcidl++cqb+Cmv1y VWiYCHaeYVsOXjzHyFK4qP9eAOH6Sju+ReT/P+04dvXGxsr1dA6eTl3ExaBBwZjTJtRU XUsDbR4rIoTOa0BIxxVP1yIbjGh/HpHsmCqF8j7FwqX8MchNN9YNqe5pQE8KPl1aoudS KPn1RBQyemVDpWrMYR4eoEBZFACUG1tIxFnSGi+fKSCD7Arvjyz1bBKaBnG+7zf4ysgo C6LKnNoztDj1Xn9fW5R2F61GjcGkbtVFSUYg9QKRn5rvCAwcjaS1zvzB/xFRmwzDS8rH X9rQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1771953511; x=1772558311; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hoV/GJ90fOlwrT0sbSa+vYOifIC1jV38WjbO94CYarU=; b=UPiIY4fWSP3kTIsJULdY3VgY9C2EWe8Nc3EfEpv2pDUYAEchiNfmZ1fY1Tr7u4TFYU bU/qN1iEiTDhC5veaVta032C9R6oIkGsltwYncHEGGF/nAMffwEEBJQkJARAjKgdEM+S mulityWSd8EnBtAMVhxn41NSbbE+HYkX5a8E/ux4/ZLko1vyfa0q79v6q4514VH0cI9I YsS3Ao9DQvg0PsxfuNXTTTbHulooikehyaT7OJcH2sI3zCYvfHlHBzyfHJTJzjUJJZFI WF/x62y/Zw2XmIe/wpAYkIZQ5zYmJI+Pix9Wg4CKl8cPd1YVjnWaRPEsPhw5Ub8scNW8 jaEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771953511; x=1772558311; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hoV/GJ90fOlwrT0sbSa+vYOifIC1jV38WjbO94CYarU=; b=HPHNFRGholnThGL7AWbLBW7gi73hd62rOToOvU4nFTRrfZNsit6OIPB9oaWu3RTjKt UT+meF4A43AEV0k7TQLXdsdcBl5j4BYvvmdwNWPft3xvnwI7ZeiNs6XNL8u7nm0dOmlR QQMex+vnRhVDwGbWkbNANCqnkg9B8NUnowGm0DowelPlPz+mf0PsYRPAYlmxFE5WpiDD u2K7mV6EjGqMxQTtyhoJgFU83v12Y8d5A7HW+jQDOgM+aqeAaKEu4CoKgLsEUU4H15oV rlFfH9T9o7lJZ83oH3SBRsHMErRtCNi4kVH/dmpQvs6nIw7Ve/lA2sMkRKmOxVsFSCn8 86cQ== X-Forwarded-Encrypted: i=1; AJvYcCXJOpBOBxcOSvqwq2osFw7xD/BNG8403g8f2HP3tVjkJCx4G9cewjqq6+mC3c/j7ZBxqABTxpnAbYXPQ9JA@lists.postgresql.org X-Gm-Message-State: AOJu0YyzSPr0bzr8IxJqZB1RQP/Cqo6NIjrJR1g83UCg48rp0ydlAtYH bFzumIUFJm/g21+So/qkHKJK3TuJY6zjR87JYLT2CKWcCYtnHE2wmBTHvyt7DvpFlOkCbERseT4 kkRlz0Ke4iQ9yZBHpReOx2Cmd5lzMWNYeA81X2JKB X-Gm-Gg: ATEYQzwAyvaimjThKEfcDu7dj7Qc05zyNOgkLwT0Sq6J3mrixwrqbu0uUXdjH1/Fgcy 94/fy3dm0+JA+D7fktQZcw2RkbC1OzaeCi1fWyjz65uRpiBPHVYSmTqw/0MG+ScKtsKG1Q+IzWl 6r06qOAJ8sxXZu8B/CK8oA5tHTHyefxMgcxFqegjZyCYYnRDLCgCn52D/bg32LQOMXXla/r+y7t vxzGMQHX2dpJTreIwNhrMMUQs8EJi7CMTkyyOLOuEjCMvN8n5C6LQS18ahuB3inXfslrJkNDOCT I79Yb8KqAw== X-Received: by 2002:ad4:5fcb:0:b0:895:3bfa:216b with SMTP id 6a1803df08f44-89979c3c139mr183301786d6.12.1771953510944; Tue, 24 Feb 2026 09:18:30 -0800 (PST) MIME-Version: 1.0 References: <3626145.1771885089@sss.pgh.pa.us> <3635497.1771889682@sss.pgh.pa.us> <3797860.1771893905@sss.pgh.pa.us> <3864574.1771898936@sss.pgh.pa.us> In-Reply-To: <3864574.1771898936@sss.pgh.pa.us> From: Jacob Champion Date: Tue, 24 Feb 2026 09:18:19 -0800 X-Gm-Features: AaiRm51mVfFOA2xPC83HYNxeFUH-Jr2Btb4ARWFTescxKT-9ZvJ5A1ZAsr8h1Rk Message-ID: Subject: Re: pgsql: libpq: Grease the protocol by default To: Tom Lane Cc: Jelte Fennema-Nio , pgsql-hackers@lists.postgresql.org, Andrew Dunstan Content-Type: multipart/mixed; boundary="000000000000950e3a064b951398" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000950e3a064b951398 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 23, 2026 at 6:08=E2=80=AFPM Tom Lane wrote: > Jacob Champion writes: > > On Mon, Feb 23, 2026 at 4:45=E2=80=AFPM Tom Lane wr= ote: > >> Also: I was initially baffled why you thought this needs > >> back-patching, but I guess you have one eye on packagers like > >> Debian who think they can make older versions use newer libpq.so. > > > Right. > > Actually, that is going to be harder than you thought, because libpq > before v18 will spit up on connection option "max_protocol_version". Ha, right. Luckily the failure is very loud when testing :) > Fortunately, we long ago had the foresight to invent PQlibVersion, > so you could make addition of the extra option conditional on > PQlibVersion(conn) >=3D 180000 in branches before 18. Attached is a sample backport for REL_14_STABLE, using that strategy. Tested with pg_upgrade 9.2-to-14, when linked against both 14.22 and HEAD versions of libpq. I still need to run a sanity check with the other 9.x lines to make sure I've selected the right cutoffs. > Yeah, I came to the same conclusion. I got a clean BF run using > your patch together with the attached patch for the BF client. Nice, thanks! --Jacob --000000000000950e3a064b951398 Content-Type: application/octet-stream; name="0001-pg_upgrade-Use-max_protocol_version-3.0-for-older-se.14.patch" Content-Disposition: attachment; filename="0001-pg_upgrade-Use-max_protocol_version-3.0-for-older-se.14.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm0vc8t10 RnJvbSBiMGEwYzM4MWFiODNlZTM5YjcxYzI5NmQzNjdlYjA2ZTIzNTY5YWE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAyMyBGZWIgMjAyNiAxNToyODozMiAtMDgwMApTdWJqZWN0 OiBbUEFUQ0hdIHBnX3VwZ3JhZGU6IFVzZSBtYXhfcHJvdG9jb2xfdmVyc2lvbj0zLjAgZm9yIG9s ZGVyIHNlcnZlcnMKClRoZSBncmVhc2UgcGF0Y2ggaW4gNDk2NmJkM2VkIGZvdW5kIGl0cyBmaXJz dCBwcm9ibGVtOiBwcmlvciB0byB0aGUKRmVicnVhcnkgMjAxOCBwYXRjaCByZWxlYXNlcywgbm8g c2VydmVyIGtuZXcgaG93IHRvIG5lZ290aWF0ZSBwcm90b2NvbAp2ZXJzaW9ucywgc28gcGdfdXBn cmFkZSBuZWVkcyB0byB0YWtlIHRoYXQgaW50byBhY2NvdW50IHdoZW4gc3BlYWtpbmcgdG8KdGhv c2Ugb2xkZXIgc2VydmVycy4KClRoaXMgd2lsbCBiZSB0cnVlIGV2ZW4gYWZ0ZXIgdGhlIGdyZWFz ZSBmZWF0dXJlIGlzIHJldmVydGVkOyB3ZSBkb24ndApuZWVkIGFueW9uZSB0byB0cmlwIG92ZXIg dGhpcyBhZ2FpbiBpbiB0aGUgZnV0dXJlLiBCYWNrcGF0Y2ggc28gdGhhdCBhbGwKc3VwcG9ydGVk IHZlcnNpb25zIG9mIHBnX3VwZ3JhZGUgY2FuIGdyYWNlZnVsbHkgaGFuZGxlIGFuIHVwZGF0ZSB0 byB0aGUKZGVmYXVsdCBwcm90b2NvbCB2ZXJzaW9uLiAoVGhpcyBpcyBuZWVkZWQgZm9yIGFueSBk aXN0cmlidXRpb25zIHRoYXQKbGluayBvbGRlciBiaW5hcmllcyBhZ2FpbnN0IG5ld2VyIGxpYnBx cywgc3VjaCBhcyBEZWJpYW4uKSBCcmFuY2hlcwpwcmlvciB0byAxOCBuZWVkIGFuIGFkZGl0aW9u YWwgdmVyc2lvbiBjaGVjaywgZm9yIHRoZSBleGlzdGVuY2Ugb2YKbWF4X3Byb3RvY29sX3ZlcnNp b24uCgpQZXIgYnVpbGRmYXJtIG1lbWJlciBjcmFrZS4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0FPWW1pJTJCJTNENFFoQ2pzc2ZORW9aVks4TFB0V3huZmt3VDVwLVBBZW94dEc5 Z3BOanFPUSU0MG1haWwuZ21haWwuY29tCkJhY2twYXRjaC10aHJvdWdoOiAxNAotLS0KIHNyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggfCAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvZHVt cC5jICAgICAgIHwgIDYgKysrKystCiBzcmMvYmluL3BnX3VwZ3JhZGUvc2VydmVyLmMgICAgIHwg IDIgKysKIHNyYy9iaW4vcGdfdXBncmFkZS92ZXJzaW9uLmMgICAgfCAzNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRl LmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IGU2NDdlNzFlY2FmLi4x NGY5Y2I1MjJkYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAor KysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCkBAIC00NDYsNiArNDQ2LDcgQEAg Ym9vbAkJY2hlY2tfZm9yX2RhdGFfdHlwZXNfdXNhZ2UoQ2x1c3RlckluZm8gKmNsdXN0ZXIsCiBi b29sCQljaGVja19mb3JfZGF0YV90eXBlX3VzYWdlKENsdXN0ZXJJbmZvICpjbHVzdGVyLAogCQkJ CQkJCQkJICBjb25zdCBjaGFyICp0eXBlX25hbWUsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm91 dHB1dF9wYXRoKTsKK2Jvb2wJCXByb3RvY29sX25lZ290aWF0aW9uX3N1cHBvcnRlZChjb25zdCBD bHVzdGVySW5mbyAqY2x1c3Rlcik7CiB2b2lkCQluZXdfOV8wX3BvcHVsYXRlX3BnX2xhcmdlb2Jq ZWN0X21ldGFkYXRhKENsdXN0ZXJJbmZvICpjbHVzdGVyLAogCQkJCQkJCQkJCQkJCSBib29sIGNo ZWNrX21vZGUpOwogdm9pZAkJb2xkXzlfM19jaGVja19mb3JfbGluZV9kYXRhX3R5cGVfdXNhZ2Uo Q2x1c3RlckluZm8gKmNsdXN0ZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL2R1 bXAuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9kdW1wLmMKaW5kZXggOTAwNjBkMGY4ZWIuLmVlMGFj ZTA4MmNhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvZHVtcC5jCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9kdW1wLmMKQEAgLTIxLDkgKzIxLDEwIEBAIGdlbmVyYXRlX29sZF9kdW1w KHZvaWQpCiAKIAkvKiBydW4gbmV3IHBnX2R1bXBhbGwgYmluYXJ5IGZvciBnbG9iYWxzICovCiAJ ZXhlY19wcm9nKFVUSUxJVFlfTE9HX0ZJTEUsIE5VTEwsIHRydWUsIHRydWUsCi0JCQkgICJcIiVz L3BnX2R1bXBhbGxcIiAlcyAtLWdsb2JhbHMtb25seSAtLXF1b3RlLWFsbC1pZGVudGlmaWVycyAi CisJCQkgICJcIiVzL3BnX2R1bXBhbGxcIiAlcyVzIC0tZ2xvYmFscy1vbmx5IC0tcXVvdGUtYWxs LWlkZW50aWZpZXJzICIKIAkJCSAgIi0tYmluYXJ5LXVwZ3JhZGUgJXMgLWYgJXMiLAogCQkJICBu ZXdfY2x1c3Rlci5iaW5kaXIsIGNsdXN0ZXJfY29ubl9vcHRzKCZvbGRfY2x1c3RlciksCisJCQkg IHByb3RvY29sX25lZ290aWF0aW9uX3N1cHBvcnRlZCgmb2xkX2NsdXN0ZXIpID8gIiIgOiAiIC1k IFwibWF4X3Byb3RvY29sX3ZlcnNpb249My4wXCIiLAogCQkJICBsb2dfb3B0cy52ZXJib3NlID8g Ii0tdmVyYm9zZSIgOiAiIiwKIAkJCSAgR0xPQkFMU19EVU1QX0ZJTEUpOwogCWNoZWNrX29rKCk7 CkBAIC00Miw2ICs0Myw5IEBAIGdlbmVyYXRlX29sZF9kdW1wKHZvaWQpCiAJCWluaXRQUUV4cEJ1 ZmZlcigmY29ubnN0cik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uc3RyLCAiZGJuYW1l PSIpOwogCQlhcHBlbmRDb25uU3RyVmFsKCZjb25uc3RyLCBvbGRfZGItPmRiX25hbWUpOworCQlp ZiAoIXByb3RvY29sX25lZ290aWF0aW9uX3N1cHBvcnRlZCgmb2xkX2NsdXN0ZXIpKQorCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm5zdHIsICIgbWF4X3Byb3RvY29sX3ZlcnNpb249My4wIik7 CisKIAkJaW5pdFBRRXhwQnVmZmVyKCZlc2NhcGVkX2Nvbm5zdHIpOwogCQlhcHBlbmRTaGVsbFN0 cmluZygmZXNjYXBlZF9jb25uc3RyLCBjb25uc3RyLmRhdGEpOwogCQl0ZXJtUFFFeHBCdWZmZXIo JmNvbm5zdHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlcnZlci5jIGIvc3Jj L2Jpbi9wZ191cGdyYWRlL3NlcnZlci5jCmluZGV4IDdmZWQwYWUxMDg2Li5mNDlmMzAxM2MzOCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlcnZlci5jCisrKyBiL3NyYy9iaW4vcGdf dXBncmFkZS9zZXJ2ZXIuYwpAQCAtNzAsNiArNzAsOCBAQCBnZXRfZGJfY29ubihDbHVzdGVySW5m byAqY2x1c3RlciwgY29uc3QgY2hhciAqZGJfbmFtZSkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm5fb3B0cywgIiBob3N0PSIpOwogCQlhcHBlbmRDb25uU3RyVmFsKCZjb25uX29wdHMsIGNs dXN0ZXItPnNvY2tkaXIpOwogCX0KKwlpZiAoIXByb3RvY29sX25lZ290aWF0aW9uX3N1cHBvcnRl ZChjbHVzdGVyKSkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm5fb3B0cywgIiBtYXhfcHJv dG9jb2xfdmVyc2lvbj0zLjAiKTsKIAogCWNvbm4gPSBQUWNvbm5lY3RkYihjb25uX29wdHMuZGF0 YSk7CiAJdGVybVBRRXhwQnVmZmVyKCZjb25uX29wdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z191cGdyYWRlL3ZlcnNpb24uYyBiL3NyYy9iaW4vcGdfdXBncmFkZS92ZXJzaW9uLmMKaW5kZXgg Y2NiMDEyNjU3YmUuLmZkZGRkOTBiZjk3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUv dmVyc2lvbi5jCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS92ZXJzaW9uLmMKQEAgLTMyNSw2ICsz MjUsNDMgQEAgb2xkXzlfNl9jaGVja19mb3JfdW5rbm93bl9kYXRhX3R5cGVfdXNhZ2UoQ2x1c3Rl ckluZm8gKmNsdXN0ZXIpCiAJCWNoZWNrX29rKCk7CiB9CiAKKy8qCisgKiBPbGRlciBzZXJ2ZXJz IGNhbid0IHN1cHBvcnQgbmV3ZXIgcHJvdG9jb2wgdmVyc2lvbnMsIHNvIHRoZWlyIGNvbm5lY3Rp b24KKyAqIHN0cmluZ3Mgd2lsbCBuZWVkIHRvIGxvY2sgbWF4X3Byb3RvY29sX3ZlcnNpb24gdG8g My4wLgorICovCitib29sCitwcm90b2NvbF9uZWdvdGlhdGlvbl9zdXBwb3J0ZWQoY29uc3QgQ2x1 c3RlckluZm8gKmNsdXN0ZXIpCit7CisJaW50CQkJbWFqb3IgPSBHRVRfTUFKT1JfVkVSU0lPTihj bHVzdGVyLT5tYWpvcl92ZXJzaW9uKTsKKworCS8qCisJICogQmFjay1icmFuY2gtc3BlY2lmaWMg Y29tcGxpY2F0aW9uOiBmb3IgbGlicHEgdmVyc2lvbnMgcHJpb3IgdG8gUEcxOCwKKwkgKiBtYXhf cHJvdG9jb2xfdmVyc2lvbiBpc24ndCBzdXBwb3J0ZWQuIEJ1dCB3ZSBhbHNvIGRvbid0IG5lZWQg dG8gd29ycnkKKwkgKiBhYm91dCBuZXdlciBwcm90b2NvbCB2ZXJzaW9ucyBiZWluZyB1c2VkIGlu IHRoYXQgY2FzZSwgc28ganVzdCBsaWUgYW5kCisJICogcmV0dXJuIHRydWUuCisJICoKKwkgKiAo Q2hlY2tpbmcgZm9yIGEgbGlicHEgdmVyc2lvbiB0aGF0J3MgbmV3ZXIgdGhhbiB0aGlzIGJyYW5j aCBsb29rcyB2ZXJ5CisJICogc3RyYW5nZSwgYnV0IGRpc3RyaWJ1dGlvbnMgYXJlIGFsbG93ZWQg dG8gbGluayBvbGRlciBwZ191cGdyYWRlCisJICogYmluYXJpZXMgYWdhaW5zdCB0aGUgbmV3ZXN0 IHJlbGVhc2Ugb2YgbGlicHEuKQorCSAqLworCWlmIChQUWxpYlZlcnNpb24oKSA8IDE4MDAwMCkK KwkJcmV0dXJuIHRydWU7CisKKwkvKgorCSAqIFRoZXNlIHZlcnNpb24gbnVtYmVycyBjb21lIGZy b20gdGhlIEZlYnJ1YXJ5IDIwMTggcGF0Y2ggcmVsZWFzZSwgd2hpY2gKKwkgKiBhZGRlZCBzdXBw b3J0IGZvciBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb246IDkuMy4yMSwgOS40LjE2LCA5LjUuMTEs CisJICogOS42LjcsIGFuZCAxMC4yLgorCSAqLworCWlmIChjbHVzdGVyLT5tYWpvcl92ZXJzaW9u IDwgOTAzMjEKKwkJfHwgKG1ham9yID09IDkwNCAmJiBjbHVzdGVyLT5tYWpvcl92ZXJzaW9uIDwg OTA0MTYpCisJCXx8IChtYWpvciA9PSA5MDUgJiYgY2x1c3Rlci0+bWFqb3JfdmVyc2lvbiA8IDkw NTExKQorCQl8fCAobWFqb3IgPT0gOTA2ICYmIGNsdXN0ZXItPm1ham9yX3ZlcnNpb24gPCA5MDYw NykKKwkJfHwgKG1ham9yID09IDEwMDAgJiYgY2x1c3Rlci0+bWFqb3JfdmVyc2lvbiA8IDEwMDAw MikpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCiAvKgogICogb2xkXzlf Nl9pbnZhbGlkYXRlX2hhc2hfaW5kZXhlcygpCiAgKgk5LjYgLT4gMTAKLS0gCjIuMzQuMQoK --000000000000950e3a064b951398--