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 1rXSQY-00AlYj-DN for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Feb 2024 20:52:23 +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 1rXSQX-006ZOF-18 for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Feb 2024 20:52:21 +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 1rXSQW-006ZO7-Fo for pgsql-hackers@lists.postgresql.org; Tue, 06 Feb 2024 20:52:20 +0000 Received: from mail-cpzbra01olkn2107.outbound.protection.outlook.com ([40.92.97.107] 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 1rXSQS-005QEn-6c for pgsql-hackers@postgresql.org; Tue, 06 Feb 2024 20:52:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g7tbHGWvnAeDycstZ0ZRTN7614SF+9uGBox/xS44kZPwvoQq8Hf1tY/NT84+AgFp6xG6+P8XZJLycQoWXj2UJOxcjl5hO+C6KMagdWSJ8EiLQTBbHS7mf9n0t7h2gWvKyEoLqE6pbXqHpJ8IMTR0UUHL1yYexr5aEYAyvaOg3ltXuUPk03BmV6mFhFEVMBdUwjRTa+y2JVh8AZSPCF1JHaMvJU1iT4bfIgFeabKHA1yL6nqR2annJ+XIIDasv3eLsh1kVQpIHx9g729r4894KVpYxwwdHRoC43AHh9ORKwgWOiq360t0HxS6t6fVLmQAibCjNSbWWDCxjXsdETvp5A== 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=g9tdxG19JXEBCbM4timguMxTzIjSgJbAWV+opWePVtY=; b=aYUlb9zOzicBfVa1i9WP/QudbrvdRSKmEhQHtgA3fjzXSTKQdCDE5i9+f8CbbHOqrzBGZ7GjXREN5Q71Oky1/RiVpXktzoFcecmswz31SqzxXOQczU8G6MaxKf6aKtlbqaZh+BnvnQAjoX2iOHmOKIDHcYvyIdicXg/v09/gihsWUFUKAGSr1II8tBIV4vEC22X54buzVX/3ejJe5SloojnGdTs9fF5fEoyT6P0GN5UQ5i8nIAdpDZEan3SuzT6CFEcEOto3jk44fNsLH1p7YnHJFQ0aH0WTbLHOT7BrTs5cXQMMN9tWTGgp92WZPwb4XMTRgIOzw3hn7rGrWMTTnA== 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 CP4P284MB1940.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:1ae::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.36; Tue, 6 Feb 2024 20:52:09 +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.7249.035; Tue, 6 Feb 2024 20:52:09 +0000 From: Maiquel Grassi To: Erik Wienhold , Nathan Bossart CC: "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgg== Date: Tue, 6 Feb 2024 20:52:09 +0000 Message-ID: References: <20240206181919.GA3853632@nathanxps13> In-Reply-To: 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: [VZysh3/BvhXGxgRJ4uHwLsbM4sJzMNJs] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|CP4P284MB1940:EE_ x-ms-office365-filtering-correlation-id: 82f233a4-efc9-4f9d-f2a6-08dc27557c84 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7oGFatO1Ui5Z6Sd7K6FUCY31OecqefXpNZsMbzVbE5A9Ek/aLPO78eYioCG+dl5v9XKKiTSAsTnbGm8NNYf3OissG5c6fmB9iRsNMrRiwZKSNaFRtCPK/LycwlRVGI64zjCJDATXycN1YVhQPnqZWHBVmHuHIqZJetwjZ+7rbQQIdK83yqRIEBuw6Mkc4vDcgn9kgXwrQ091vlTqMs0xbHYKRrphRCf/k+XoSJZi+WG4Eilln1VWUCfBU4YrEWnfJDe5ZjnuplDm/JXsT0NLKnAwXnzvRTgFY79QC/D5qmr7wPYGqzfUMk0l+pQ7I7EWStZh6PzwY5LqKMaMZre+23DFBMf65NCqZ0dTvbUcjGnnQ10BGjP03JYXbHNHZKyF7gYu78zVZx15OQPdP/oBi1lhbBvfPycXCfOUP4pjYRZC4mRP6tb482x8NA0ODUtpP+DMA9RUhpVEx0zmb7RfPrI347BirFZGvwLmfdsJNM1NTbMvv4x2KiEE9HjwXOBB8y/rwVCoqvxsLdjhz/nTW91ssaJZyEM1JBLprg5IqWWv74hrSGL7FhCx+gh4sCJFl5t/IQqBR7LR7p7SqL47nBPfaOYxNywh1BoBLgCgbm30tSo1DOR8iGOrfs1B440a x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?tbdM1yqpnsmVIZMoJzsYqdTk8JqHdqDvyiFqHiyjVMrhxmyJp0IbWeabVN?= =?iso-8859-1?Q?mhn6rFqyOFM8gx7V/nMbJzCIzMHFsrV2B2q8sWdAAoEn7VNuCxLCRN+zrd?= =?iso-8859-1?Q?3aXs87BAR1ZfJhLoxCBu9fNqVIcoJ1SSw460gWNvF3KpPlujiMXhbQkM4t?= =?iso-8859-1?Q?ukh7NMM5ixyEKsK2p257pTWQJKpFnib89HC9Voe9ja3RNCq1XKGPrk2tI4?= =?iso-8859-1?Q?eBm+KaS4jXGybc0hAK70gdh5dj3NKAGGTdNpJmHCGK/lUABUDZvXJT4Kzt?= =?iso-8859-1?Q?q5zRyS0vVGDuTe//7XRlq0i8pyUFnNjNR6XW0NLCVIfx14qy7bakiozlJq?= =?iso-8859-1?Q?HAEeZo5gptrxAXL/HvXQX4Y0GJq0tg/Ndd8lNpWVS4b20s8MnLJsQPJR4U?= =?iso-8859-1?Q?17z8K/ZOCuD4UR/fx0wdo+Xe+Lbr3zsWyHRtnds1REckqfxOL2y559odSR?= =?iso-8859-1?Q?R4Bu8vvv2NKpSdGb3QEEvQg46jbVQnxpW/bHGnbToVRGEY8wT6wWDFvE8K?= =?iso-8859-1?Q?9ET2CS6tdm3YFx5pBS4atv344QUYrNlcvFEmhmYwVR+5SUTSJjzwSzviMN?= =?iso-8859-1?Q?/lItmNWvaYTSlLLiMzsgTcTbaB6ZwjbqTf68HXHqbXLzDVZFrnzOOxeT94?= =?iso-8859-1?Q?Jrnir/qNptvVOOagW8CR/bk9OLYFRd6IRCIf81ugLvElGkBXyw/dFPTPUQ?= =?iso-8859-1?Q?B8TcmXD4i58jios6NYHQQ/ZdprU8TdoGBS7gKdpBm06CauND/GSVLRoNxD?= =?iso-8859-1?Q?UQd4flC4EtcG+T9LbLIjp8CU/n3svoR11S8/H63baZl6W5hOX634t0JFla?= =?iso-8859-1?Q?/ePs1oCBC0HI/BqJcLs3wzyaSU2daKtfE3zKpgxvpmwLQ7Ansyx6DVxXgq?= =?iso-8859-1?Q?vDC6DV5Wrc1GwmDAZYl2WF1ljagZX/2bYRnxBqclHvXtWtg9sEDljG6fF6?= =?iso-8859-1?Q?+ZFfDhd56u+OYVQNw4L/J5sWo2Tw1sx5tKy9eV4Qd+2c2jsd5Tvb5QxaQW?= =?iso-8859-1?Q?+uLqDF5IW6o0+CfhlLepQnsGdQKfZvyl0o5QP1BxzNGimPfhkA1UTAWiep?= =?iso-8859-1?Q?5RG1BTgXiy1PFvrF+kuEUITJDKKMATrgXdGJ0RuLDZBu7onEGBHgcZKH52?= =?iso-8859-1?Q?Ib1h6jpOKcnMyFBD68sgPGNUFf7Y7Y49Hz5sy5Sgd/ad0lE2MBLq+A8LQ5?= =?iso-8859-1?Q?kJvGNFH4c0nEmYnVDsXdjubPvG9rpsU8bZVN5SbBoxeJ1fFgRsJfubJOTg?= =?iso-8859-1?Q?DDbSLhGTeqBIfDPp3JOw=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-7dc52.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: 82f233a4-efc9-4f9d-f2a6-08dc27557c84 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Feb 2024 20:52:09.4372 (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: CP4P284MB1940 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_" --_000_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On 2024-02-06 19:19 +0100, Nathan Bossart wrote: > On Tue, Feb 06, 2024 at 05:27:01PM +0000, Maiquel Grassi wrote: > > postgres=3D# \conninfo+ > > Current Connection Information > > Attribute | Value > > ----------------+---------------- > > Database | postgres > > User | postgres > > Server Version | 16.1 > > Server Address | 192.168.0.5/32 > > Server Port | 5433 > > Client Address | 192.168.0.5/32 > > Client Port | 52716 > > Session PID | 21624 > > (8 rows) > > My first reaction is that this should instead return a single row with = the > same set of columns for any connection type (the not-applicable ones wo= uld > just be set to NULL). That would match the other meta-commands like \l= and > \du, and you could still get an expanded display with \x if needed. Al= so, > I think it would simplify the code a bit. +1 for a single-row result and triggering expanded display with \x for consistency with other commands. --//-- I made the adjustment in the code and updated the patch. I believe this is = the format suggested by you all. Would this be it? [postgres@localhost bin]$ ./psql -h 192.168.0.220 -p 5433 -U postgres -d po= stgres psql (17devel, server 16.1) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "192.16= 8.0.220" at port "5433". postgres=3D# \conninfo+ Current Connection Information Attribute | Value ----------------+------------------ Database | postgres User | postgres Server Version | 16.1 Server Address | 192.168.0.220/32 Server Port | 5433 Client Address | 192.168.0.220/32 Client Port | 56606 Session PID | 2424 (8 rows) [postgres@localhost bin]$ ./psql psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" via socket in "= /tmp" at port "5432". postgres=3D# \conninfo+ Current Connection Information Attribute | Value ----------------+---------- Database | postgres User | postgres Server Version | 17devel Server Address | Server Port | 5432 Client Address | Client Port | Session PID | 30216 (8 rows) [postgres@localhost bin]$ ./psql -h localhost psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "localh= ost" (address "::1") at port "5432". postgres=3D# \conninfo+ Current Connection Information Attribute | Value ----------------+---------- Database | postgres User | postgres Server Version | 17devel Server Address | ::1/128 Server Port | 5432 Client Address | ::1/128 Client Port | 46872 Session PID | 30220 (8 rows) [postgres@localhost bin]$ ./psql -h 127.0.0.1 psql (17devel) Type "help" for help. postgres=3D# \conninfo You are connected to database "postgres" as user "postgres" on host "127.0.= 0.1" at port "5432". postgres=3D# \conninfo+ Current Connection Information Attribute | Value ----------------+-------------- Database | postgres User | postgres Server Version | 17devel Server Address | 127.0.0.1/32 Server Port | 5432 Client Address | 127.0.0.1/32 Client Port | 34924 Session PID | 30223 (8 rows) Regards, Maiquel O. Grassi. --_000_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
  On 20= 24-02-06 19:19 +0100, Nathan Bossart wrote:
  > On Tue, Feb 06, 2024 at 05:27:01PM +0000, Maiquel Grassi wrote:=
  > > postgres=3D# \conninfo+
  > >  Current Connection Information
  > >    Attribute    |  = ;   Value
  > > ----------------+----------------
  > >  Database       | postg= res
  > >  User        =    | postgres
  > >  Server Version | 16.1
  > >  Server Address | 192.168.0.5/32
  > >  Server Port    | 5433
  > >  Client Address | 192.168.0.5/32
  > >  Client Port    | 52716
  > >  Session PID    | 21624
  > > (8 rows)
  >
  > My first reaction is that this should instead return a single r= ow with the
  > same set of columns for any connection type (the not-applicable= ones would
  > just be set to NULL).  That would match the other meta-com= mands like \l and
  > \du, and you could still get an expanded display with \x if nee= ded.  Also,
  > I think it would simplify the code a bit.
 
  +1 for a single-row result and triggering expanded display with \x f= or
  consistency with other commands.

--//--

I made the adjustment= in the code and updated the patch. I believe this is the format suggested = by you all. Would this be it?

[postgres@localhost bin]$ ./psql -h 192.168.0.220 -p 5433 -U postgres -d po= stgres
psql (17devel, server= 16.1)
Type "help"= for help.

postgres=3D# \conninf= o
You are connected to = database "postgres" as user "postgres" on host "19= 2.168.0.220" at port "5433".
postgres=3D# \conninf= o+
  Current Connection Information
   Attribut= e    |      Value
----------------+----= --------------
 Database  =     | postgres
 User   &nb= sp;       | postgres
 Server Version | 16.1
 Server Address | 192.168.0.220/32=
 Server Port &nb= sp;  | 5433
 Client Address = | 192.168.0.220/32
 Client Port    | 56606<= /div>
 Session PID    | 2424
(8 rows)

[postgres@localhost bin]$ ./psql
psql (17devel)=
Type "help" for help.

postgres=3D# \conninf= o
You are connected to database "postgres&q= uot; as user "postgres" via socket in "/tmp" at port &q= uot;5432".
postgres=3D# \conninfo+
Current Connection In= formation
   Attribute    |  Va= lue
----------------+----------
 Database  =     | postgres
 User   &nb= sp;       | postgres
 Server Version = | 17devel
 Server Address |
 Server Port    | 5432
 Client Address |
 Client Port &nb= sp;  |
 Session PID    | 30216<= /div>
(8 rows)

[postgres@localhost b= in]$ ./psql -h localhost
psql (17devel)=
Type "help"= for help.

postgres=3D# \conninfo
You are connected to database "postgres&q= uot; as user "postgres" on host "localhost" (address &q= uot;::1") at port "5432".
postgres=3D# \conninf= o+
Current Connection In= formation
   Attribute    |  Va= lue
