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 1rMijq-006Alf-4d for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jan 2024 06:03:54 +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 1rMijo-002Uqi-Nn for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jan 2024 06:03:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rMijo-002UpB-CG for pgsql-hackers@lists.postgresql.org; Mon, 08 Jan 2024 06:03:52 +0000 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rMijl-000QKd-02 for pgsql-hackers@postgresql.org; Mon, 08 Jan 2024 06:03:51 +0000 Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-3bc09844f29so1684988b6e.0 for ; Sun, 07 Jan 2024 22:03:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon.tech; s=google; t=1704693827; x=1705298627; darn=postgresql.org; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=DYbziQwReNhjf543KUTIwUWBjYSEF9UmaUTlAp2lLTM=; b=mCMIigP2FAaqPNY8qPFbxwqNIcFVHreN0/yVOVs2nuyVQ8LCpNbdIIpPegTbn2t/hW P3Bm4gLs+/BwDEnCdM3CNuXX9lrLgMLOH5EwvZ3e/NegecjKQfCtgt7weO560MvnpIkb zl6AjvZ+ArinVhZJZbAkT/BRbyu0F6eKmVJdc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704693827; x=1705298627; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=DYbziQwReNhjf543KUTIwUWBjYSEF9UmaUTlAp2lLTM=; b=CPF4Q/42M7XUtbFezAPnAbcypo4d+pA2dZ2mNRF0KKjh2B5tv40IzdyzMkyXEErd7L 0iWrXI8sC/ZAeZLcmCOn+gCCVkO3F6RU6dmwgQqFwpcWe6q+EEWYJyXs8+OJwJxT9R3Z XeSKuwOdn6h3jgMC11Nt5EOP43nlC7Snk8WofWv7/R9gx7pMvl2RN7pq+7Y0lYDci14R HCUtpNP0JAmBpJI40O/HwK1NYz590cc5xQLwvjkCUxxBeexpwu5/sJPxKwSZ5qgGNHL4 xGXKyZatKNkmbYvT4IuVW0B4KZEE3l11U6R1ym40/iSIImvBnHRzAXgb7T/KhMnrgv+Q RW0w== X-Gm-Message-State: AOJu0YwMM4gHohjs1OTh3aeYTHGjXlNLJCp940NvSvBYTnAwW2IHCyaj axeGLQVZfXUpqqrXWGLYlewRUKhV1LMS/Q== X-Google-Smtp-Source: AGHT+IHOzXPOKEPp+iuxDpCDroWBWRRxZ5ALWzCKyZBz8HllaTX46YWq1HwwY9gbIImCPDwBkrIvIg== X-Received: by 2002:a05:6808:1507:b0:3bc:1011:644b with SMTP id u7-20020a056808150700b003bc1011644bmr4693985oiw.53.1704693826894; Sun, 07 Jan 2024 22:03:46 -0800 (PST) Received: from localhost ([2607:fb90:f21c:8167:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id g35-20020a0568080de300b003bc26d642a6sm1215070oic.52.2024.01.07.22.03.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Jan 2024 22:03:46 -0800 (PST) Content-Type: multipart/mixed; boundary=a65d28eebd994586114fdac11e115558607c9ca3a9b2eeb4f88a2aab8833 Mime-Version: 1.0 Date: Mon, 08 Jan 2024 00:03:45 -0600 Message-Id: Subject: Re: psql not responding to SIGINT upon db reconnection To: "Robert Haas" From: "Tristan Partin" Cc: "Heikki Linnakangas" , "Tom Lane" , , "Shlok Kyal" X-Mailer: aerc 0.16.0-93-gbd29700e708d 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 --a65d28eebd994586114fdac11e115558607c9ca3a9b2eeb4f88a2aab8833 Content-Type: multipart/alternative; boundary=65314c8ba475cc3e917ad5ab1685cb755d57952cfae8dff381f9c837410a --65314c8ba475cc3e917ad5ab1685cb755d57952cfae8dff381f9c837410a Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Fri Jan 5, 2024 at 12:24 PM CST, Robert Haas wrote: > On Tue, Dec 5, 2023 at 1:35=E2=80=AFPM Tristan Partin = wrote: > > On Wed Nov 29, 2023 at 11:48 AM CST, Tristan Partin wrote: > > > I am not completely in love with the code I have written. Lots of > > > conditional compilation which makes it hard to read. Looking forward = to > > > another round of review to see what y'all think. > > > > Ok. Here is a patch which just uses select(2) with a timeout of 1s or > > pselect(2) if it is available. I also moved the state machine processin= g > > into its own function. > > Hmm, this adds a function called pqSocketPoll to psql/command.c. But > there already is such a function in libpq/fe-misc.c. It's not quite > the same, though. Having the same function in two different modules > with subtly different definitions seems like it's probably not the > right idea. Yep, not tied to the function name. Happy to rename as anyone suggests. > Also, this seems awfully complicated for something that's supposed to > (checks notes) wait for a file descriptor to become ready for I/O for > up to 1 second. It's 160 lines of code in pqSocketPoll and another 50 > in the caller. If this is really the simplest way to do this, we > really need to rethink our libpq APIs or, uh, something. I wonder if > we could make this simpler by, say: > > - always use select > - always use a 1-second timeout > - if it returns faster because the race condition doesn't happen, cool > - if it doesn't, well then you get to wait for a second, oh well > > I don't feel strongly that that's the right way to go and if Heikki or > some other committer wants to go with this more complex conditional > approach, that's fine. But to me it seems like a lot. 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. Thanks for your input! But also wait a second. In my last email, I said: > Ok. Here is a patch which just uses select(2) with a timeout of 1s or > pselect(2) if it is available. I also moved the state machine processing > into its own function. This is definitely not the patch I meant to send. What the? Here is what I meant to send, but I stand by my comment that we should just expose a variation of pqSocketPoll(). -- Tristan Partin Neon (https://neon.tech) --65314c8ba475cc3e917ad5ab1685cb755d57952cfae8dff381f9c837410a-- --a65d28eebd994586114fdac11e115558607c9ca3a9b2eeb4f88a2aab8833 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v7-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch Content-Type: text/x-patch; charset=utf-8; name=v7-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch RnJvbSA1ZTE5YjI2MTExNzA4YjY1NGM3YjQ5YzNiOWZkN2RjMThiOTRjMGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IE1vbiwgMjQgSnVsIDIwMjMgMTE6MTI6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHY3IDEv Ml0gQWxsb3cgU0lHSU5UIHRvIGNhbmNlbCBwc3FsIGRhdGFiYXNlIHJlY29ubmVjdGlvbnMKCkFm dGVyIGluc3RhbGxpbmcgdGhlIFNJR0lOVCBoYW5kbGVyIGluIHBzcWwsIFNJR0lOVCBjYW4gbm8g bG9uZ2VyIGNhbmNlbApkYXRhYmFzZSByZWNvbm5lY3Rpb25zLiBGb3IgaW5zdGFuY2UsIGlmIHRo ZSB1c2VyIHN0YXJ0cyBhIHJlY29ubmVjdGlvbgphbmQgdGhlbiBuZWVkcyB0byBkbyBzb21lIGZv cm0gb2YgaW50ZXJhY3Rpb24gKGllIHBzcWwgaXMgcG9sbGluZyksCnRoZXJlIGlzIG5vIHdheSB0 byBjYW5jZWwgdGhlIHJlY29ubmVjdGlvbiBwcm9jZXNzIGN1cnJlbnRseS4KClVzZSBQUWNvbm5l Y3RTdGFydFBhcmFtcygpIGluIG9yZGVyIHRvIGluc2VydCBhIENhbmNlbFJlcXVlc3RlZCBjaGVj awppbnRvIHRoZSBwb2xsaW5nIGxvb3AuCi0tLQogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyAgICAgfCAxNTYgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gfCAgIDMg Kwogc3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0gfCAgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAx NjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxk IGIvbWVzb24uYnVpbGQKaW5kZXggZWU1OGVlN2EwNi4uMmQ2MzQ4NWM1MyAxMDA2NDQKLS0tIGEv bWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI0NDAsNiArMjQ0MCw3IEBAIGZ1bmNf Y2hlY2tzID0gWwogICBbJ3Bvc2l4X2ZhZHZpc2UnXSwKICAgWydwb3NpeF9mYWxsb2NhdGUnXSwK ICAgWydwcG9sbCddLAorICBbJ3BzZWxlY3QnXSwKICAgWydwc3RhdCddLAogICBbJ3B0aHJlYWRf YmFycmllcl93YWl0JywgeydkZXBlbmRlbmNpZXMnOiBbdGhyZWFkX2RlcF19XSwKICAgWydwdGhy ZWFkX2lzX3RocmVhZGVkX25wJywgeydkZXBlbmRlbmNpZXMnOiBbdGhyZWFkX2RlcF19XSwKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5j CmluZGV4IDgyY2MwOTE1NjguLjNhNzY2MjNiMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9j b21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtMTEsNiArMTEsNyBAQAog I2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxwd2QuaD4KICNpbmNsdWRlIDx1dGltZS5oPgor I2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KICNpZm5kZWYgV0lOMzIKICNpbmNsdWRlIDxzeXMvc3Rh dC5oPgkJCS8qIGZvciBzdGF0KCkgKi8KICNpbmNsdWRlIDxzeXMvdGltZS5oPgkJCS8qIGZvciBz ZXRpdGltZXIoKSAqLwpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgImxhcmdlX29iai5oIgog I2luY2x1ZGUgImxpYnBxLWZlLmgiCiAjaW5jbHVkZSAibGlicHEvcHFjb21tLmgiCisjaW5jbHVk ZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtYWlubG9vcC5oIgogI2luY2x1ZGUgInBv cnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKICNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgpAQCAtMzI5 OCw2ICszMzAwLDE1NyBAQCBwYXJhbV9pc19uZXdseV9zZXQoY29uc3QgY2hhciAqb2xkX3ZhbCwg Y29uc3QgY2hhciAqbmV3X3ZhbCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBDaGVjayBh IGZpbGUgZGVzY3JpcHRvciBmb3IgcmVhZCBhbmQvb3Igd3JpdGUgZGF0YSwgcG9zc2libHkgd2Fp dGluZy4KKyAqIElmIG5laXRoZXIgZm9yUmVhZCBub3IgZm9yV3JpdGUgYXJlIHNldCwgaW1tZWRp YXRlbHkgcmV0dXJuIGEgdGltZW91dAorICogY29uZGl0aW9uICh3aXRob3V0IHdhaXRpbmcpLiAg UmV0dXJuID4wIGlmIGNvbmRpdGlvbiBpcyBtZXQsIDAKKyAqIGlmIGEgdGltZW91dCBvY2N1cnJl ZCwgLTEgaWYgYW4gZXJyb3Igb3IgaW50ZXJydXB0IG9jY3VycmVkLgorICoKKyAqIFRpbWVvdXQg aXMgaW5maW5pdGUgaWYgZW5kX3RpbWUgaXMgLTEuICBUaW1lb3V0IGlzIGltbWVkaWF0ZSAobm8g YmxvY2tpbmcpCisgKiBpZiBlbmRfdGltZSBpcyAwIChvciBpbmRlZWQsIGFueSB0aW1lIGJlZm9y ZSBub3cpLgorICoKKyAqIFVzZXMgdGhlIHNlbGVjdCgyKSBmYW1pbHkgb2YgZnVuY3Rpb25zIGJl Y2F1c2UgaXQgaXMgYXZhaWxhYmxlIG9uIGV2ZXJ5CisgKiBwbGF0Zm9ybS4gSXQgaXMgdW5saWtl bHkgdGhhdCBwc3FsIHdvdWxkIGJlIGhvbGRpbmcgZW5vdWdoIGZpbGUgZGVzY3JpcHRvcnMKKyAq IHRoYXQgd291bGQgbmVjZXNzaXRhdGUgdXNpbmcgcG9sbCgyKSBvciBwcG9sbCgyKSBmb3IgZXhh bXBsZS4KKyAqLworc3RhdGljIGludAorcHFTb2NrZXRQb2xsKGludCBzb2NrLCBpbnQgZm9yUmVh ZCwgaW50IGZvcldyaXRlLCB0aW1lX3QgZW5kX3RpbWUpCit7CisJLyoKKwkgKiBXZSB1c2UgZnVu Y3Rpb25zIGluIHRoZSBmb2xsb3dpbmcgb3JkZXIgaWYgYXZhaWxhYmxlOiBwc2VsZWN0KDIpIG9y LAorCSAqIHNlbGVjdCgyKS4KKwkgKi8KKwlmZF9zZXQJCWlucHV0X21hc2s7CisJZmRfc2V0CQlv dXRwdXRfbWFzazsKKwlmZF9zZXQJCWV4Y2VwdF9tYXNrOworI2lmZGVmIEhBVkVfUFNFTEVDVAor CWludAkJCXJjOworCXNpZ3NldF90CWVtcHR5c2V0OworCXNpZ3NldF90CWJsb2Nrc2V0OworCXNp Z3NldF90CW9yaWdzZXQ7CisJc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisJc3RydWN0IHRpbWVz cGVjICpwdHJfdGltZW91dDsKKyNlbHNlCisJc3RydWN0IHRpbWV2YWwgdGltZW91dDsKKwlzdHJ1 Y3QgdGltZXZhbCAqcHRyX3RpbWVvdXQ7CisjZW5kaWYKKworCWlmICghZm9yUmVhZCAmJiAhZm9y V3JpdGUpCisJCXJldHVybiAwOworCisJRkRfWkVSTygmaW5wdXRfbWFzayk7CisJRkRfWkVSTygm b3V0cHV0X21hc2spOworCUZEX1pFUk8oJmV4Y2VwdF9tYXNrKTsKKwlpZiAoZm9yUmVhZCkKKwkJ RkRfU0VUKHNvY2ssICZpbnB1dF9tYXNrKTsKKworCWlmIChmb3JXcml0ZSkKKwkJRkRfU0VUKHNv Y2ssICZvdXRwdXRfbWFzayk7CisJRkRfU0VUKHNvY2ssICZleGNlcHRfbWFzayk7CisKKwkvKiBD b21wdXRlIGFwcHJvcHJpYXRlIHRpbWVvdXQgaW50ZXJ2YWwgKi8KKyNpZmRlZiBIQVZFX1BTRUxF Q1QKKwlzaWdlbXB0eXNldCgmYmxvY2tzZXQpOworCXNpZ2FkZHNldCgmYmxvY2tzZXQsIFNJR0lO VCk7CisJc2lncHJvY21hc2soU0lHX0JMT0NLLCAmYmxvY2tzZXQsICZvcmlnc2V0KTsKKworCWlm IChlbmRfdGltZSA9PSAoKHRpbWVfdCkgLTEpKQorCQlwdHJfdGltZW91dCA9IE5VTEw7CisJZWxz ZQorCXsKKwkJdGltZW91dC50dl9zZWMgPSBlbmRfdGltZTsKKwkJdGltZW91dC50dl9uc2VjID0g MDsKKwkJcHRyX3RpbWVvdXQgPSAmdGltZW91dDsKKwl9CisjZWxzZQorCWlmIChlbmRfdGltZSA9 PSAoKHRpbWVfdCkgLTEpKQorCQlwdHJfdGltZW91dCA9IE5VTEw7CisJZWxzZQorCXsKKwkJdGlt ZV90CQlub3cgPSB0aW1lKE5VTEwpOworCisJCWlmIChlbmRfdGltZSA+IG5vdykKKwkJCXRpbWVv dXQudHZfc2VjID0gZW5kX3RpbWUgLSBub3c7CisJCWVsc2UKKwkJCXRpbWVvdXQudHZfc2VjID0g MDsKKwkJdGltZW91dC50dl91c2VjID0gMDsKKwkJcHRyX3RpbWVvdXQgPSAmdGltZW91dDsKKwl9 CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUFNFTEVDVAorCXNpZ2VtcHR5c2V0KCZlbXB0eXNldCk7 CisJaWYgKGNhbmNlbF9wcmVzc2VkKQorCXsKKwkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZv cmlnc2V0LCBOVUxMKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmMgPSBwc2VsZWN0KHNvY2sgKyAx LCAmaW5wdXRfbWFzaywgJm91dHB1dF9tYXNrLAorCQkJCSAmZXhjZXB0X21hc2ssIHB0cl90aW1l b3V0LCAmZW1wdHlzZXQpOworCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb3JpZ3NldCwgTlVM TCk7CisJcmV0dXJuIHJjOworI2Vsc2UKKwlyZXR1cm4gc2VsZWN0KHNvY2sgKyAxLCAmaW5wdXRf bWFzaywgJm91dHB1dF9tYXNrLAorCQkJCSAgJmV4Y2VwdF9tYXNrLCBwdHJfdGltZW91dCk7Cisj ZW5kaWYKK30KKworc3RhdGljIHZvaWQKK3Byb2Nlc3NfY29ubmVjdGlvbl9zdGF0ZV9tYWNoaW5l KFBHY29ubiAqY29ubikKK3sKKwlib29sCQlmb3JfcmVhZCA9IGZhbHNlOworCisJd2hpbGUgKHRy dWUpCisJeworCQlpbnQJCQlyYzsKKwkJaW50CQkJc29jazsKKwkJdGltZV90CQl0aW1lb3V0Owor CisJCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWJyZWFrOworCisJCXNvY2sgPSBQUXNvY2tldChj b25uKTsKKwkJaWYgKHNvY2sgPT0gLTEpCisJCQlicmVhazsKKworCQkvKgorCQkgKiBXZSB1c2Ug cHNlbGVjdCgyKSB0byBhY2NvdW50IGZvciB0aGUgcmFjZSBjb25kaXRpb24gaW4gd2hpY2ggU0lH SU5UCisJCSAqIGlzIHNlbnQgYWZ0ZXIgY2hlY2tpbmcgY2FuY2VsX3ByZXNzZWQuIEJ1dCBvbiBw bGF0Zm9ybXMgdGhhdCBkb24ndAorCQkgKiBoYXZlIGVpdGhlciBmdW5jdGlvbiwgd2UgY2FuIGp1 c3Qgc3BpbiB0aGUgQ1BVIGEgYml0IHBvbGxpbmcsIHNvCisJCSAqIHNldCB0aGUgdGltZW91dCB0 byAxIHNlY29uZCBpZiB3ZSBkb24ndCBoYXZlIHRoZSBhZm9yZW1lbnRpb25lZAorCQkgKiBmdW5j dGlvbi4gT3RoZXJ3aXNlLCBzZXQgdGltZW91dCB0byBhIG5lZ2F0aXZlIHZhbHVlIGluZGljYXRp bmcgd2UKKwkJICogd2lsbCBzaXQgYW5kIHdhaXQgZm9yZXZlci4KKwkJICovCisjaWYgZGVmaW5l ZChIQVZFX1BTRUxFQ1QpCisJCXRpbWVvdXQgPSAtMTsKKyNlbHNlCisJCXRpbWVvdXQgPSAxOwor I2VuZGlmCisKKwkJcmMgPSBwcVNvY2tldFBvbGwoc29jaywgZm9yX3JlYWQsICFmb3JfcmVhZCwg dGltZW91dCk7CisJCWlmIChyYyA9PSAtMSkKKwkJCXJldHVybjsKKworCQlzd2l0Y2ggKFBRY29u bmVjdFBvbGwoY29ubikpCisJCXsKKwkJCWNhc2UgUEdSRVNfUE9MTElOR19PSzoKKwkJCWNhc2Ug UEdSRVNfUE9MTElOR19GQUlMRUQ6CisJCQkJcmV0dXJuOworCQkJY2FzZSBQR1JFU19QT0xMSU5H X1JFQURJTkc6CisJCQkJZm9yX3JlYWQgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSBQ R1JFU19QT0xMSU5HX1dSSVRJTkc6CisJCQkJZm9yX3JlYWQgPSBmYWxzZTsKKwkJCQljb250aW51 ZTsKKwkJCWNhc2UgUEdSRVNfUE9MTElOR19BQ1RJVkU6CisJCQkJcGdfdW5yZWFjaGFibGUoKTsK KwkJfQorCX0KKworCXBnX3VucmVhY2hhYmxlKCk7Cit9CisKIC8qCiAgKiBkb19jb25uZWN0IC0t IGhhbmRsZXIgZm9yIFxjb25uZWN0CiAgKgpAQCAtMzYxNCwxMSArMzc2NywxMiBAQCBkb19jb25u ZWN0KGVudW0gdHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNhdGlvbiwKIAkJdmFsdWVz W3BhcmFtbnVtXSA9IE5VTEw7CiAKIAkJLyogTm90ZSB3ZSBkbyBub3Qgd2FudCBsaWJwcSB0byBy ZS1leHBhbmQgdGhlIGRibmFtZSBwYXJhbWV0ZXIgKi8KLQkJbl9jb25uID0gUFFjb25uZWN0ZGJQ YXJhbXMoa2V5d29yZHMsIHZhbHVlcywgZmFsc2UpOworCQluX2Nvbm4gPSBQUWNvbm5lY3RTdGFy dFBhcmFtcyhrZXl3b3JkcywgdmFsdWVzLCBmYWxzZSk7CiAKIAkJcGdfZnJlZShrZXl3b3Jkcyk7 CiAJCXBnX2ZyZWUodmFsdWVzKTsKIAorCQlwcm9jZXNzX2Nvbm5lY3Rpb25fc3RhdGVfbWFjaGlu ZShuX2Nvbm4pOwogCQlpZiAoUFFzdGF0dXMobl9jb25uKSA9PSBDT05ORUNUSU9OX09LKQogCQkJ YnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluIGIvc3JjL2lu Y2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggZDhhMjk4NTU2Ny4uZjlmZDdkMGRlNyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1ZGUvcGdfY29u ZmlnLmguaW4KQEAgLTMzMyw2ICszMzMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg dGhlIGBwcG9sbCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QUE9MTAogCisvKiBEZWZpbmUg dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBzZWxlY3QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVf UFNFTEVDVAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggdGhyZWFkcyBsaWJyYXJpZXMg YW5kIGhlYWRlciBmaWxlcy4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQUQKIApkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0gYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQpp bmRleCA5OGE1YjVkODcyLi5kMDM1ZjQ0ZjczIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9T b2x1dGlvbi5wbQorKysgYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQpAQCAtMzA4LDYgKzMw OCw3IEBAIHN1YiBHZW5lcmF0ZUZpbGVzCiAJCUhBVkVfUE9TSVhfRkFEVklTRSA9PiB1bmRlZiwK IAkJSEFWRV9QT1NJWF9GQUxMT0NBVEUgPT4gdW5kZWYsCiAJCUhBVkVfUFBPTEwgPT4gdW5kZWYs CisJCUhBVkVfUFNFTEVDVCA9PiB1bmRlZiwKIAkJSEFWRV9QVEhSRUFEID0+IHVuZGVmLAogCQlI QVZFX1BUSFJFQURfQkFSUklFUl9XQUlUID0+IHVuZGVmLAogCQlIQVZFX1BUSFJFQURfSVNfVEhS RUFERURfTlAgPT4gdW5kZWYsCi0tIApUcmlzdGFuIFBhcnRpbgpOZW9uIChodHRwczovL25lb24u dGVjaCkKCg== --a65d28eebd994586114fdac11e115558607c9ca3a9b2eeb4f88a2aab8833--