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 1rYN28-00Fdfx-Vz for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Feb 2024 09:18:57 +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 1rYN27-007VQ2-CQ for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Feb 2024 09:18:55 +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 1rYN26-007VPu-Qc for pgsql-hackers@lists.postgresql.org; Fri, 09 Feb 2024 09:18:55 +0000 Received: from mail-cpzbra01olkn2049.outbound.protection.outlook.com ([40.92.97.49] helo=BRA01-CPZ-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rYN23-005rSn-4h for pgsql-hackers@postgresql.org; Fri, 09 Feb 2024 09:18:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SGhCr1Wip1XLBUX+X8ZzxP5Ayi5GVtyjMvJAvbLS7gI0lCGykAMVPny3WTl+tiCbanmkuk74OI3Veo8GUcvFMM98ZI5UYq6LPSVBDjFbNa77uioK5UzBbuGe1YIHiXczfPdEebWrNBxXIQ2UUmdn2fTnEuFeGITEABVWdkd8Hf4uPsqCGgi2MkhVl5KNXblSjEczX7DGcBKLJEjH7mCVR/eq0jmwRoHwc4d4hXGEXjblWgmOffQAmxgSmKxQDkbsxNbAggZmoCde40hdtkyNaQ0BKdRqGqYScM56fqPwTjodkQkPkP8LaBC6ghwQlcOmGX8uKy0ExLhuYqCnSRyy5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ebM/TNLKTY38/NCgL9rtW6Ig0J0rF03+rhSu7ArfDHY=; b=e8lSAUvOyGDyJF4WasXjzszrZPJbonD+/bJZoMCDOVXZJ1kQUTHE2JERgs4oedjSWN5onyw5BULfp2M+uXSLdUTBV3+Uh4hxUSYm37/eD3TLIis4cMTVvejv3zHXpZalc8rhLDHN5/G+xjb3hi2CA7OBHMMkDkD/WCCpoU4fAccdIil5DmKadefs+ZmlmaIWViBlBrOhjPF7npaEbkpIrst9Z2E+1uPe2/Pk5+5yDT1wZR4etVqS8cYmc4TDu2HPnT1zkR1do455A/QK+FtO4XaujvL1WBLXn/b7xQWdcPt+PUdHwu7mhEZnELJDmoOoQVFxKWnLdbY11xNERwY3lA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:2dc::11) by CP4P284MB1844.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:dd::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.24; Fri, 9 Feb 2024 09:18:44 +0000 Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf]) by CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf%6]) with mapi id 15.20.7270.025; Fri, 9 Feb 2024 09:18:44 +0000 From: Maiquel Grassi To: Pavel Luzanov , Nathan Bossart CC: Erik Wienhold , "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoLgAAnEwCAADA+O4ABA4CAgAA4UGOAASa0gIAADirw Date: Fri, 9 Feb 2024 09:18:44 +0000 Message-ID: References: <20240206181919.GA3853632@nathanxps13> <20240206210605.GA3903769@nathanxps13> <20240206211205.GA3903996@nathanxps13> <20240206215022.GA3452@nathanxps13> <852cabef-f596-4826-9a54-d3f75d9a6cc8@postgrespro.ru> <49edac91-d47f-4cac-ae12-d51cabbd87c9@postgrespro.ru> In-Reply-To: <49edac91-d47f-4cac-ae12-d51cabbd87c9@postgrespro.ru> Accept-Language: pt-BR, en-US Content-Language: pt-BR X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [vaApBj3L2ffsTr5uAZpvcTe6j1qoTYaA] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|CP4P284MB1844:EE_ x-ms-office365-filtering-correlation-id: c1a85f19-bc96-444a-478e-08dc29501d2c x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XDEmz8Fsb2pwvuvYD8F/VBMK5G+W3d3gUfmgNyVs0MDeByy8tSL/6ePNOWqQ1P5QiueYeXPByHXQkr0dpivRvwvRCdUMINCtkHB3jEQLqsjhDBdPYZq/oEApmYJCLQJjafqgy/PukC267ePg+jgAKIjRHNmvrLp7BD3+7tlE5z5UM2sK1IE6IUddYTMrQXHayyvlJBCu3b+4+BYOgvmwvf4vVG3r+SkyIzTafs88LuUcDZSyqr+Mz+gIvlMsOS7IGyIs+dP1BUb8aANo4MbYqCDjW8PHjufJQpw5hhZEdsYpGplFMw8ngk4R1q2a8JaE9eC1ZzgPabwbpcOQxhQAmT2a3jac9r5DcmGCeiS0k0Q/mTh+xbzzk3fRUdhxdzYqkdTsQP+fF7VdInvmXJBPjqq7C9esWsX/Fzb4rRnwSOXJ+av7YnvbMUY38Y/MOZIeHeTnsLMSKqyUEETfQZRCukEgPxucQgVfpqbop/HqlNplibYb0jAJ8CKLvZLn4gsPrRV7b6oX/qcyXij7/+xa8QNP12nfkPxlgZc7GLYMDev/fgfDfGv3xy8nWCfyeraNdj2cpce6Q4N48V4cvuwkH6eziCYA64EvH8dg68a6Aw3CqGiRELO0uCxqpR59JUzo x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?mtq8FFllZlqo0wgNa5YAZBjCxu7+jhp4yTgc9ksGICjFK65YOnEVlo1t?= =?Windows-1252?Q?MnDBlXFatPjkraBTSMsEMvygtIIQOOvBWe0IVRSzYkJoLlTA/PEttal3?= =?Windows-1252?Q?Pt9JoYfSu7fxarCkkA31ZqvBBuq/RGQEkgZ+iTNPFuZu2MIQ63cj5u9p?= =?Windows-1252?Q?yJ7pDSNSp/NerGxaUpvQpKSLfn30yjWIwkXebRGkTHFgG1fN3nxcqvWI?= =?Windows-1252?Q?Bnr/zldxrdoRm+dgLqDurpF6zasSRNj6YMjRPSvf5SqBKoSN4JTKsP1n?= =?Windows-1252?Q?imjeEHXNNjtu/56j63sp3kOYc0fdhgkWXVeaukQVuLXrnAd8C1L/kdD2?= =?Windows-1252?Q?DlG+10YKXTWG8xJVSmvGL7y1fXKEADuZA9FadY/pkiAQRYpUVAdxDqKR?= =?Windows-1252?Q?be+d6ZgJAcJDaXwD9h9JhMeQO03SZmIiNkA7Dw6yKUfNwlwQgFiYODpv?= =?Windows-1252?Q?bmxRWb2pCkvBv8ansUZA/37WjlBMMHaZWS9mqQi4588HoMp2by0t7ltk?= =?Windows-1252?Q?ruhVJJ6BueHZij5daHfzlplRUsr5Le4DkAtbgfV2WyBn78CpLizHK3Kl?= =?Windows-1252?Q?TtE2sboIbxK8yeWBBr/F85izqFapqSDqroGdCghGRot7ytNjb1E7w78x?= =?Windows-1252?Q?z/NdiSnPbclwZp0AKq2b5BWbYGtrsHd/G9en7Gk4v+Mbtf1ljGJ4OFEd?= =?Windows-1252?Q?mDW0Grc0QT15Ao/pOQudL0h7CktNYiWywhE/CiEg2PCaFQA3mAjf4XEQ?= =?Windows-1252?Q?m2QshyMomGUAKOxCn7Vydh+Sr6cwZINsTh0ta56zDZ00OFdRkp3XJTz1?= =?Windows-1252?Q?QrtWyFkvYb8ikC5h4FT4ygzqMNsUYNqFPuPz8jcNqHkM20WOYi+LiXqG?= =?Windows-1252?Q?UQqW4++iaFql4aE2IqY+E1rBlNSZh53b0UMtEscNaTCyuatbUwDTVU6I?= =?Windows-1252?Q?MCNTRjPwSE7kbQMBvO+AszDBHBLrSFX/iLIuoOkYw0ASgzH31DECmwyw?= =?Windows-1252?Q?oC6hTC40QLDMhf0i9OxuwSUbQmmDqLuB9Ti1Z5VC/EXNCuiUsBuATBpq?= =?Windows-1252?Q?lcyfvnzMNKqKeEp99aVb3sjJIQMQaq1yriE67XDiRSxNdAPN5Xzl63EZ?= =?Windows-1252?Q?T2ABVP7CMspHjlKlolsRU0gzJriQU26TAF88VOs/GNdEyOJWvjhIBeuV?= =?Windows-1252?Q?yD2Yiqj11h/aL8SaeQJGTSsbwbJsyp72f5HakQEsYsMqCalYAxUlyIvw?= =?Windows-1252?Q?+/V27/Xm+CgVlkdl5Z2f9WavbdYmrk19knM+8/rYnBFIxCM4a0z0ZyKp?= =?Windows-1252?Q?fdDGXQ=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-0f7b9.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: c1a85f19-bc96-444a-478e-08dc29501d2c X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2024 09:18:44.2780 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CP4P284MB1844 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_" --_000_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Hi Pavel! >The patch v10 build ends with a warning: >$ make -j --silent >describe.c:911:1: warning: no previous prototype for =91listConnectionInfo= rmation=92 [-Wmissing-prototypes] > 911 | listConnectionInformation() | ^~~~~~~~~~~~~~~~~~~~~~~~~ >About terms. I resolved this in v11. I had forgotten to put the 'void' inside the parentheses (describe.h and describe.c). >postgres@postgres(17.0)=3D# \x \conninfo+ >Expanded display is on. >Current Connection Information >-[ RECORD 1 ]------+--------- >Database | postgres >Authenticated User | postgres >System User | >Current User | postgres >Session User | postgres >Session PID | 951112 >Server Version | 17devel >Server Address | >Server Port | 5401 >Client Address | >Client Port | >Socket Directory | /tmp >Host | >It looks like "Session PID" is a new term for the server process identifie= r. >How about changing the name to "Backend PID" (from pg_backend_pid) or even= PID (from pg_stat_activity)? You're right, it's better to stick with the proper terms already in use in PostgreSQL. This ensures that the user doesn't get confused. I've changed it to "Backend PID". >On 08.02.2024 17:58, Maiquel Grassi wrote: > 1. > + if (db =3D=3D NULL) > + printf(_("You are currently not connected t= o a database.\n")); > > This check is performed for \conninfo, but not for \conninfo+. 1. The connection check for the case of \conninfo+ is handled by "describe.= c" itself since it deals with queries. I might be mistaken, but I believe t= hat by using "printQuery()" via "describe.c", this is already ensured, and = there is no need to evaluate the connection status. >I found that \conninfo and \conninfo+ act differently when the connection = is broken. >I used pg_terminate_backend function from another session to terminate an = open psql session. >After that, \conninfo does not see the connection break (surprisingly!), a= nd \conninfo+ returns an error: >postgres@postgres(17.0)=3D# \conninfo+ >FATAL: terminating connection due to administrator command >server closed the connection unexpectedly >This probably means the server terminated abnormally >before or while processing the request. >The connection to the server was lost. Attempting reset: Succeeded. For this case, I believe it's already resolved, because if you get a return indicating that the connection was terminated, and indeed it was, then "describe.c" is handling it correctly. At least that's what it seems like. >postgres@postgres(17.0)=3D# \conninfo >You are connected to database "postgres" as user "postgres" via socket in = "/tmp" at port "5401". Here it seems like we have an issue to be studied and subsequently resolved= . >Another surprise is that this check: if (db =3D=3D NULL) did not work in b= oth cases. I will investigate further and, if necessary, remove it. Here's v12, in the next version, I'll try to address the above situation. Thanks a lot! Maiquel Grassi. --_000_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable
Hi Pavel!
>The patch v10 build ends with a warn= ing:=0A= >$ make -j --silent=0A= >describe.c:911:1: warning: no previous prototype for =91listConnectionI= nformation=92 [-Wmissing-prototypes]=0A= > 911 | listConnectionInformation()=0A= | ^~~~~~~~~~~~~~~~~~~~~~~~~=0A= =0A= >About terms.