----------------+----------
 Database       | postgres=
 User           = | postgres
 Server Version | 17devel
 Server Address = | ::1/128
 Server Port &nb= sp;  | 5432
 Client Address | ::1/128
 Client Port    | 46872<= /div>
 Session PID    | 30220<= /div>
(8 rows)

[postgres@localhost b= in]$ ./psql -h 127.0.0.1
psql (17devel)
Type "help" for help.

postgres=3D# \conninfo
You are connected to database "postgres&q= uot; as user "postgres" on host "127.0.0.1" at port &qu= ot;5432".
postgres=3D# \conninfo+
Current Connection Information
   Attribute    |   &= nbsp;Value
----------------+----= ----------
 Database  =     | postgres
 User           = | postgres
 Server Version = | 17devel
 Server Address = | 127.0.0.1/32
 Server Port    | 5432
 Client Address | 127.0.0.1/32
 Client Port    | 34924<= /div>
 Session PID    | 30223<= /div>
(8 rows)

Regards,
Maiquel O. Grassi.
--_000_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_-- --_004_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v2-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v2-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v2-0001-psql-meta-command-conninfo-plus.patch"; size=7720; creation-date="Tue, 06 Feb 2024 20:42:39 GMT"; modification-date="Tue, 06 Feb 2024 20:43:22 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFu ZC5jCmluZGV4IDVjOTA2ZTQuLmFkOGUzNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21t YW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtNjgsNyArNjgsOCBAQCBzdGF0 aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9DKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbgogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRf Y29ubmVjdChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBz dGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jZChQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmNtZCk7 Ci1zdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVz dWx0IGV4ZWNfY29tbWFuZF9jb25uaW5mbyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wg YWN0aXZlX2JyYW5jaCwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0aWMgYmFj a3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jb3B5KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5k X2NvcHlyaWdodChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7 CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9jcm9zc3RhYnZpZXcoUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwpAQCAtMzE3LDggKzMxOCw4 IEBAIGV4ZWNfY29tbWFuZChjb25zdCBjaGFyICpjbWQsCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFu ZF9jb25uZWN0KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChj bWQsICJjZCIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9jZChzY2FuX3N0YXRlLCBh Y3RpdmVfYnJhbmNoLCBjbWQpOwotCWVsc2UgaWYgKHN0cmNtcChjbWQsICJjb25uaW5mbyIpID09 IDApCi0JCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9jb25uaW5mbyhzY2FuX3N0YXRlLCBhY3RpdmVf YnJhbmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAiY29ubmluZm8iKSA9PSAwIHx8IHN0cmNt cChjbWQsICJjb25uaW5mbysiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY29ubmlu Zm8oc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kKTsKIAllbHNlIGlmIChwZ19zdHJjYXNl Y21wKGNtZCwgImNvcHkiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY29weShzY2Fu X3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiY29weXJpZ2h0 IikgPT0gMCkKQEAgLTY0Myw0NyArNjQ0LDc0IEBAIGV4ZWNfY29tbWFuZF9jZChQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogfQog CiAvKgotICogXGNvbm5pbmZvIC0tIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJl bnQgY29ubmVjdGlvbgorICogXGNvbm5pbmZvLCBcY29ubmluZm8rIC0tIGRpc3BsYXkgaW5mb3Jt YXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgY29ubmVjdGlvbgogICovCiBzdGF0aWMgYmFja3NsYXNo UmVzdWx0Ci1leGVjX2NvbW1hbmRfY29ubmluZm8oUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gpCitleGVjX2NvbW1hbmRfY29ubmluZm8oUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIHsKKwlib29s CQlzdWNjZXNzID0gdHJ1ZTsKKwogCWlmIChhY3RpdmVfYnJhbmNoKQogCXsKIAkJY2hhcgkgICAq ZGIgPSBQUWRiKHBzZXQuZGIpOworCQljaGFyCSAgICpwYXR0ZXJuOworCQlib29sCQlzaG93X3Zl cmJvc2U7CiAKLQkJaWYgKGRiID09IE5VTEwpCi0JCQlwcmludGYoXygiWW91IGFyZSBjdXJyZW50 bHkgbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlLlxuIikpOwotCQllbHNlCisJCXBhdHRlcm4g PSBwc3FsX3NjYW5fc2xhc2hfb3B0aW9uKHNjYW5fc3RhdGUsIE9UX05PUk1BTCwgTlVMTCwgdHJ1 ZSk7CisKKwkJc2hvd192ZXJib3NlID0gc3RyY2hyKGNtZCwgJysnKSA/IHRydWUgOiBmYWxzZTsK KworCQkvKgorCQkgKiBcY29ubmluZm8rCisJCSAqLworCQlpZiAoc2hvd192ZXJib3NlKQogCQl7 Ci0JCQljaGFyCSAgICpob3N0ID0gUFFob3N0KHBzZXQuZGIpOwotCQkJY2hhcgkgICAqaG9zdGFk ZHIgPSBQUWhvc3RhZGRyKHBzZXQuZGIpOworCQkJc3VjY2VzcyA9IGxpc3RDb25uZWN0aW9uSW5m b3JtYXRpb24ocGF0dGVybiwgc2hvd192ZXJib3NlKTsKKwkJCWZyZWUocGF0dGVybik7CisJCQlw cmludFNTTEluZm8oKTsKKwkJCXByaW50R1NTSW5mbygpOworCQl9CiAKLQkJCWlmIChpc191bml4 c29ja19wYXRoKGhvc3QpKQotCQkJewotCQkJCS8qIGhvc3RhZGRyIG92ZXJyaWRlcyBob3N0ICov Ci0JCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUg Y29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBhZGRyZXNzIFwi JXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwg aG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7Ci0JCQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91 IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIHZpYSBzb2Nr ZXQgaW4gXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBz ZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOwotCQkJfQorCQkvKgorCQkgKiBcY29ubmlu Zm8KKwkJICovCisJCWVsc2UKKwkJeworCQkJaWYgKGRiID09IE5VTEwpCisJCQkJcHJpbnRmKF8o IllvdSBhcmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIpKTsKIAkJ CWVsc2UKIAkJCXsKLQkJCQlpZiAoaG9zdGFkZHIgJiYgKmhvc3RhZGRyICYmIHN0cmNtcChob3N0 LCBob3N0YWRkcikgIT0gMCkKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRh dGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVzcyBcIiVz XCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBo b3N0LCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJCQljaGFyCSAgICpob3N0ID0gUFFo b3N0KHBzZXQuZGIpOworCQkJCWNoYXIJICAgKmhvc3RhZGRyID0gUFFob3N0YWRkcihwc2V0LmRi KTsKKworCQkJCWlmIChpc191bml4c29ja19wYXRoKGhvc3QpKQorCQkJCXsKKwkJCQkJLyogaG9z dGFkZHIgb3ZlcnJpZGVzIGhvc3QgKi8KKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikK KwkJCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMg dXNlciBcIiVzXCIgb24gYWRkcmVzcyBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJ CQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0YWRkciwgUFFwb3J0KHBzZXQuZGIpKTsKKwkJ CQkJZWxzZQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwi JXNcIiBhcyB1c2VyIFwiJXNcIiB2aWEgc29ja2V0IGluIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5c biIpLAorCQkJCQkJCSAgIGRiLCBQUXVzZXIocHNldC5kYiksIGhvc3QsIFBRcG9ydChwc2V0LmRi KSk7CisJCQkJfQogCQkJCWVsc2UKLQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRv IGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiBhdCBwb3J0IFwi JXNcIi5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBz ZXQuZGIpKTsKKwkJCQl7CisJCQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIgJiYgc3RyY21w KGhvc3QsIGhvc3RhZGRyKSAhPSAwKQorCQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVk IHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1c2VyIFwiJXNcIiBvbiBob3N0IFwiJXNcIiAoYWRkcmVz cyBcIiVzXCIpIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0 LmRiKSwgaG9zdCwgaG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJCWVsc2UKKwkJCQkJ CXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBc IiVzXCIgb24gaG9zdCBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwg UFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJCX0KKwkJCQlwcmlu dFNTTEluZm8oKTsKKwkJCQlwcmludEdTU0luZm8oKTsKIAkJCX0KLQkJCXByaW50U1NMSW5mbygp OwotCQkJcHJpbnRHU1NJbmZvKCk7CiAJCX0KIAl9CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0 aW9ucyhzY2FuX3N0YXRlKTsKIAotCXJldHVybiBQU1FMX0NNRF9TS0lQX0xJTkU7CisJcmV0dXJu IHN1Y2Nlc3MgPyBQU1FMX0NNRF9TS0lQX0xJTkUgOiBQU1FMX0NNRF9FUlJPUjsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKaW5kZXggYjZhNGViMS4uYTg0ZGE1NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTkwMSw2ICs5MDEsNTAg QEAgZXJyb3JfcmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIGxpc3RDb25uZWN0 aW9uSW5mb3JtYXRpb24KKyAqCisgKiBmb3IgXGNvbm5pbmZvKworICovCitib29sCitsaXN0Q29u bmVjdGlvbkluZm9ybWF0aW9uKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKK3sK KyAgICBQR3Jlc3VsdCAgICpyZXM7CisgICAgUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKyAgICBwcmlu dFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCisgICAgaW5pdFBRRXhwQnVmZmVyKCZidWYp OworCisgICAgcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAi U0VMRUNUXG4iCisgICAgICAgICAgICAgICAgICAgICAgIlwiQXR0cmlidXRlXCIsXG4iCisgICAg ICAgICAgICAgICAgICAgICAgIlwiVmFsdWVcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICJG Uk9NXG4iCisgICAgICAgICAgICAgICAgICAgICAgIihcbiIKKyAgICAgICAgICAgICAgICAgICAg ICAiVkFMVUVTXG4iCisgICAgICAgICAgICAgICAgICAgICAgIignRGF0YWJhc2UnLHBnX2NhdGFs b2cuY3VycmVudF9kYXRhYmFzZSgpKSxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiKCdVc2Vy JyxwZ19jYXRhbG9nLmN1cnJlbnRfdXNlcigpKSxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi KCdTZXJ2ZXIgVmVyc2lvbicscGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmcoJ3NlcnZlcl92ZXJz aW9uJykpLFxuIgorICAgICAgICAgICAgICAgICAgICAgICIoJ1NlcnZlciBBZGRyZXNzJyxOVUxM SUYocGdfY2F0YWxvZy5pbmV0X3NlcnZlcl9hZGRyKCk6OnRleHQsJycpKSxcbiIKKyAgICAgICAg ICAgICAgICAgICAgICAiKCdTZXJ2ZXIgUG9ydCcscGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmco J3BvcnQnKSksXG4iCisgICAgICAgICAgICAgICAgICAgICAgIignQ2xpZW50IEFkZHJlc3MnLE5V TExJRihwZ19jYXRhbG9nLmluZXRfY2xpZW50X2FkZHIoKTo6dGV4dCwnJykpLFxuIgorICAgICAg ICAgICAgICAgICAgICAgICIoJ0NsaWVudCBQb3J0JyxOVUxMSUYocGdfY2F0YWxvZy5pbmV0X2Ns aWVudF9wb3J0KCk6OnRleHQsJycpKSxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiKCdTZXNz aW9uIFBJRCcscGdfY2F0YWxvZy5wZ19iYWNrZW5kX3BpZCgpOjp0ZXh0KVxuIgorICAgICAgICAg ICAgICAgICAgICAgICIpIEFTIHRhYihcIkF0dHJpYnV0ZVwiLFwiVmFsdWVcIik7Iik7CisKKyAg ICByZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisgICAgdGVybVBRRXhwQnVmZmVyKCZidWYpOwor ICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBteW9wdC50aXRsZSA9 IF8oIkN1cnJlbnQgQ29ubmVjdGlvbiBJbmZvcm1hdGlvbiIpOworICAgIG15b3B0LnRyYW5zbGF0 ZV9oZWFkZXIgPSB0cnVlOworCisgICAgcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVy eUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisgICAgUFFjbGVhcihyZXMpOworICAgIHJl dHVybiB0cnVlOworfQogCiAvKgogICogbGlzdEFsbERicwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCAyNzNmOTc0Li5i NjM4YzcxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuaApAQCAtMTQ5LDQgKzE0OSw3IEBAIGV4dGVybiBib29sIGxpc3RPcEZh bWlseUZ1bmN0aW9ucyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCiAvKiBcZGwg b3IgXGxvX2xpc3QgKi8KIGV4dGVybiBib29sIGxpc3RMYXJnZU9iamVjdHMoYm9vbCB2ZXJib3Nl KTsKIAorLyogXGNvbm5pbmZvICovCitleHRlcm4gYm9vbCBsaXN0Q29ubmVjdGlvbkluZm9ybWF0 aW9uKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CisKICNlbmRpZgkJCQkJCQkv KiBERVNDUklCRV9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jp bi9wc3FsL2hlbHAuYwppbmRleCA0ZTc5YTgxLi4yYzU0MjZkIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTMxMCw3ICszMTAsNyBA QCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAllbHNlCiAJCUhFTFAwKCIg IFxcY1tvbm5lY3RdIHtbREJOQU1FfC0gVVNFUnwtIEhPU1R8LSBQT1JUfC1dIHwgY29ubmluZm99 XG4iCiAJCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdCB0byBuZXcgZGF0YWJh c2UgKGN1cnJlbnRseSBubyBjb25uZWN0aW9uKVxuIik7Ci0JSEVMUDAoIiAgXFxjb25uaW5mbyAg ICAgICAgICAgICAgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBjdXJyZW50IGNvbm5lY3Rpb25c biIpOworCUhFTFAwKCIgIFxcY29ubmluZm9bK10gICAgICAgICAgIGRpc3BsYXkgaW5mb3JtYXRp b24gYWJvdXQgY3VycmVudCBjb25uZWN0aW9uXG4iKTsKIAlIRUxQMCgiICBcXGVuY29kaW5nIFtF TkNPRElOR10gICBzaG93IG9yIHNldCBjbGllbnQgZW5jb2RpbmdcbiIpOwogCUhFTFAwKCIgIFxc cGFzc3dvcmQgW1VTRVJOQU1FXSAgIHNlY3VyZWx5IGNoYW5nZSB0aGUgcGFzc3dvcmQgZm9yIGEg dXNlclxuIik7CiAJSEVMUDAoIlxuIik7Cg== --_004_CP8P284MB2496B51FC5ED9BD6527D459DEC462CP8P284MB2496BRAP_--