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 1rAaGm-007GqF-5M for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Dec 2023 18:35:44 +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 1rAaGk-005Ij2-9w for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Dec 2023 18:35:42 +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 1rAaGj-005Iit-Lf for pgsql-hackers@lists.postgresql.org; Tue, 05 Dec 2023 18:35:42 +0000 Received: from mail-oo1-xc2c.google.com ([2607:f8b0:4864:20::c2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rAaGb-008xRp-VG for pgsql-hackers@postgresql.org; Tue, 05 Dec 2023 18:35:40 +0000 Received: by mail-oo1-xc2c.google.com with SMTP id 006d021491bc7-589d4033e84so3597805eaf.1 for ; Tue, 05 Dec 2023 10:35:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon.tech; s=google; t=1701801333; x=1702406133; darn=postgresql.org; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=cyrQU5ZHQxYAimYHDoziZrb+Pb7NljJitWVAVIJsC4c=; b=MGhulObnmCFK9BcIrH4UtfKMaiFDkOuxSx0tBaK0+KvC2vwAB4CHGl6LvNvFFJyifs DaO2DyE1YMWRLb5MU2Gta3t6tSPNkF9bV4X3KJclyfcQQm3V4R0+RlmJ2QLzOzHCllA+ /fL6nsuzhO525LmuRB6CuESXUseyLY+YeAjoE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701801333; x=1702406133; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cyrQU5ZHQxYAimYHDoziZrb+Pb7NljJitWVAVIJsC4c=; b=o6C50LvWONC6nlfKob/irlyFdr+7eArORqYZ0alCn42M1SiNRtUFhyPGmbPz+UB1II 34ZxP/TOh23yFAr3z8spbA7N0FSMmwHkQsKsJB4jrYU7ANdXk2r3JFRSBHlFlxkCmzso gJjldKP/LyR2bALecV7hMuy/RcHqRLodvHK0dGKTI2cghR68NDUBGx7kCoAwG9kN3K4j MWS79Mt2TzJfdZUGzLPM2divsYuF2GrYyI8U1QvHEnZE/xPwyghDGWEiHDfx6Cf8DQBR ecc4/azuyyMcZVfvHadz2Nip5DaLWnT6IT1iwsaVk7EzUzs41UI1vQWDcVldrKP8Xvrj C3kA== X-Gm-Message-State: AOJu0YzUFBz2LLit8pl5rvZaWS6yWf58tbvriNXXBeKP1TmCv0IJpIkq /lg6iQq2qH+/D8DEMbdjm1f4DQ== X-Google-Smtp-Source: AGHT+IEgJLDs30g9KVVxB2LCUPRxvrzHYsFRjt0MnNu5BdcsKdsBqEk+VbzgZE8XaJobd2T5UG/OOw== X-Received: by 2002:a4a:e396:0:b0:58e:1c48:39ab with SMTP id l22-20020a4ae396000000b0058e1c4839abmr6068107oov.17.1701801333210; Tue, 05 Dec 2023 10:35:33 -0800 (PST) Received: from localhost ([2607:fb91:128d:c7a0:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id w21-20020a4a7655000000b0058d458b5420sm2426735ooe.47.2023.12.05.10.35.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Dec 2023 10:35:32 -0800 (PST) Content-Type: multipart/mixed; boundary=6fd8d6719ec68429a078ccb3006f2b7fecbeb992d704e3c0a071fd5be0ef Mime-Version: 1.0 Date: Tue, 05 Dec 2023 12:35:31 -0600 Message-Id: To: "Heikki Linnakangas" From: "Tristan Partin" Cc: "Tom Lane" , , "Shlok Kyal" Subject: Re: psql not responding to SIGINT upon db reconnection X-Mailer: aerc 0.16.0-88-g66b9d36b9231 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 --6fd8d6719ec68429a078ccb3006f2b7fecbeb992d704e3c0a071fd5be0ef Content-Type: multipart/alternative; boundary=2201931e17219c30186171e27d9d737b73cc7f1c9e93e55c77fb185c29b7 --2201931e17219c30186171e27d9d737b73cc7f1c9e93e55c77fb185c29b7 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed 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=20 > conditional compilation which makes it hard to read. Looking forward to= =20 > 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=20 pselect(2) if it is available. I also moved the state machine processing=20 into its own function. Thanks for your comments thus far. --=20 Tristan Partin Neon (https://neon.tech) --2201931e17219c30186171e27d9d737b73cc7f1c9e93e55c77fb185c29b7-- --6fd8d6719ec68429a078ccb3006f2b7fecbeb992d704e3c0a071fd5be0ef Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch RnJvbSBiMjJmMjg2ZDM3MzNkNmQ1ZWMyYTkyNDY4MjY3OWY2ODg0YjM2MDBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IE1vbiwgMjQgSnVsIDIwMjMgMTE6MTI6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHY2XSBB bGxvdyBTSUdJTlQgdG8gY2FuY2VsIHBzcWwgZGF0YWJhc2UgcmVjb25uZWN0aW9ucwoKQWZ0ZXIg aW5zdGFsbGluZyB0aGUgU0lHSU5UIGhhbmRsZXIgaW4gcHNxbCwgU0lHSU5UIGNhbiBubyBsb25n ZXIgY2FuY2VsCmRhdGFiYXNlIHJlY29ubmVjdGlvbnMuIEZvciBpbnN0YW5jZSwgaWYgdGhlIHVz ZXIgc3RhcnRzIGEgcmVjb25uZWN0aW9uCmFuZCB0aGVuIG5lZWRzIHRvIGRvIHNvbWUgZm9ybSBv ZiBpbnRlcmFjdGlvbiAoaWUgcHNxbCBpcyBwb2xsaW5nKSwKdGhlcmUgaXMgbm8gd2F5IHRvIGNh bmNlbCB0aGUgcmVjb25uZWN0aW9uIHByb2Nlc3MgY3VycmVudGx5LgoKVXNlIFBRY29ubmVjdFN0 YXJ0UGFyYW1zKCkgaW4gb3JkZXIgdG8gaW5zZXJ0IGEgQ2FuY2VsUmVxdWVzdGVkIGNoZWNrCmlu dG8gdGhlIHBvbGxpbmcgbG9vcC4KLS0tCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmluL3BzcWwvY29tbWFuZC5jICAgICB8IDIyNCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiB8ICAgMyArCiBz cmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbSB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDIyOCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9t ZXNvbi5idWlsZAppbmRleCBlZTU4ZWU3YTA2Li4yZDYzNDg1YzUzIDEwMDY0NAotLS0gYS9tZXNv bi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMjQ0MCw2ICsyNDQwLDcgQEAgZnVuY19jaGVj a3MgPSBbCiAgIFsncG9zaXhfZmFkdmlzZSddLAogICBbJ3Bvc2l4X2ZhbGxvY2F0ZSddLAogICBb J3Bwb2xsJ10sCisgIFsncHNlbGVjdCddLAogICBbJ3BzdGF0J10sCiAgIFsncHRocmVhZF9iYXJy aWVyX3dhaXQnLCB7J2RlcGVuZGVuY2llcyc6IFt0aHJlYWRfZGVwXX1dLAogICBbJ3B0aHJlYWRf aXNfdGhyZWFkZWRfbnAnLCB7J2RlcGVuZGVuY2llcyc6IFt0aHJlYWRfZGVwXX1dLApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5k ZXggODJjYzA5MTU2OC4uZTg3NDAxYjc5MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1h bmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC0xMSw2ICsxMSwxMSBAQAogI2lu Y2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxwd2QuaD4KICNpbmNsdWRlIDx1dGltZS5oPgorI2lm IEhBVkVfUE9MTAorI2luY2x1ZGUgPHBvbGwuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3lzL3NlbGVj dC5oPgorI2VuZGlmCiAjaWZuZGVmIFdJTjMyCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4JCQkvKiBm b3Igc3RhdCgpICovCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4JCQkvKiBmb3Igc2V0aXRpbWVyKCkg Ki8KQEAgLTQwLDYgKzQ1LDcgQEAKICNpbmNsdWRlICJsYXJnZV9vYmouaCIKICNpbmNsdWRlICJs aWJwcS1mZS5oIgogI2luY2x1ZGUgImxpYnBxL3BxY29tbS5oIgorI2luY2x1ZGUgImxpYnBxL3Bx c2lnbmFsLmgiCiAjaW5jbHVkZSAibWFpbmxvb3AuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9p bnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKQEAgLTMyNTEsNiArMzI1Nywx NjkgQEAgY29weV9wcmV2aW91c19xdWVyeShQUUV4cEJ1ZmZlciBxdWVyeV9idWYsIFBRRXhwQnVm ZmVyIHByZXZpb3VzX2J1ZikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBDaGVjayBhIGZp bGUgZGVzY3JpcHRvciBmb3IgcmVhZCBhbmQvb3Igd3JpdGUgZGF0YSwgcG9zc2libHkgd2FpdGlu Zy4KKyAqIElmIG5laXRoZXIgZm9yUmVhZCBub3IgZm9yV3JpdGUgYXJlIHNldCwgaW1tZWRpYXRl bHkgcmV0dXJuIGEgdGltZW91dAorICogY29uZGl0aW9uICh3aXRob3V0IHdhaXRpbmcpLiAgUmV0 dXJuID4wIGlmIGNvbmRpdGlvbiBpcyBtZXQsIDAKKyAqIGlmIGEgdGltZW91dCBvY2N1cnJlZCwg LTEgaWYgYW4gZXJyb3Igb3IgaW50ZXJydXB0IG9jY3VycmVkLgorICoKKyAqIFRpbWVvdXQgaXMg aW5maW5pdGUgaWYgZW5kX3RpbWUgaXMgLTEuICBUaW1lb3V0IGlzIGltbWVkaWF0ZSAobm8gYmxv Y2tpbmcpCisgKiBpZiBlbmRfdGltZSBpcyAwIChvciBpbmRlZWQsIGFueSB0aW1lIGJlZm9yZSBu b3cpLgorICovCitzdGF0aWMgaW50CitwcVNvY2tldFBvbGwoaW50IHNvY2ssIGludCBmb3JSZWFk LCBpbnQgZm9yV3JpdGUsIHRpbWVfdCBlbmRfdGltZSkKK3sKKwkvKgorCSAqIFdlIHVzZSBmdW5j dGlvbnMgaW4gdGhlIGZvbGxvd2luZyBvcmRlciBpZiBhdmFpbGFibGU6CisJICogICAtIHBwb2xs KDIpIE9SIHBzZWxlY3QoMikKKwkgKiAgIC0gcG9sbCgyKSBPUiBzZWxlY3QoMikKKwkgKi8KKyNp ZmRlZiBIQVZFX1BPTEwKKwlzdHJ1Y3QgcG9sbGZkIGlucHV0X2ZkOworI2lmZGVmIEhBVkVfUFBP TEwKKwlpbnQJCQlyYzsKKwlzaWdzZXRfdAllbXB0eXNldDsKKwlzaWdzZXRfdAlibG9ja3NldDsK KwlzaWdzZXRfdAlvcmlnc2V0OworCXN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworCXN0cnVjdCB0 aW1lc3BlYyAqcHRyX3RpbWVvdXQ7CisjZWxzZQorCWludAkJCXRpbWVvdXRfbXM7CisjZW5kaWYK KworCWlmICghZm9yUmVhZCAmJiAhZm9yV3JpdGUpCisJCXJldHVybiAwOworCisJaW5wdXRfZmQu ZmQgPSBzb2NrOworCWlucHV0X2ZkLmV2ZW50cyA9IFBPTExFUlI7CisJaW5wdXRfZmQucmV2ZW50 cyA9IDA7CisKKwlpZiAoZm9yUmVhZCkKKwkJaW5wdXRfZmQuZXZlbnRzIHw9IFBPTExJTjsKKwlp ZiAoZm9yV3JpdGUpCisJCWlucHV0X2ZkLmV2ZW50cyB8PSBQT0xMT1VUOworCisJLyogQ29tcHV0 ZSBhcHByb3ByaWF0ZSB0aW1lb3V0IGludGVydmFsICovCisjaWZkZWYgSEFWRV9QUE9MTAorCXNp Z2VtcHR5c2V0KCZibG9ja3NldCk7CisJc2lnYWRkc2V0KCZibG9ja3NldCwgU0lHSU5UKTsKKwlz aWdwcm9jbWFzayhTSUdfQkxPQ0ssICZibG9ja3NldCwgJm9yaWdzZXQpOworCisJaWYgKGVuZF90 aW1lID09ICgodGltZV90KSAtMSkpCisJCXB0cl90aW1lb3V0ID0gTlVMTDsKKwllbHNlCisJewor CQl0aW1lb3V0LnR2X3NlYyA9IGVuZF90aW1lOworCQl0aW1lb3V0LnR2X25zZWMgPSAwOworCQlw dHJfdGltZW91dCA9ICZ0aW1lb3V0OworCX0KKyNlbHNlCisJaWYgKGVuZF90aW1lID09ICgodGlt ZV90KSAtMSkpCisJCXRpbWVvdXRfbXMgPSAtMTsKKwllbHNlCisJeworCQl0aW1lX3QJCW5vdyA9 IHRpbWUoTlVMTCk7CisKKwkJaWYgKGVuZF90aW1lID4gbm93KQorCQkJdGltZW91dF9tcyA9IChl bmRfdGltZSAtIG5vdykgKiAxMDAwOworCQllbHNlCisJCQl0aW1lb3V0X21zID0gMDsKKwl9Cisj ZW5kaWYKKworI2lmZGVmIEhBVkVfUFBPTEwKKwlzaWdlbXB0eXNldCgmZW1wdHlzZXQpOworCWlm IChjYW5jZWxfcHJlc3NlZCkKKwl7CisJCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb3JpZ3Nl dCwgTlVMTCk7CisJCXJldHVybiAxOworCX0KKworCXJjID0gcHBvbGwoJmlucHV0X2ZkLCAxLCBw dHJfdGltZW91dCwgJmVtcHR5c2V0KTsKKwlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJm9yaWdz ZXQsIE5VTEwpOworCXJldHVybiByYzsKKyNlbHNlCisJcmV0dXJuIHBvbGwoJmlucHV0X2ZkLCAx LCB0aW1lb3V0X21zKTsKKyNlbmRpZgorI2Vsc2UJCQkJCQkJLyogIUhBVkVfUE9MTCAqLworCisJ ZmRfc2V0CQlpbnB1dF9tYXNrOworCWZkX3NldAkJb3V0cHV0X21hc2s7CisJZmRfc2V0CQlleGNl cHRfbWFzazsKKyNpZmRlZiBIQVZFX1BTRUxFQ1QKKwlpbnQJCQlyYzsKKwlzaWdzZXRfdAllbXB0 eXNldDsKKwlzaWdzZXRfdAlibG9ja3NldDsKKwlzaWdzZXRfdAlvcmlnc2V0OworCXN0cnVjdCB0 aW1lc3BlYyB0aW1lb3V0OworCXN0cnVjdCB0aW1lc3BlYyAqcHRyX3RpbWVvdXQ7CisjZWxzZQor CXN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisJc3RydWN0IHRpbWV2YWwgKnB0cl90aW1lb3V0Owor I2VuZGlmCisKKwlpZiAoIWZvclJlYWQgJiYgIWZvcldyaXRlKQorCQlyZXR1cm4gMDsKKworCUZE X1pFUk8oJmlucHV0X21hc2spOworCUZEX1pFUk8oJm91dHB1dF9tYXNrKTsKKwlGRF9aRVJPKCZl eGNlcHRfbWFzayk7CisJaWYgKGZvclJlYWQpCisJCUZEX1NFVChzb2NrLCAmaW5wdXRfbWFzayk7 CisKKwlpZiAoZm9yV3JpdGUpCisJCUZEX1NFVChzb2NrLCAmb3V0cHV0X21hc2spOworCUZEX1NF VChzb2NrLCAmZXhjZXB0X21hc2spOworCisJLyogQ29tcHV0ZSBhcHByb3ByaWF0ZSB0aW1lb3V0 IGludGVydmFsICovCisjaWZkZWYgSEFWRV9QU0VMRUNUCisJc2lnZW1wdHlzZXQoJmJsb2Nrc2V0 KTsKKwlzaWdhZGRzZXQoJmJsb2Nrc2V0LCBTSUdJTlQpOworCXNpZ3Byb2NtYXNrKFNJR19CTE9D SywgJmJsb2Nrc2V0LCAmb3JpZ3NldCk7CisKKwlpZiAoZW5kX3RpbWUgPT0gKCh0aW1lX3QpIC0x KSkKKwkJcHRyX3RpbWVvdXQgPSBOVUxMOworCWVsc2UKKwl7CisJCXRpbWVvdXQudHZfc2VjID0g ZW5kX3RpbWU7CisJCXRpbWVvdXQudHZfbnNlYyA9IDA7CisJCXB0cl90aW1lb3V0ID0gJnRpbWVv dXQ7CisJfQorI2Vsc2UKKwlpZiAoZW5kX3RpbWUgPT0gKCh0aW1lX3QpIC0xKSkKKwkJcHRyX3Rp bWVvdXQgPSBOVUxMOworCWVsc2UKKwl7CisJCXRpbWVfdAkJbm93ID0gdGltZShOVUxMKTsKKwor CQlpZiAoZW5kX3RpbWUgPiBub3cpCisJCQl0aW1lb3V0LnR2X3NlYyA9IGVuZF90aW1lIC0gbm93 OworCQllbHNlCisJCQl0aW1lb3V0LnR2X3NlYyA9IDA7CisJCXRpbWVvdXQudHZfdXNlYyA9IDA7 CisJCXB0cl90aW1lb3V0ID0gJnRpbWVvdXQ7CisJfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BT RUxFQ1QKKwlzaWdlbXB0eXNldCgmZW1wdHlzZXQpOworCWlmIChjYW5jZWxfcHJlc3NlZCkKKwl7 CisJCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb3JpZ3NldCwgTlVMTCk7CisJCXJldHVybiAx OworCX0KKworCXJjID0gcHNlbGVjdChzb2NrICsgMSwgJmlucHV0X21hc2ssICZvdXRwdXRfbWFz aywKKwkJCQkgJmV4Y2VwdF9tYXNrLCBwdHJfdGltZW91dCwgJmVtcHR5c2V0KTsKKwlzaWdwcm9j bWFzayhTSUdfU0VUTUFTSywgJm9yaWdzZXQsIE5VTEwpOworCXJldHVybiByYzsKKyNlbHNlCisJ cmV0dXJuIHNlbGVjdChzb2NrICsgMSwgJmlucHV0X21hc2ssICZvdXRwdXRfbWFzaywKKwkJCQkg ICZleGNlcHRfbWFzaywgcHRyX3RpbWVvdXQpOworI2VuZGlmCisjZW5kaWYJCQkJCQkJLyogSEFW RV9QT0xMICovCit9CisKIC8qCiAgKiBBc2sgdGhlIHVzZXIgZm9yIGEgcGFzc3dvcmQ7ICd1c2Vy bmFtZScgaXMgdGhlIHVzZXJuYW1lIHRoZQogICogcGFzc3dvcmQgaXMgZm9yLCBpZiBvbmUgaGFz IGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQuCkBAIC0zMzI0LDYgKzM0OTMsNyBAQCBkb19jb25u ZWN0KGVudW0gdHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNhdGlvbiwKIAlib29sCQlr ZWVwX3Bhc3N3b3JkID0gdHJ1ZTsKIAlib29sCQloYXNfY29ubmVjdGlvbl9zdHJpbmc7CiAJYm9v bAkJcmV1c2VfcHJldmlvdXM7CisJYm9vbAkJZm9yX3JlYWQ7CiAKIAloYXNfY29ubmVjdGlvbl9z dHJpbmcgPSBkYm5hbWUgPwogCQlyZWNvZ25pemVkX2Nvbm5lY3Rpb25fc3RyaW5nKGRibmFtZSkg OiBmYWxzZTsKQEAgLTM2MTQsMTEgKzM3ODQsNjMgQEAgZG9fY29ubmVjdChlbnVtIHRyaXZhbHVl IHJldXNlX3ByZXZpb3VzX3NwZWNpZmljYXRpb24sCiAJCXZhbHVlc1twYXJhbW51bV0gPSBOVUxM OwogCiAJCS8qIE5vdGUgd2UgZG8gbm90IHdhbnQgbGlicHEgdG8gcmUtZXhwYW5kIHRoZSBkYm5h bWUgcGFyYW1ldGVyICovCi0JCW5fY29ubiA9IFBRY29ubmVjdGRiUGFyYW1zKGtleXdvcmRzLCB2 YWx1ZXMsIGZhbHNlKTsKKwkJbl9jb25uID0gUFFjb25uZWN0U3RhcnRQYXJhbXMoa2V5d29yZHMs IHZhbHVlcywgZmFsc2UpOwogCiAJCXBnX2ZyZWUoa2V5d29yZHMpOwogCQlwZ19mcmVlKHZhbHVl cyk7CiAKKwkJZm9yX3JlYWQgPSBmYWxzZTsKKwkJd2hpbGUgKHRydWUpCisJCXsKKwkJCWludAkJ CXJjOworCQkJaW50CQkJc29jazsKKwkJCXRpbWVfdAkJdGltZW91dDsKKworCQkJaWYgKGNhbmNl bF9wcmVzc2VkKQorCQkJCWJyZWFrOworCisJCQlzb2NrID0gUFFzb2NrZXQobl9jb25uKTsKKwkJ CWlmIChzb2NrID09IC0xKQorCQkJCWJyZWFrOworCisJCQkvKgorCQkJICogV2UgdXNlIHBwb2xs KDIpL3BzZWxlY3QoMikgdG8gYWNjb3VudCBmb3IgdGhlIHJhY2UgY29uZGl0aW9uIGluCisJCQkg KiB3aGljaCBTSUdJTlQgaXMgc2VudCBhZnRlciBjaGVja2luZyBjYW5jZWxfcHJlc3NlZC4gQnV0 IG9uCisJCQkgKiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIGVpdGhlciBmdW5jdGlvbiwgd2Ug Y2FuIGp1c3Qgc3BpbiB0aGUKKwkJCSAqIENQVSBhIGJpdCBwb2xsaW5nLCBzbyBzZXQgdGhlIHRp bWVvdXQgdG8gMSBzZWNvbmQgaWYgd2UgZG9uJ3QKKwkJCSAqIGhhdmUgdGhlIGFmb3JlbWVudGlv bmVkIGZ1bmN0aW9ucywgb3RoZXJ3aXNlIHNldCB0aW1lb3V0IHRvIGEKKwkJCSAqIG5lZ2F0aXZl IHZhbHVlIGluZGljYXRpbmcgd2Ugd2lsbCBzaXQgYW5kIHdhaXQgZm9yZXZlci4KKwkJCSAqLwor I2lmIGRlZmluZWQoSEFWRV9QUE9MTCkgfHwgZGVmaW5lZChIQVZFX1BTRUxFQ1QpCisJCQl0aW1l b3V0ID0gLTE7CisjZWxzZQorCQkJdGltZW91dCA9IDE7CisjZW5kaWYKKworCQkJcmMgPSBwcVNv Y2tldFBvbGwoc29jaywgZm9yX3JlYWQsICFmb3JfcmVhZCwgdGltZW91dCk7CisJCQlpZiAocmMg PT0gLTEpCisJCQl7CisJCQkJc3VjY2VzcyA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCisJ CQlzd2l0Y2ggKFBRY29ubmVjdFBvbGwobl9jb25uKSkKKwkJCXsKKwkJCQljYXNlIFBHUkVTX1BP TExJTkdfT0s6CisJCQkJY2FzZSBQR1JFU19QT0xMSU5HX0ZBSUxFRDoKKwkJCQkJZ290byBmaW5p c2g7CisJCQkJY2FzZSBQR1JFU19QT0xMSU5HX1JFQURJTkc6CisJCQkJCWZvcl9yZWFkID0gdHJ1 ZTsKKwkJCQkJY29udGludWU7CisJCQkJY2FzZSBQR1JFU19QT0xMSU5HX1dSSVRJTkc6CisJCQkJ CWZvcl9yZWFkID0gZmFsc2U7CisJCQkJCWNvbnRpbnVlOworCQkJCWNhc2UgUEdSRVNfUE9MTElO R19BQ1RJVkU6CisJCQkJCXBnX3VucmVhY2hhYmxlKCk7CisJCQl9CisJCX0KKworZmluaXNoOgog CQlpZiAoUFFzdGF0dXMobl9jb25uKSA9PSBDT05ORUNUSU9OX09LKQogCQkJYnJlYWs7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluIGIvc3JjL2luY2x1ZGUvcGdfY29u ZmlnLmguaW4KaW5kZXggZDhhMjk4NTU2Ny4uZjlmZDdkMGRlNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KQEAg LTMzMyw2ICszMzMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwcG9sbCcg ZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QUE9MTAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug aGF2ZSB0aGUgYHBzZWxlY3QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFNFTEVDVAorCiAv KiBEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggdGhyZWFkcyBsaWJyYXJpZXMgYW5kIGhlYWRlciBm aWxlcy4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQUQKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL21z dmMvU29sdXRpb24ucG0gYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQppbmRleCA5OGE1YjVk ODcyLi5kMDM1ZjQ0ZjczIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQor KysgYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQpAQCAtMzA4LDYgKzMwOCw3IEBAIHN1YiBH ZW5lcmF0ZUZpbGVzCiAJCUhBVkVfUE9TSVhfRkFEVklTRSA9PiB1bmRlZiwKIAkJSEFWRV9QT1NJ WF9GQUxMT0NBVEUgPT4gdW5kZWYsCiAJCUhBVkVfUFBPTEwgPT4gdW5kZWYsCisJCUhBVkVfUFNF TEVDVCA9PiB1bmRlZiwKIAkJSEFWRV9QVEhSRUFEID0+IHVuZGVmLAogCQlIQVZFX1BUSFJFQURf QkFSUklFUl9XQUlUID0+IHVuZGVmLAogCQlIQVZFX1BUSFJFQURfSVNfVEhSRUFERURfTlAgPT4g dW5kZWYsCi0tIApUcmlzdGFuIFBhcnRpbgpOZW9uIChodHRwczovL25lb24udGVjaCkKCg== --6fd8d6719ec68429a078ccb3006f2b7fecbeb992d704e3c0a071fd5be0ef--