I resolved this in v11. I had for= gotten to put
the 'void' inside the parentheses (describe.h and describe= .c).
=0A=

>postgres@postgres(17.0)=3D# \x \conninfo+=0A= >Expanded display is on.=0A= >Current Connection Information=0A= >-[ RECORD 1 ]------+---------=0A= >Database | postgres=0A= >Authenticated User | postgres=0A= >System User | =0A= >Current User | postgres=0A= >Session User | postgres=0A= >Session PID | 951112=0A= >Server Version | 17devel=0A= >Server Address | =0A= >Server Port | 5401=0A= >Client Address | =0A= >Client Port | =0A= >Socket Directory | /tmp=0A= >Host | =0A= =0A= >It looks like "Session PID" is a new term for the server proc= ess identifier.=0A= >How about changing the name to "Backend PID" (from pg_backend= _pid) or even PID (from pg_stat_activity)?=0A=

You're right, it's better to stick with the proper terms= already in use =0A= in PostgreSQL. This ensures that the user doesn't get confused. I've =0A= changed it to "Backend PID".
=0A=
>On 08.02.2024 17:58, Maiquel Grassi wrote:
> 1.=0A= > + if (db =3D=3D NULL)=0A= > + printf(_("You are currently not connected to a database.\n&q= uot;));=0A= > =0A= > This check is performed for \conninfo, but not for \conninfo+.<= /div>
1. The connection check for the case of \conninfo+= is handled by "describe.c" itself since it deals with queries. I= might be mistaken, but I believe that by using "printQuery()" vi= a "describe.c", this is already ensured, and there is no need to = evaluate the connection status.
>I found that \conninfo and \conninfo= + act differently when the connection is broken.=0A= >I used pg_terminate_backend function from another session to terminate = an open psql session.=0A= >After that, \conninfo does not see the connection break (surprisingly!)= , and \conninfo+ returns an error:=0A= =0A= >postgres@postgres(17.0)=3D# \conninfo+=0A= >FATAL: terminating connection due to administrator command=0A= >server closed the connection unexpectedly=0A= >This probably means the server terminated abnormally=0A= >before or while processing the request.=0A= >The connection to the server was lost. Attempting reset: Succeeded.
= =0A=
For this case, I believe it's already resolved, because if y= ou get a =0A= return indicating that the connection was terminated, and indeed it was,then "describe.c" is handling it correctly. At least that's what=
it seems like.
=0A= >postgres@postgres(17.0)=3D# \conninfo=0A= >You are connected to database "postgres" as user "postgr= es" via socket in "/tmp" at port "5401".=0A=

Here it seems like we have an issue to be studied and su= bsequently resolved.

>Another surprise is that this check: if (db =3D=3D NULL) did not work in both cas= es.
I will investigate further and, if necessary, remove it.
<= br>Here's v12, in the next version, I'll try to address the above si= tuation.

Thanks a lot!
Maiquel Grassi.
--_000_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_-- --_004_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v12-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v12-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v12-0001-psql-meta-command-conninfo-plus.patch"; size=8989; creation-date="Fri, 09 Feb 2024 09:10:59 GMT"; modification-date="Fri, 09 Feb 2024 09:12:22 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBjYzdkNzk3Li40ZTg2YWQ5IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xMDI5LDEwICsxMDI5LDE0IEBAIElOU0VSVCBJTlRPIHRibDEgVkFMVUVT ICgkMSwgJDIpIFxiaW5kICdmaXJzdCB2YWx1ZScgJ3NlY29uZCB2YWx1ZScgXGcKICAgICAgIDwv dmFybGlzdGVudHJ5PgogCiAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1tZXRhLWNv bW1hbmQtY29ubmluZm8iPgotICAgICAgICA8dGVybT48bGl0ZXJhbD5cY29ubmluZm88L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5cY29ubmluZm9bK108L2xpdGVyYWw+ PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgIDxwYXJhPgogICAgICAgICBPdXRw dXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGRhdGFiYXNlIGNvbm5lY3Rpb24uCisg ICAgICAgIFdoZW4gbm8gPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCBpdCBzaW1w bHkgcHJpbnRzCisgICAgICAgIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGZldyBjb25uZWN0 aW9uIG9wdGlvbnMuCisgICAgICAgIFdoZW4gPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgZ2l2ZW4s IG1vcmUgY29tcGxldGUgaW5mb3JtYXRpb24KKyAgICAgICAgaXMgZGlzcGxheWVkIGFzIGEgdGFi bGUuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNx bC9jb21tYW5kLmMKaW5kZXggNWM5MDZlNC4uMmM0ZWE3NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC02OCw3ICs2OCw4 IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX0MoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuCiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNf Y29tbWFuZF9jb25uZWN0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2NkKFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqY21kKTsKLXN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKK3N0YXRpYyBiYWNr c2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqY21kKTsKIHN0 YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2NvcHkoUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVj X2NvbW1hbmRfY29weXJpZ2h0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVf YnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2Nyb3NzdGFidmll dyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0zMTcs OCArMzE4LDggQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJc3RhdHVzID0gZXhl Y19jb21tYW5kX2Nvbm5lY3Qoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAo c3RyY21wKGNtZCwgImNkIikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2NkKHNjYW5f c3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCk7Ci0JZWxzZSBpZiAoc3RyY21wKGNtZCwgImNvbm5p bmZvIikgPT0gMCkKLQkJc3RhdHVzID0gZXhlY19jb21tYW5kX2Nvbm5pbmZvKHNjYW5fc3RhdGUs IGFjdGl2ZV9icmFuY2gpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJjb25uaW5mbyIpID09IDAg fHwgc3RyY21wKGNtZCwgImNvbm5pbmZvKyIpID09IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFu ZF9jb25uaW5mbyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoLCBjbWQpOwogCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAoY21kLCAiY29weSIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9j b3B5KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJj b3B5cmlnaHQiKSA9PSAwKQpAQCAtNjQzLDQ3ICs2NDQsNzAgQEAgZXhlY19jb21tYW5kX2NkKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpj bWQpCiB9CiAKIC8qCi0gKiBcY29ubmluZm8gLS0gZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY3VycmVudCBjb25uZWN0aW9uCisgKiBcY29ubmluZm8sIFxjb25uaW5mbysgLS0gZGlzcGxh eSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBjb25uZWN0aW9uCiAgKi8KIHN0YXRpYyBi YWNrc2xhc2hSZXN1bHQKLWV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK2V4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog eworCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOworCiAJaWYgKGFjdGl2ZV9icmFuY2gpCiAJewogCQlj aGFyCSAgICpkYiA9IFBRZGIocHNldC5kYik7CisJCWJvb2wJCXNob3dfdmVyYm9zZTsKIAotCQlp ZiAoZGIgPT0gTlVMTCkKLQkJCXByaW50ZihfKCJZb3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVj dGVkIHRvIGEgZGF0YWJhc2UuXG4iKSk7Ci0JCWVsc2UKKwkJc2hvd192ZXJib3NlID0gc3RyY2hy KGNtZCwgJysnKSA/IHRydWUgOiBmYWxzZTsKKworCQkvKgorCQkgKiBcY29ubmluZm8rCisJCSAq LworCQlpZiAoc2hvd192ZXJib3NlKQogCQl7Ci0JCQljaGFyCSAgICpob3N0ID0gUFFob3N0KHBz ZXQuZGIpOwotCQkJY2hhcgkgICAqaG9zdGFkZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCQkJ c3VjY2VzcyA9IGxpc3RDb25uZWN0aW9uSW5mb3JtYXRpb24oKTsKKwkJCXByaW50U1NMSW5mbygp OworCQkJcHJpbnRHU1NJbmZvKCk7CisJCX0KIAotCQkJaWYgKGlzX3VuaXhzb2NrX3BhdGgoaG9z dCkpCi0JCQl7Ci0JCQkJLyogaG9zdGFkZHIgb3ZlcnJpZGVzIGhvc3QgKi8KLQkJCQlpZiAoaG9z dGFkZHIgJiYgKmhvc3RhZGRyKQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8g ZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGFkZHJlc3MgXCIlc1wiIGF0IHBvcnQg XCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0YWRkciwgUFFw b3J0KHBzZXQuZGIpKTsKLQkJCQllbHNlCi0JCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3Rl ZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBcIiVzXCIgdmlhIHNvY2tldCBpbiBcIiVzXCIg YXQgcG9ydCBcIiVzXCIuXG4iKSwKLQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3Qs IFBRcG9ydChwc2V0LmRiKSk7Ci0JCQl9CisJCS8qCisJCSAqIFxjb25uaW5mbworCQkgKi8KKwkJ ZWxzZQorCQl7CisJCQlpZiAoZGIgPT0gTlVMTCkKKwkJCQlwcmludGYoXygiWW91IGFyZSBjdXJy ZW50bHkgbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlLlxuIikpOwogCQkJZWxzZQogCQkJewot CQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21wKGhvc3QsIGhvc3RhZGRyKSAh PSAwKQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wi IGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIChhZGRyZXNzIFwiJXNcIikgYXQgcG9ydCBc IiVzXCIuXG4iKSwKLQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIGhvc3RhZGRy LCBQUXBvcnQocHNldC5kYikpOworCQkJCWNoYXIJICAgKmhvc3QgPSBQUWhvc3QocHNldC5kYik7 CisJCQkJY2hhcgkgICAqaG9zdGFkZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCisJCQkJaWYg KGlzX3VuaXhzb2NrX3BhdGgoaG9zdCkpCisJCQkJeworCQkJCQkvKiBob3N0YWRkciBvdmVycmlk ZXMgaG9zdCAqLworCQkJCQlpZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyKQorCQkJCQkJcHJpbnRm KF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBv biBhZGRyZXNzIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAorCQkJCQkJCSAgIGRiLCBQUXVz ZXIocHNldC5kYiksIGhvc3RhZGRyLCBQUXBvcnQocHNldC5kYikpOworCQkJCQllbHNlCisJCQkJ CQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIg XCIlc1wiIHZpYSBzb2NrZXQgaW4gXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJ ICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQl9CiAJ CQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIl c1wiIGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0J CQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJ CXsKKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkciAmJiBzdHJjbXAoaG9zdCwgaG9zdGFk ZHIpICE9IDApCisJCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2Ug XCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIChhZGRyZXNzIFwiJXNcIikgYXQg cG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBo b3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQkJZWxzZQorCQkJCQkJcHJpbnRmKF8oIllv dSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0 IFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAorCQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5k YiksIGhvc3QsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJfQorCQkJCXByaW50U1NMSW5mbygpOwor CQkJCXByaW50R1NTSW5mbygpOwogCQkJfQotCQkJcHJpbnRTU0xJbmZvKCk7Ci0JCQlwcmludEdT U0luZm8oKTsKIAkJfQogCX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3Rh dGUpOwogCi0JcmV0dXJuIFBTUUxfQ01EX1NLSVBfTElORTsKKwlyZXR1cm4gc3VjY2VzcyA/IFBT UUxfQ01EX1NLSVBfTElORSA6IFBTUUxfQ01EX0VSUk9SOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBi NmE0ZWIxLi41MDZkOWM1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImZl X3V0aWxzL21icHJpbnQuaCIKICNpbmNsdWRlICJmZV91dGlscy9wcmludC5oIgogI2luY2x1ZGUg ImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImxpYnBxL3BxY29tbS5oIgogI2lu Y2x1ZGUgInNldHRpbmdzLmgiCiAjaW5jbHVkZSAidmFyaWFibGVzLmgiCiAKQEAgLTkwMSw2ICs5 MDIsNjkgQEAgZXJyb3JfcmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIGxpc3RD b25uZWN0aW9uSW5mb3JtYXRpb24KKyAqCisgKiBmb3IgXGNvbm5pbmZvKworICovCitib29sCits aXN0Q29ubmVjdGlvbkluZm9ybWF0aW9uKHZvaWQpCit7CisJUEdyZXN1bHQgICAqcmVzOworCVBR RXhwQnVmZmVyRGF0YSBidWY7CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwor CWNoYXIJICAgKmhvc3QgPSBQUWhvc3QocHNldC5kYik7CisJY2hhcgkgICAqaG9zdGFkZHIgPSBQ UWhvc3RhZGRyKHBzZXQuZGIpOworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxv Zy5jdXJyZW50X2RhdGFiYXNlKCkgQVMgXCJEYXRhYmFzZVwiLFxuIgorCQkJCQkgICIgICclcycg QVMgXCJBdXRoZW50aWNhdGVkIFVzZXJcIixcbiIsCisJCQkJCSAgUFF1c2VyKHBzZXQuZGIpKTsK KwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CisJCQkJCQkgICIgIHBnX2NhdGFsb2cuc3lzdGVtX3VzZXIoKSBBUyBcIlN5c3RlbSBVc2VyXCIs XG4iKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIgIHBnX2NhdGFsb2cuY3Vy cmVudF91c2VyKCkgQVMgXCJDdXJyZW50IFVzZXJcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9n LnNlc3Npb25fdXNlcigpIEFTIFwiU2Vzc2lvbiBVc2VyXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0 YWxvZy5wZ19iYWNrZW5kX3BpZCgpIEFTIFwiQmFja2VuZCBQSURcIixcbiIKKwkJCQkJICAiICBw Z19jYXRhbG9nLmluZXRfc2VydmVyX2FkZHIoKSBBUyBcIlNlcnZlciBBZGRyZXNzXCIsXG4iCisJ CQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmcoJ3BvcnQnKSBBUyBcIlNlcnZlciBQ b3J0XCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5pbmV0X2NsaWVudF9hZGRyKCkgQVMgXCJD bGllbnQgQWRkcmVzc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuaW5ldF9jbGllbnRfcG9y dCgpIEFTIFwiQ2xpZW50IFBvcnRcIixcbiIpOworCWlmIChpc191bml4c29ja19wYXRoKGhvc3Qp ICYmICEoaG9zdGFkZHIgJiYgKmhvc3RhZGRyKSkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCSAgIiAgJyVzJyBBUyBcIlNvY2tldCBEaXJlY3RvcnlcIixcbiIsCisJCQkJCQkgIGhv c3QpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgTlVMTCBB UyBcIlNvY2tldCBEaXJlY3RvcnlcIixcbiIpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCSAgIiAgQ0FTRVxuIgorCQkJCQkgICIgICAgV0hFTlxuIgorCQkJCQkgICIgICAgICBwZ19j YXRhbG9nLmluZXRfc2VydmVyX2FkZHIoKSBJUyBOVUxMXG4iCisJCQkJCSAgIiAgICAgIEFORCBw Z19jYXRhbG9nLmluZXRfY2xpZW50X2FkZHIoKSBJUyBOVUxMXG4iCisJCQkJCSAgIiAgICBUSEVO IE5VTExcbiIKKwkJCQkJICAiICAgIEVMU0UgJyVzJ1xuIgorCQkJCQkgICIgIEVORCBBUyBcIkhv c3RcIjsiLAorCQkJCQkgIGhvc3QpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRl cm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJbXlv cHQudGl0bGUgPSBfKCJDdXJyZW50IENvbm5lY3Rpb24gSW5mb3JtYXRpb24iKTsKKwlteW9wdC50 cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKworCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQu cXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKKworCVBRY2xlYXIocmVzKTsKKwlyZXR1 cm4gdHJ1ZTsKK30KIAogLyoKICAqIGxpc3RBbGxEYnMKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKaW5kZXggMjczZjk3NC4uOGE0 ZTgzZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmgKQEAgLTY0LDYgKzY0LDkgQEAgZXh0ZXJuIGJvb2wgbGlzdFRTRGljdGlv bmFyaWVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAvKiBcZEZ0ICovCiBl eHRlcm4gYm9vbCBsaXN0VFNUZW1wbGF0ZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlKTsKIAorLyogXGNvbm5pbmZvICovCitleHRlcm4gYm9vbCBsaXN0Q29ubmVjdGlvbkluZm9y bWF0aW9uKHZvaWQpOworCiAvKiBcbCAqLwogZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBj aGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv aGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCA0ZTc5YTgxLi4yYzU0MjZkIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAg LTMxMCw3ICszMTAsNyBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAll bHNlCiAJCUhFTFAwKCIgIFxcY1tvbm5lY3RdIHtbREJOQU1FfC0gVVNFUnwtIEhPU1R8LSBQT1JU fC1dIHwgY29ubmluZm99XG4iCiAJCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVj dCB0byBuZXcgZGF0YWJhc2UgKGN1cnJlbnRseSBubyBjb25uZWN0aW9uKVxuIik7Ci0JSEVMUDAo IiAgXFxjb25uaW5mbyAgICAgICAgICAgICAgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBjdXJy ZW50IGNvbm5lY3Rpb25cbiIpOworCUhFTFAwKCIgIFxcY29ubmluZm9bK10gICAgICAgICAgIGRp c3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBjb25uZWN0aW9uXG4iKTsKIAlIRUxQMCgi ICBcXGVuY29kaW5nIFtFTkNPRElOR10gICBzaG93IG9yIHNldCBjbGllbnQgZW5jb2RpbmdcbiIp OwogCUhFTFAwKCIgIFxccGFzc3dvcmQgW1VTRVJOQU1FXSAgIHNlY3VyZWx5IGNoYW5nZSB0aGUg cGFzc3dvcmQgZm9yIGEgdXNlclxuIik7CiAJSEVMUDAoIlxuIik7Cg== --_004_CP8P284MB2496D0B0946A4C55D7F0825EEC4B2CP8P284MB2496BRAP_--