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.94.2) (envelope-from ) id 1rUwSX-00DvrM-HC for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jan 2024 22:20:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rUwSW-00A1uJ-LJ for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jan 2024 22:20:00 +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.94.2) (envelope-from ) id 1rUwSW-00A1uB-7E for pgsql-hackers@lists.postgresql.org; Tue, 30 Jan 2024 22:20:00 +0000 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rUwST-004DoN-3Y for pgsql-hackers@postgresql.org; Tue, 30 Jan 2024 22:19:58 +0000 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-214c940145bso2233252fac.1 for ; Tue, 30 Jan 2024 14:19:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon.tech; s=google; t=1706653196; x=1707257996; darn=postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CZUdjUxjb8vHRoN1CLwMCYpGTx4lFCkjGjdQmnzFrmE=; b=nw64GQ4tv7ncoTFWrE+lHF8H8NX0ZLPKk7CcHUuovZUrp3+vwtAaJKvVyScVu26Nva 93enDg42ywTo4I2+8yLFwU0fE/4WfE1u98Bbz+Jr+gkr/pikqgK2xfiu9ZvWtberyQPl SLl60Xofk+y1PZrXFc8HoW8ru5RqG6vIY7+kc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706653196; x=1707257996; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CZUdjUxjb8vHRoN1CLwMCYpGTx4lFCkjGjdQmnzFrmE=; b=bzPDICGh47jPmZOrKEtU1yMtEK90oISAjaUQZX+vfQVBo9diu79zOQNoYOkx/Eddv/ 3CoaqvatNmhCy4Exyep6EM/L48tiesMxVUp56hl0crsOk7xVdpD32OA/vutkraatXvdT ejCiMsnXlBVUjff4d74Cw9jGVtJo637z5IXrkT/TmYBIZb4vwmhvcbkbbC2GlbLLDyxM J5iK9+1VocM5GXXQ8t0qlU5tDOel8K578abaJVUndtc5jgPAXpVUl/vnq30qQGItt9gA EgeUMNZ0ULxxZ0aR2iAvhK5VIbVzzKJ0yXuzWi89D/hrpzVC+jsddo3xPlYfwfX1rIdU 6FTw== X-Gm-Message-State: AOJu0Yx6mMGnHoc8H4aNnK09HUa8on1AS4vtHkufL6BYs7BErqYls48Y UPLnAYh/StYp1AdiKBdmenaqJFErQ06o8kiNQGP71YKsnllivAnfK8Hi+Su9rlE= X-Google-Smtp-Source: AGHT+IFEP2nwaSf50ibWt3nkh//w8AuupU5cd3ytd6FgRByyExBOQqRReAhIca8hhJ4/D8A/1SyI/w== X-Received: by 2002:a05:6870:1593:b0:218:45c5:54ab with SMTP id j19-20020a056870159300b0021845c554abmr12944oab.18.1706653195740; Tue, 30 Jan 2024 14:19:55 -0800 (PST) Received: from localhost ([2600:1700:210:c270::3b]) by smtp.gmail.com with ESMTPSA id vr7-20020a056871a0c700b001fad96b0264sm2711608oab.10.2024.01.30.14.19.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Jan 2024 14:19:55 -0800 (PST) Content-Type: multipart/mixed; boundary=2242119616934e0f56f8f63965fa207743fd28f8f3e2179f4f968e2d7402 Mime-Version: 1.0 Date: Tue, 30 Jan 2024 16:19:54 -0600 Message-Id: Cc: "Heikki Linnakangas" , "Tom Lane" , , "Shlok Kyal" Subject: Re: psql not responding to SIGINT upon db reconnection To: "Robert Haas" From: "Tristan Partin" X-Mailer: aerc 0.16.0-178-g4998406cce85 References: <1588058.1690220636@sss.pgh.pa.us> <5e28b89f-0033-4e42-8184-b71b731c1aa2@iki.fi> <9b3693b7-0bc3-430a-b43f-eae44e8a39b6@iki.fi> <032868e0-a530-4fc7-972c-af6f08950b7e@iki.fi> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --2242119616934e0f56f8f63965fa207743fd28f8f3e2179f4f968e2d7402 Content-Type: multipart/alternative; boundary=06e88cda2151b2d2b1972cbdcb7e7344cde70719b869cbe118047a2201a0 --06e88cda2151b2d2b1972cbdcb7e7344cde70719b869cbe118047a2201a0 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Fri Jan 12, 2024 at 11:13 AM CST, Tristan Partin wrote: > On Fri Jan 12, 2024 at 10:45 AM CST, Robert Haas wrote: > > On Mon, Jan 8, 2024 at 1:03=E2=80=AFAM Tristan Partin wrote: > > > I think the way to go is to expose some variation of libpq's > > > pqSocketPoll(), which I would be happy to put together a patch for. > > > Making frontends, psql in this case, have to reimplement the polling > > > logic doesn't strike me as fruitful, which is essentially what I have > > > done. > > > > I encourage further exploration of this line of attack. I fear that if > > I were to commit something like what you've posted up until now, > > people would complain that that code was too ugly to live, and I'd > > have a hard time telling them that they're wrong. > > Completely agree. Let me look into this. Perhaps I can get something up= =20 > next week or the week after. Not next week, but here is a respin. I've exposed pqSocketPoll as=20 PQsocketPoll and am just using that. You can see the diff is so much=20 smaller, which is great! In order to fight the race condition, I am just using a 1 second timeout=20 instead of trying to integrate pselect or ppoll. We could add=20 a PQsocketPPoll() to support those use cases, but I am not sure how=20 available pselect and ppoll are. I guess on Windows we don't have=20 pselect. I don't think using the pipe trick that Heikki mentioned=20 earlier is suitable to expose via an API in libpq, but someone else=20 might have a different opinion. Maybe this is good enough until someone complains? Most people would=20 probably just chalk any latency between keypress and cancellation as=20 network latency and not a hardcoded 1 second. Thanks for your feedback Robert! --=20 Tristan Partin Neon (https://neon.tech) --06e88cda2151b2d2b1972cbdcb7e7344cde70719b869cbe118047a2201a0-- --2242119616934e0f56f8f63965fa207743fd28f8f3e2179f4f968e2d7402 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v8-0001-Expose-PQsocketPoll-for-frontends.patch Content-Type: text/x-patch; charset=utf-8; name=v8-0001-Expose-PQsocketPoll-for-frontends.patch RnJvbSA0ZmE2ZGIxOTAwYTM1NWExNzFkM2UxNjAxOWQwMmYzYTQxNTc2NGQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMzAgSmFuIDIwMjQgMTU6NDA6NTcgLTA2MDAKU3ViamVjdDogW1BBVENIIHY4IDEv Ml0gRXhwb3NlIFBRc29ja2V0UG9sbCBmb3IgZnJvbnRlbmRzCgpQUXNvY2tldFBvbGwgc2hvdWxk IGhlbHAgd2l0aCBzdGF0ZSBtYWNoaW5lIHByb2Nlc3Npbmcgd2hlbiBjb25uZWN0aW5nCnRvIGEg ZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgdmlhIFBRY29ubmVjdFN0YXJ0KCkuCi0tLQogZG9jL3Ny Yy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICB8IDUgKysrKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLW1pc2MuYyAgfCA3ICsrKy0tLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgg fCA0ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9s aWJwcS5zZ21sCmluZGV4IGQwZDVhZWZhZGMuLmFhMjZjMmNjOGQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCkBAIC0zNTgs NyArMzU4LDEwIEBAIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgUFFjb25uZWN0UG9sbChQR2Nv bm4gKmNvbm4pOwogICAgICAgIExvb3AgdGh1czogSWYgPGZ1bmN0aW9uPlBRY29ubmVjdFBvbGwo Y29ubik8L2Z1bmN0aW9uPiBsYXN0IHJldHVybmVkCiAgICAgICAgPHN5bWJvbD5QR1JFU19QT0xM SU5HX1JFQURJTkc8L3N5bWJvbD4sIHdhaXQgdW50aWwgdGhlIHNvY2tldCBpcyByZWFkeSB0bwog ICAgICAgIHJlYWQgKGFzIGluZGljYXRlZCBieSA8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0aW9u PiwgPGZ1bmN0aW9uPnBvbGwoKTwvZnVuY3Rpb24+LCBvcgotICAgICAgIHNpbWlsYXIgc3lzdGVt IGZ1bmN0aW9uKS4KKyAgICAgICBzaW1pbGFyIHN5c3RlbSBmdW5jdGlvbikuICBOb3RlIHRoYXQg PGZ1bmN0aW9uPlBRc29ja2V0UG9sbDwvZnVuY3Rpb24+CisgICAgICAgY2FuIGhlbHAgcmVkdWNl IGJvaWxlcnBsYXRlIGJ5IGFic3RyYWN0aW5nIHRoZSBzZXR1cCBvZgorICAgICAgIDxmdW5jdGlv bj5zZWxlY3QoKTwvZnVuY3Rpb24+LCBvciA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gaWYg aXQgaXMKKyAgICAgICBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0uCiAgICAgICAgVGhlbiBjYWxs IDxmdW5jdGlvbj5QUWNvbm5lY3RQb2xsKGNvbm4pPC9mdW5jdGlvbj4gYWdhaW4uCiAgICAgICAg Q29udmVyc2VseSwgaWYgPGZ1bmN0aW9uPlBRY29ubmVjdFBvbGwoY29ubik8L2Z1bmN0aW9uPiBs YXN0IHJldHVybmVkCiAgICAgICAgPHN5bWJvbD5QR1JFU19QT0xMSU5HX1dSSVRJTkc8L3N5bWJv bD4sIHdhaXQgdW50aWwgdGhlIHNvY2tldCBpcyByZWFkeQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtbWlzYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jCmlu ZGV4IDQ3YTI4YjBhM2EuLmVlOTE3ZDM3NWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLW1pc2MuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKQEAgLTU1 LDcgKzU1LDYgQEAgc3RhdGljIGludAlwcVB1dE1zZ0J5dGVzKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6 ZV90IGxlbiwgUEdjb25uICpjb25uKTsKIHN0YXRpYyBpbnQJcHFTZW5kU29tZShQR2Nvbm4gKmNv bm4sIGludCBsZW4pOwogc3RhdGljIGludAlwcVNvY2tldENoZWNrKFBHY29ubiAqY29ubiwgaW50 IGZvclJlYWQsIGludCBmb3JXcml0ZSwKIAkJCQkJCSAgdGltZV90IGVuZF90aW1lKTsKLXN0YXRp YyBpbnQJcHFTb2NrZXRQb2xsKGludCBzb2NrLCBpbnQgZm9yUmVhZCwgaW50IGZvcldyaXRlLCB0 aW1lX3QgZW5kX3RpbWUpOwogCiAvKgogICogUFFsaWJWZXJzaW9uOiByZXR1cm4gdGhlIGxpYnBx IHZlcnNpb24gbnVtYmVyCkBAIC0xMDU5LDcgKzEwNTgsNyBAQCBwcVNvY2tldENoZWNrKFBHY29u biAqY29ubiwgaW50IGZvclJlYWQsIGludCBmb3JXcml0ZSwgdGltZV90IGVuZF90aW1lKQogCiAJ LyogV2Ugd2lsbCByZXRyeSBhcyBsb25nIGFzIHdlIGdldCBFSU5UUiAqLwogCWRvCi0JCXJlc3Vs dCA9IHBxU29ja2V0UG9sbChjb25uLT5zb2NrLCBmb3JSZWFkLCBmb3JXcml0ZSwgZW5kX3RpbWUp OworCQlyZXN1bHQgPSBQUXNvY2tldFBvbGwoY29ubi0+c29jaywgZm9yUmVhZCwgZm9yV3JpdGUs IGVuZF90aW1lKTsKIAl3aGlsZSAocmVzdWx0IDwgMCAmJiBTT0NLX0VSUk5PID09IEVJTlRSKTsK IAogCWlmIChyZXN1bHQgPCAwKQpAQCAtMTA4Myw4ICsxMDgyLDggQEAgcHFTb2NrZXRDaGVjayhQ R2Nvbm4gKmNvbm4sIGludCBmb3JSZWFkLCBpbnQgZm9yV3JpdGUsIHRpbWVfdCBlbmRfdGltZSkK ICAqIFRpbWVvdXQgaXMgaW5maW5pdGUgaWYgZW5kX3RpbWUgaXMgLTEuICBUaW1lb3V0IGlzIGlt bWVkaWF0ZSAobm8gYmxvY2tpbmcpCiAgKiBpZiBlbmRfdGltZSBpcyAwIChvciBpbmRlZWQsIGFu eSB0aW1lIGJlZm9yZSBub3cpLgogICovCi1zdGF0aWMgaW50Ci1wcVNvY2tldFBvbGwoaW50IHNv Y2ssIGludCBmb3JSZWFkLCBpbnQgZm9yV3JpdGUsIHRpbWVfdCBlbmRfdGltZSkKK2ludAorUFFz b2NrZXRQb2xsKGludCBzb2NrLCBpbnQgZm9yUmVhZCwgaW50IGZvcldyaXRlLCB0aW1lX3QgZW5k X3RpbWUpCiB7CiAJLyogV2UgdXNlIHBvbGwoMikgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2Ugc2Vs ZWN0KDIpICovCiAjaWZkZWYgSEFWRV9QT0xMCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1mZS5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAppbmRleCBk ZWZjNDE1ZmEzLi4xMWE3ZmQzMmI2IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1mZS5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKQEAgLTIxLDYg KzIxLDcgQEAgZXh0ZXJuICJDIgogI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1 ZGUgPHRpbWUuaD4KIAogLyoKICAqIHBvc3RncmVzX2V4dC5oIGRlZmluZXMgdGhlIGJhY2tlbmQn cyBleHRlcm5hbGx5IHZpc2libGUgdHlwZXMsCkBAIC02NDQsNiArNjQ1LDkgQEAgZXh0ZXJuIGlu dAlsb19leHBvcnQoUEdjb25uICpjb25uLCBPaWQgbG9iaklkLCBjb25zdCBjaGFyICpmaWxlbmFt ZSk7CiAvKiBHZXQgdGhlIHZlcnNpb24gb2YgdGhlIGxpYnBxIGxpYnJhcnkgaW4gdXNlICovCiBl eHRlcm4gaW50CVBRbGliVmVyc2lvbih2b2lkKTsKIAorLyogUG9sbCBhIGZpbGUgZGVzY3JpcHRv ciBmb3IgcmVhZGluZyBhbmQvb3Igd3JpdGluZyB3aXRoIGEgdGltZW91dCAqLworZXh0ZXJuIGlu dAlQUXNvY2tldFBvbGwoaW50IHNvY2ssIGludCBmb3JSZWFkLCBpbnQgZm9yV3JpdGUsIHRpbWVf dCBlbmRfdGltZSk7CisKIC8qIERldGVybWluZSBsZW5ndGggb2YgbXVsdGlieXRlIGVuY29kZWQg Y2hhciBhdCAqcyAqLwogZXh0ZXJuIGludAlQUW1ibGVuKGNvbnN0IGNoYXIgKnMsIGludCBlbmNv ZGluZyk7CiAKLS0gClRyaXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVvbi50ZWNoKQoK --2242119616934e0f56f8f63965fa207743fd28f8f3e2179f4f968e2d7402 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v8-0002-Allow-SIGINT-to-cancel-psql-database-reconnection.patch Content-Type: text/x-patch; charset=utf-8; name=v8-0002-Allow-SIGINT-to-cancel-psql-database-reconnection.patch RnJvbSBlNGQ2MTIxNmI4MjI4NTI5NDA2MzFhZGE2NWI5MDNiNjU3ODBmYjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMzAgSmFuIDIwMjQgMTU6NTM6MTAgLTA2MDAKU3ViamVjdDogW1BBVENIIHY4IDIv Ml0gQWxsb3cgU0lHSU5UIHRvIGNhbmNlbCBwc3FsIGRhdGFiYXNlIHJlY29ubmVjdGlvbnMKCkFm dGVyIGluc3RhbGxpbmcgdGhlIFNJR0lOVCBoYW5kbGVyIGluIHBzcWwsIFNJR0lOVCBjYW4gbm8g bG9uZ2VyIGNhbmNlbApkYXRhYmFzZSByZWNvbm5lY3Rpb25zLiBGb3IgaW5zdGFuY2UsIGlmIHRo ZSB1c2VyIHN0YXJ0cyBhIHJlY29ubmVjdGlvbgphbmQgdGhlbiBuZWVkcyB0byBkbyBzb21lIGZv cm0gb2YgaW50ZXJhY3Rpb24gKGllIHBzcWwgaXMgcG9sbGluZyksCnRoZXJlIGlzIG5vIHdheSB0 byBjYW5jZWwgdGhlIHJlY29ubmVjdGlvbiBwcm9jZXNzIGN1cnJlbnRseS4KClVzZSBQUWNvbm5l Y3RTdGFydFBhcmFtcygpIGluIG9yZGVyIHRvIGluc2VydCBhIGNhbmNlbF9wcmVzc2VkIGNoZWNr CmludG8gdGhlIHBvbGxpbmcgbG9vcC4KLS0tCiBsZWFrLnN1cHAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICsrCiBzcmMvYmluL3BzcWwvY29tbWFuZC5jICAgICAgICAgICB8IDQzICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRz LnR4dCB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxlYWsuc3VwcAoKZGlmZiAtLWdpdCBhL2xlYWsuc3Vw cCBiL2xlYWsuc3VwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mM2Zj MjdhMWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbGVhay5zdXBwCkBAIC0wLDAgKzEsMiBAQAorbGVh azpzYXZlX3BzX2Rpc3BsYXlfYXJncworbGVhazpwYXJzZV9wc3FsX29wdGlvbnMKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4 IDVjOTA2ZTQ4MDYuLjE5MDA2NTczMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5k LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtMzI3OSw2ICszMjc5LDQ2IEBAIHBh cmFtX2lzX25ld2x5X3NldChjb25zdCBjaGFyICpvbGRfdmFsLCBjb25zdCBjaGFyICpuZXdfdmFs KQogCXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIHZvaWQKK3Byb2Nlc3NfY29ubmVjdGlvbl9z dGF0ZV9tYWNoaW5lKFBHY29ubiAqY29ubikKK3sKKwlib29sCQlmb3JfcmVhZCA9IGZhbHNlOwor CisJd2hpbGUgKHRydWUpCisJeworCQlpbnQJCQlyYzsKKwkJaW50CQkJc29jazsKKworCQlpZiAo Y2FuY2VsX3ByZXNzZWQpCisJCQlicmVhazsKKworCQlzb2NrID0gUFFzb2NrZXQoY29ubik7CisJ CWlmIChzb2NrID09IC0xKQorCQkJYnJlYWs7CisKKwkJcmMgPSBQUXNvY2tldFBvbGwoc29jaywg Zm9yX3JlYWQsICFmb3JfcmVhZCwgMSk7CisJCWlmIChyYyA9PSAtMSkKKwkJCXJldHVybjsKKwor CQlzd2l0Y2ggKFBRY29ubmVjdFBvbGwoY29ubikpCisJCXsKKwkJCWNhc2UgUEdSRVNfUE9MTElO R19PSzoKKwkJCWNhc2UgUEdSRVNfUE9MTElOR19GQUlMRUQ6CisJCQkJcmV0dXJuOworCQkJY2Fz ZSBQR1JFU19QT0xMSU5HX1JFQURJTkc6CisJCQkJZm9yX3JlYWQgPSB0cnVlOworCQkJCWNvbnRp bnVlOworCQkJY2FzZSBQR1JFU19QT0xMSU5HX1dSSVRJTkc6CisJCQkJZm9yX3JlYWQgPSBmYWxz ZTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgUEdSRVNfUE9MTElOR19BQ1RJVkU6CisJCQkJcGdf dW5yZWFjaGFibGUoKTsKKwkJfQorCX0KKworCXBnX3VucmVhY2hhYmxlKCk7Cit9CisKIC8qCiAg KiBkb19jb25uZWN0IC0tIGhhbmRsZXIgZm9yIFxjb25uZWN0CiAgKgpAQCAtMzU5NSwxMSArMzYz NSwxMiBAQCBkb19jb25uZWN0KGVudW0gdHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNh dGlvbiwKIAkJdmFsdWVzW3BhcmFtbnVtXSA9IE5VTEw7CiAKIAkJLyogTm90ZSB3ZSBkbyBub3Qg d2FudCBsaWJwcSB0byByZS1leHBhbmQgdGhlIGRibmFtZSBwYXJhbWV0ZXIgKi8KLQkJbl9jb25u ID0gUFFjb25uZWN0ZGJQYXJhbXMoa2V5d29yZHMsIHZhbHVlcywgZmFsc2UpOworCQluX2Nvbm4g PSBQUWNvbm5lY3RTdGFydFBhcmFtcyhrZXl3b3JkcywgdmFsdWVzLCBmYWxzZSk7CiAKIAkJcGdf ZnJlZShrZXl3b3Jkcyk7CiAJCXBnX2ZyZWUodmFsdWVzKTsKIAorCQlwcm9jZXNzX2Nvbm5lY3Rp b25fc3RhdGVfbWFjaGluZShuX2Nvbm4pOwogCQlpZiAoUFFzdGF0dXMobl9jb25uKSA9PSBDT05O RUNUSU9OX09LKQogCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2V4cG9ydHMudHh0IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggMDg4 NTkyZGViMS4uN2E3YTZkZGJhYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhw b3J0cy50eHQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTE5Mywz ICsxOTMsNCBAQCBQUXNlbmRDbG9zZVByZXBhcmVkICAgICAgIDE5MAogUFFzZW5kQ2xvc2VQb3J0 YWwgICAgICAgICAxOTEKIFBRY2hhbmdlUGFzc3dvcmQgICAgICAgICAgMTkyCiBQUXNlbmRQaXBl bGluZVN5bmMgICAgICAgIDE5MworUFFzb2NrZXRQb2xsICAgICAgICAgICAgICAxOTQKLS0gClRy aXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVvbi50ZWNoKQoK --2242119616934e0f56f8f63965fa207743fd28f8f3e2179f4f968e2d7402--