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 1tGyoI-002Dw2-75 for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Nov 2024 11:05:18 +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 1tGyoF-006jq8-Mj for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Nov 2024 11:05:16 +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 1tGyoF-006jpy-4Q for pgsql-hackers@lists.postgresql.org; Fri, 29 Nov 2024 11:05:16 +0000 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tGyoD-0009Yp-40 for pgsql-hackers@lists.postgresql.org; Fri, 29 Nov 2024 11:05:15 +0000 Received: by mail-qt1-x82f.google.com with SMTP id d75a77b69052e-466943679bfso15605021cf.0 for ; Fri, 29 Nov 2024 03:05:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732878312; x=1733483112; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rtSQ+0q5WWddalBO+Ixnm7+46GGy0pfBmIE8armrkfI=; b=VAy6IyS8wfWzOMiRY956mqEz8jXO3G4UeFruCGxpWqfI73hFZqln5Dvpbzph/VtPJb XTI4goymg40sy7IO+WNrFoIznG7CsvXbIDI/eHyI7Amq5a/OupXBnSJ4EPuEro6qt6Jk 3aCDpyaEXkDWn9HevUxesYWPWYe7snscYZrl1r7roYiI7EfEIMOSdQU8Zqa7uD1oMog6 C/3Lva5b+RVdEP8Bynh4VlwLUIqsP9VHRDKCDMPgsB+H6ITIFzgi91h6BKThVtuWa3uZ 9eSa7aqDOf0fsIQDagUJKjXDmDT6al40ye6DtwUyGNC5WN6imt4FseKi80loTGd+J+DS Vt+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732878312; x=1733483112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rtSQ+0q5WWddalBO+Ixnm7+46GGy0pfBmIE8armrkfI=; b=ZG/bG/Qz2r5P5cgV2eVvQaCVIPiRfOwduxxqfCIQPxaTI0IPOKTAm4QW8G0OS/2NXD 5feIZW+k1dCHijxLTqJCLaAUHJ12k7VuCWPBPpuQijo/ZfWo9WX3GX4kTRWfxfLA9cbn IvQr3OiTCx9xqkSmG8dWx8g5mhirSnhE5UWNjrDXIXa79aDkk0NPspbM1sq81PVO1Ye2 DU6FEHJJw9a9QwStpKYNzd65eEvn8NeDctYhY18jSoODZ8/JAarlKTds3qMTALAlYbFh rI/xOYVueQZpk0/1KUIWo3ljVonTjGRT2CJJzLbPOMbV3t0SJN3ocTj5O7O/YwghwDdB Qmcw== X-Forwarded-Encrypted: i=1; AJvYcCVhFkzeZEXpDg69JEyDCh/EWaTQ6O8cpp3cBuRPj0OWhAnhyZbWPnJ4SCbjgHx/7JNHjLW7U/Hv14/a6hzT@lists.postgresql.org X-Gm-Message-State: AOJu0YyIkJSzvE9oDHS77c34gIeeLxztn7u+KjTpkT5TCRqP32CNxioV WYyVdIcbbNhVXFjIehcH5y6j4aMfo8Zwx5krAb/ovJmn4xRPwEuGQ75Y8j1dpUGE3aJ+xhKaWxi UsDATvHBoOIc22qxYim/ZN6wMvoc= X-Gm-Gg: ASbGncscLwrjRiKWdkneJOMCXHKQdARZOLMd7XLIkESqVVhRJ51oqAtgzmGT4l8KjcF JvCgt21m7cZKN0/PIwqrEkOk7go60zIdb0lZDY/rO9cI= X-Google-Smtp-Source: AGHT+IHntEzURhcwGKVwWw80lSk0++vly/YcKXzCCneXtg49pjVVr11Eqq/rB1Cxc9B3XavArzhgjkcGrL7H2Wc+eRM= X-Received: by 2002:a05:6214:5296:b0:6d8:8c51:5585 with SMTP id 6a1803df08f44-6d88c5155a9mr3427716d6.15.1732878312069; Fri, 29 Nov 2024 03:05:12 -0800 (PST) MIME-Version: 1.0 References: <94d53a41-d1f5-4fd1-8d1e-ff36ac569848@app.fastmail.com> <4DA5A159-39FD-47DB-95E5-A4F65BC5782A@yandex-team.ru> <53e96b5a-cc77-4afa-8103-79c69afef1a6@uni-muenster.de> <748a7ec0-9126-4f27-a2a7-e3e449d6fdd7@uni-muenster.de> <8a240667-de9e-455b-b3e2-62f34ec80154@uni-muenster.de> In-Reply-To: <8a240667-de9e-455b-b3e2-62f34ec80154@uni-muenster.de> From: Kirill Gavrilov Date: Fri, 29 Nov 2024 14:05:01 +0300 Message-ID: Subject: Re: Truncate logs by max_log_size To: Jim Jones Cc: Kirill Reshke , "Andrey M. Borodin" , Euler Taveira , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000003b43a706280b2c2f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003b43a706280b2c2f Content-Type: multipart/alternative; boundary="0000000000003b43a306280b2c2d" --0000000000003b43a306280b2c2d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Nov 29, 2024 at 3:24=E2=80=AFAM Jim Jones wrote: > > > On 28.11.24 20:20, Kirill Gavrilov wrote: > > Here is version 3 of this patch. I found another place where this > > setting can be applied. > > Also added some documentation and specified that this setting > > truncates queries by size in bytes. > > Thanks. It is now possible to change the parameter using SET > > postgres=3D# SET max_log_size TO 15; > SET > postgres=3D# SHOW max_log_size ; > max_log_size > -------------- > 15 > (1 row) > > In the postgresql.conf the default value is set to 0 > > #max_log_size =3D 0 > > But if we take a look at the parameter it shows something else > > postgres=3D# SHOW max_log_size ; > max_log_size > -------------- > 5242880 > (1 row) > > Perhaps it would be best to keep the default value in the > postgresql.conf consistent with the documentation and the actual > max_log_size value. IMHO 0 (or -1) should disable it. > > There are also several compilation issues: > > postgres.c: In function =E2=80=98exec_simple_query=E2=80=99: > postgres.c:1040:9: warning: ISO C90 forbids mixed declarations and code > [-Wdeclaration-after-statement] > 1040 | bool copied =3D false; > | ^~~~ > elog.c: In function =E2=80=98EmitErrorReport=E2=80=99: > elog.c:1697:9: warning: ISO C90 forbids mixed declarations and code > [-Wdeclaration-after-statement] > 1697 | const char* old_query_string =3D debug_query_string; > | ^~~~~ > elog.c:1744:23: warning: passing argument 1 of =E2=80=98pfree=E2=80=99 di= scards =E2=80=98const=E2=80=99 > qualifier from pointer target type [-Wdiscarded-qualifiers] > 1744 | pfree(debug_query_string); > | ^~~~~~~~~~~~~~~~~~ > In file included from ../../../../src/include/postgres.h:47, > from elog.c:55: > ../../../../src/include/utils/palloc.h:86:25: note: expected =E2=80=98voi= d *=E2=80=99 > but argument is of type =E2=80=98const char *=E2=80=99 > 86 | extern void pfree(void *pointer); > | ~~~~~~^~~~~~~ > elog.c: In function =E2=80=98build_query_log=E2=80=99: > elog.c:3798:9: warning: ISO C90 forbids mixed declarations and code > [-Wdeclaration-after-statement] > 3798 | size_t query_len =3D strlen(query); > | ^~~~~~ > elog.c:3801:24: warning: return discards =E2=80=98const=E2=80=99 qualifie= r from pointer > target type [-Wdiscarded-qualifiers] > 3801 | return query; > | ^~~~~ > elog.c:3805:9: warning: ISO C90 forbids mixed declarations and code > [-Wdeclaration-after-statement] > 3805 | size_t query_log_len =3D pg_mbcliplen(query, query_len, > max_log_size); > | ^~~~~~ > > and there is a trailing whitespace at: > > + * If query needs to be truncated, copied will be set to true > > > /home/jim/patches/max_log_query/V3-0001-parameter-max_log_size-to-truncat= e-logs.patch:141: > trailing whitespace. > * If query needs to be truncated, copied will be set to true > Checking patch doc/src/sgml/config.sgml... > Hunk #1 succeeded at 7865 (offset -48 lines). > Checking patch src/backend/tcop/postgres.c... > Hunk #1 succeeded at 71 (offset 1 line). > Hunk #2 succeeded at 1031 (offset 1 line). > Hunk #3 succeeded at 1083 (offset 1 line). > Hunk #4 succeeded at 1382 (offset 1 line). > Hunk #5 succeeded at 1393 (offset 1 line). > Checking patch src/backend/utils/error/elog.c... > Hunk #4 succeeded at 3781 (offset -3 lines). > Checking patch src/backend/utils/misc/guc_tables.c... > Hunk #1 succeeded at 3714 (offset -10 lines). > Checking patch src/backend/utils/misc/postgresql.conf.sample... > Hunk #1 succeeded at 615 (offset -2 lines). > Checking patch src/bin/pg_ctl/t/004_logrotate.pl... > Checking patch src/include/utils/elog.h... > Applied patch doc/src/sgml/config.sgml cleanly. > Applied patch src/backend/tcop/postgres.c cleanly. > Applied patch src/backend/utils/error/elog.c cleanly. > Applied patch src/backend/utils/misc/guc_tables.c cleanly. > Applied patch src/backend/utils/misc/postgresql.conf.sample cleanly. > Applied patch src/bin/pg_ctl/t/004_logrotate.pl cleanly. > Applied patch src/include/utils/elog.h cleanly. > warning: 1 line adds whitespace errors. > > -- > Jim > > Thanks for spotting mistakes. Setting max_log_size to 0 already disables truncation. I changed guc units to bytes, just to make it more human-friendly. Did some refactoring and fixed all warnings. Set default value in postgresql.conf. --0000000000003b43a306280b2c2d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Nov 29, 2024 at 3:24=E2=80=AFAM J= im Jones <jim.jones@uni-mue= nster.de> wrote:


On 28.11.24 20:20, Kirill Gavrilov wrote:
> =C2=A0 Here is version 3 of this patch. I found another place where th= is
> setting can be applied.=C2=A0
> =C2=A0 Also added some documentation and specified that this setting > truncates queries by size in bytes.

Thanks. It is now possible to change the parameter using SET

postgres=3D# SET max_log_size TO 15;
SET
postgres=3D# SHOW max_log_size ;
=C2=A0max_log_size
--------------
=C2=A015
(1 row)=C2=A0

In the postgresql.conf the default value is set to 0

#max_log_size =3D 0

But if we take a look at the parameter it shows something else

postgres=3D# SHOW max_log_size ;
=C2=A0max_log_size
--------------
=C2=A05242880
(1 row)

Perhaps it would be best to keep the default value in the
postgresql.conf consistent with the documentation and the actual
max_log_size value. IMHO 0 (or -1) should disable it.

There are also several compilation issues:

postgres.c: In function =E2=80=98exec_simple_query=E2=80=99:
postgres.c:1040:9: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
=C2=A01040 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 bool copied = =3D false;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 ^~~~
elog.c: In function =E2=80=98EmitErrorReport=E2=80=99:
elog.c:1697:9: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
=C2=A01697 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const char* ol= d_query_string =3D debug_query_string;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 ^~~~~
elog.c:1744:23: warning: passing argument 1 of =E2=80=98pfree=E2=80=99 disc= ards =E2=80=98const=E2=80=99
qualifier from pointer target type [-Wdiscarded-qualifiers]
=C2=A01744 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pfree(debug_query_string);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 ^~~~~~~~~~~~~~~~~~
In file included from ../../../../src/include/postgres.h:47,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 from elog.c:55:
../../../../src/include/utils/palloc.h:86:25: note: expected =E2=80=98void = *=E2=80=99
but argument is of type =E2=80=98const char *=E2=80=99
=C2=A0=C2=A0 86 | extern void pfree(void *pointer);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ~~~~~~^~= ~~~~~
elog.c: In function =E2=80=98build_query_log=E2=80=99:
elog.c:3798:9: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
=C2=A03798 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 size_t query_l= en =3D strlen(query);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 ^~~~~~
elog.c:3801:24: warning: return discards =E2=80=98const=E2=80=99 qualifier = from pointer
target type [-Wdiscarded-qualifiers]
=C2=A03801 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return query;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 ^~~~~
elog.c:3805:9: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
=C2=A03805 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 size_t query_l= og_len =3D pg_mbcliplen(query, query_len,
max_log_size);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 ^~~~~~

and there is a trailing whitespace at:

+ *=C2=A0=C2=A0=C2=A0 If query needs to be truncated, copied will be set to= true

/home/jim/patches/max_log_query/V3-0001-parameter-max_log_size-to-truncate-= logs.patch:141:
trailing whitespace.
=C2=A0*=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 If query needs to be truncated, copie= d will be set to true
Checking patch doc/src/sgml/config.sgml...
Hunk #1 succeeded at 7865 (offset -48 lines).
Checking patch src/backend/tcop/postgres.c...
Hunk #1 succeeded at 71 (offset 1 line).
Hunk #2 succeeded at 1031 (offset 1 line).
Hunk #3 succeeded at 1083 (offset 1 line).
Hunk #4 succeeded at 1382 (offset 1 line).
Hunk #5 succeeded at 1393 (offset 1 line).
Checking patch src/backend/utils/error/elog.c...
Hunk #4 succeeded at 3781 (offset -3 lines).
Checking patch src/backend/utils/misc/guc_tables.c...
Hunk #1 succeeded at 3714 (offset -10 lines).
Checking patch src/backend/utils/misc/postgresql.conf.sample...
Hunk #1 succeeded at 615 (offset -2 lines).
Checking patch src/bin/pg_ctl/t/004_logrotate.pl...
Checking patch src/include/utils/elog.h...
Applied patch doc/src/sgml/config.sgml cleanly.
Applied patch src/backend/tcop/postgres.c cleanly.
Applied patch src/backend/utils/error/elog.c cleanly.
Applied patch src/backend/utils/misc/guc_tables.c cleanly.
Applied patch src/backend/utils/misc/postgresql.conf.sample cleanly.
Applied patch src/bin/pg_ctl/t/004_logrotate.pl cleanly.
Applied patch src/include/utils/elog.h cleanly.
warning: 1 line adds whitespace errors.

--
Jim


=C2=A0 Thanks for spotting mistakes.
=C2=A0 Setting max_log_size to 0 already disables truncation.
=C2=A0 I changed guc units to bytes, just to make it more human-frien= dly. Did some refactoring and fixed all warnings. Set default value in post= gresql.conf.
--0000000000003b43a306280b2c2d-- --0000000000003b43a706280b2c2f Content-Type: application/octet-stream; name="V4-0001-parameter-max_log_size-to-truncate-logs.patch" Content-Disposition: attachment; filename="V4-0001-parameter-max_log_size-to-truncate-logs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m42mwml70 RnJvbSA5Nzg2OTNlMzM3NWY4YWM1M2E0NGU5YTE0OTZkMDg1Y2JkOTlmYTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkaXBoYW50eG0gPGRpcGhhbnR4bUB5YW5kZXgtdGVhbS5ydT4K RGF0ZTogRnJpLCAyOSBOb3YgMjAyNCAxNDowMjowNCArMDMwMApTdWJqZWN0OiBbUEFUQ0hdIHBh cmFtZXRlciBtYXhfbG9nX3NpemUgdG8gdHJ1bmNhdGUgbG9ncwoKVGhlcmUgaXMgbm8gbmVlZCB0 byBsb2cgdGhlIGVudGlyZSBxdWVyeSwgYmVjYXVzZSBpdCBtYXkgYmUgbGFyZ2UgYW5kIHRha2Ug bG90cyBvZiBzcGFjZSBvbiBkaXNrLiBQYXJhbWV0ZXIgbWF4X2xvZ19zaXplIHNldCB0aGUgbWF4 aW11bSBsZW5ndGggZm9yIGxvZ2dlZCBxdWVyeS4gRXZlcnl0aGluZyBiZXlvbmQgdGhhdCBsZW5n dGggaXMgdHJ1bmNhdGVkLiBWYWx1ZSAwIGRpc2FibGVzIHRoZSBwYXJhbWV0ZXIuCi0tLQogZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKyst CiBzcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgICAgICAgICAgICAgICAgfCA0NyArKysr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAg ICAgICAgfCAxMiArKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIHwgIDIgKwogc3JjL2Jpbi9wZ19jdGwvdC8wMDRfbG9ncm90YXRlLnBsICAgICAgICAg ICAgIHwgMTUgKysrKysrCiBzcmMvaW5jbHVkZS91dGlscy9lbG9nLmggICAgICAgICAgICAgICAg ICAgICAgfCAgNCArKwogNyBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNzZhYjcyZGI5Ni4uODJkYzQ1OGE0YSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bApAQCAtNzkxMyw2ICs3OTEzLDIxIEBAIGxvZ19saW5lX3ByZWZpeCA9ICclbSBbJXBdICVxJXVA JWQvJWEgJwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1sb2ctc2l6ZSIgeHJlZmxhYmVsPSJtYXhfbG9nX3Np emUiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X2xvZ19zaXplPC92YXJuYW1lPiAoPHR5cGU+ aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJu YW1lPm1heF9sb2dfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1h cnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgSWYgZ3JlYXRlciB0aGFuIHplcm8sIGVhY2ggcXVlcnkg bG9nZ2VkIGlzIHRydW5jYXRlZCB0byB0aGlzIG1hbnkgYnl0ZXMuCisgICAgICAgIFplcm8gZGlz YWJsZXMgdGhlIHNldHRpbmcuCisgICAgICAgIERlZmF1bHQgdmFsdWUgaXMgNU1CLgorICAgICAg IDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAg IDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAgICAgIDxzZWN0MiBpZD0icnVudGltZS1j b25maWctbG9nZ2luZy1jc3Zsb2ciPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDRiOTg1YmQwNTYuLjAz M2RlNTg2MmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJ0 Y29wL3BxdWVyeS5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ0Y29w L3V0aWxpdHkuaCIKKyNpbmNsdWRlICJ1dGlscy9lbG9nLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3Vj X2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0xMDI5LDExICsxMDMwLDIyIEBAIGV4ZWNfc2ltcGxlX3F1 ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAlib29sCQl3YXNfbG9nZ2VkID0gZmFsc2U7 CiAJYm9vbAkJdXNlX2ltcGxpY2l0X2Jsb2NrOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsKKwljaGFy KiAJCXRydW5jYXRlZF9xdWVyeSA9IE5VTEw7CisJY29uc3QgY2hhcioJcXVlcnlfbG9nOwogCiAJ LyoKIAkgKiBSZXBvcnQgcXVlcnkgdG8gdmFyaW91cyBtb25pdG9yaW5nIGZhY2lsaXRpZXMuCiAJ ICovCiAJZGVidWdfcXVlcnlfc3RyaW5nID0gcXVlcnlfc3RyaW5nOworCWlmIChuZWVkX3RydW5j YXRlX3F1ZXJ5X2xvZyhxdWVyeV9zdHJpbmcpKQorCXsKKwkJdHJ1bmNhdGVkX3F1ZXJ5ID0gdHJ1 bmNhdGVfcXVlcnlfbG9nKHF1ZXJ5X3N0cmluZyk7CisJCXF1ZXJ5X2xvZyA9IHRydW5jYXRlZF9x dWVyeTsKKwl9CisJZWxzZQorCXsKKwkJcXVlcnlfbG9nID0gcXVlcnlfc3RyaW5nOworCX0KIAog CXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgcXVlcnlfc3RyaW5nKTsKIApA QCAtMTA3OCw3ICsxMDkwLDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlf c3RyaW5nKQogCWlmIChjaGVja19sb2dfc3RhdGVtZW50KHBhcnNldHJlZV9saXN0KSkKIAl7CiAJ CWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coInN0YXRlbWVudDogJXMiLCBxdWVyeV9zdHJpbmcp LAorCQkJCShlcnJtc2coInN0YXRlbWVudDogJXMiLCBxdWVyeV9sb2cpLAogCQkJCSBlcnJoaWRl c3RtdCh0cnVlKSwKIAkJCQkgZXJyZGV0YWlsX2V4ZWN1dGUocGFyc2V0cmVlX2xpc3QpKSk7CiAJ CXdhc19sb2dnZWQgPSB0cnVlOwpAQCAtMTM3Nyw3ICsxMzg5LDcgQEAgZXhlY19zaW1wbGVfcXVl cnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQljYXNlIDI6CiAJCQllcmVwb3J0KExPRywK IAkJCQkJKGVycm1zZygiZHVyYXRpb246ICVzIG1zICBzdGF0ZW1lbnQ6ICVzIiwKLQkJCQkJCQlt c2VjX3N0ciwgcXVlcnlfc3RyaW5nKSwKKwkJCQkJCQltc2VjX3N0ciwgcXVlcnlfbG9nKSwKIAkJ CQkJIGVycmhpZGVzdG10KHRydWUpLAogCQkJCQkgZXJyZGV0YWlsX2V4ZWN1dGUocGFyc2V0cmVl X2xpc3QpKSk7CiAJCQlicmVhazsKQEAgLTEzODgsNiArMTQwMCw4IEBAIGV4ZWNfc2ltcGxlX3F1 ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAogCVRSQUNFX1BPU1RHUkVTUUxfUVVFUllf RE9ORShxdWVyeV9zdHJpbmcpOwogCisJaWYgKHRydW5jYXRlZF9xdWVyeSkKKwkJcGZyZWUodHJ1 bmNhdGVkX3F1ZXJ5KTsKIAlkZWJ1Z19xdWVyeV9zdHJpbmcgPSBOVUxMOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgYi9zcmMvYmFja2VuZC91dGlscy9l cnJvci9lbG9nLmMKaW5kZXggMjg5MDU5NDM1YS4uOGExMDcxNjc3YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9y L2Vsb2cuYwpAQCAtMTExLDYgKzExMSw3IEBAIGludAkJCUxvZ19kZXN0aW5hdGlvbiA9IExPR19E RVNUSU5BVElPTl9TVERFUlI7CiBjaGFyCSAgICpMb2dfZGVzdGluYXRpb25fc3RyaW5nID0gTlVM TDsKIGJvb2wJCXN5c2xvZ19zZXF1ZW5jZV9udW1iZXJzID0gdHJ1ZTsKIGJvb2wJCXN5c2xvZ19z cGxpdF9tZXNzYWdlcyA9IHRydWU7CitpbnQJCQltYXhfbG9nX3NpemUgPSAwOwogCiAvKiBQcm9j ZXNzZWQgZm9ybSBvZiBiYWNrdHJhY2VfZnVuY3Rpb25zIEdVQyAqLwogc3RhdGljIGNoYXIgKmJh Y2t0cmFjZV9mdW5jdGlvbl9saXN0OwpAQCAtMTY4OCwxMSArMTY4OSwxOCBAQCBFbWl0RXJyb3JS ZXBvcnQodm9pZCkKIHsKIAlFcnJvckRhdGEgICplZGF0YSA9ICZlcnJvcmRhdGFbZXJyb3JkYXRh X3N0YWNrX2RlcHRoXTsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJY2hhciogdHJ1bmNh dGVkX3F1ZXJ5ID0gTlVMTDsKIAogCXJlY3Vyc2lvbl9kZXB0aCsrOwogCUNIRUNLX1NUQUNLX0RF UFRIKCk7CiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlZGF0YS0+YXNzb2Nf Y29udGV4dCk7CiAKKwlpZiAobmVlZF90cnVuY2F0ZV9xdWVyeV9sb2coZGVidWdfcXVlcnlfc3Ry aW5nKSkKKwl7CisJCXRydW5jYXRlZF9xdWVyeSA9IHRydW5jYXRlX3F1ZXJ5X2xvZyhkZWJ1Z19x dWVyeV9zdHJpbmcpOworCQlkZWJ1Z19xdWVyeV9zdHJpbmcgPSB0cnVuY2F0ZWRfcXVlcnk7CisJ fQorCiAJLyoKIAkgKiBSZXNldCB0aGUgZm9ybWF0dGVkIHRpbWVzdGFtcCBmaWVsZHMgYmVmb3Jl IGVtaXR0aW5nIGFueSBsb2dzLiAgVGhpcwogCSAqIGluY2x1ZGVzIGFsbCB0aGUgbG9nIGRlc3Rp bmF0aW9ucyBhbmQgZW1pdF9sb2dfaG9vaywgYXMgdGhlIGxhdHRlcgpAQCAtMTczMyw2ICsxNzQx LDkgQEAgRW1pdEVycm9yUmVwb3J0KHZvaWQpCiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CiAJcmVjdXJzaW9uX2RlcHRoLS07CisKKwlpZiAodHJ1bmNhdGVkX3F1ZXJ5KQor CQlwZnJlZSh0cnVuY2F0ZWRfcXVlcnkpOwogfQogCiAvKgpAQCAtMzc3MywzICszNzg0LDM5IEBA IHdyaXRlX3N0ZGVycihjb25zdCBjaGFyICpmbXQsLi4uKQogI2VuZGlmCiAJdmFfZW5kKGFwKTsK IH0KKworLyoKKyAqCUFwcGx5IHRydW5jYXRpb24gdG8gYnVpbGQgcXVlcnkgdGhhdCB3aWxsIGJl IGxvZ2dlZC4KKyAqCisgKglJZiBxdWVyeSBuZWVkcyB0byBiZSB0cnVuY2F0ZWQsIGNvcGllZCB3 aWxsIGJlIHNldCB0byB0cnVlCisgKglhbmQgcmV0dXJuZWQgc3RyaW5nIG11c3QgYmUgZnJlZWQK KyovCitjaGFyKgordHJ1bmNhdGVfcXVlcnlfbG9nKGNvbnN0IGNoYXIqIHF1ZXJ5KQoreworCXNp emVfdCB0cnVuY2F0ZWRfcXVlcnlfbGVuOworCWNoYXIqIHRydW5jYXRkX3F1ZXJ5OworCXNpemVf dCBxdWVyeV9sZW47CisKKwlpZiAoIXF1ZXJ5KQorCQlyZXR1cm4gTlVMTDsKKworCXF1ZXJ5X2xl biA9IHN0cmxlbihxdWVyeSk7CisJdHJ1bmNhdGVkX3F1ZXJ5X2xlbiA9IHBnX21iY2xpcGxlbihx dWVyeSwgcXVlcnlfbGVuLCBtYXhfbG9nX3NpemUpOworCXRydW5jYXRkX3F1ZXJ5ID0gKGNoYXIg KikgcGFsbG9jKHRydW5jYXRlZF9xdWVyeV9sZW4rMSk7CisJbWVtY3B5KHRydW5jYXRkX3F1ZXJ5 LCBxdWVyeSwgdHJ1bmNhdGVkX3F1ZXJ5X2xlbik7CisJdHJ1bmNhdGRfcXVlcnlbdHJ1bmNhdGVk X3F1ZXJ5X2xlbl0gPSAnXDAnOworCXJldHVybiB0cnVuY2F0ZF9xdWVyeTsKK30KKworLyoKKyAq CUNoZWNrcyBpZiBxdWVyeSBzaG91bGQgYmUgdHJ1bmNhdGVkCisgKglhY2NvcmRpbmcgdG8gbWF4 X2xvZ19zaXplCisqLworYm9vbAorbmVlZF90cnVuY2F0ZV9xdWVyeV9sb2coY29uc3QgY2hhciog cXVlcnkpCit7CisJaWYgKCFxdWVyeSkKKwkJcmV0dXJuIGZhbHNlOworCXJldHVybiAhKG1heF9s b2dfc2l6ZSA9PSAwIHx8IHN0cmxlbihxdWVyeSkgPCBtYXhfbG9nX3NpemUpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA5ODQ1YWJkNjkzLi44YWE2ZTNjN2E4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzcyNCw2ICszNzI0LDE4IEBAIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJtYXhfbG9nX3NpemUiLCBQR0NfU1VTRVQsIExPR0dJTkdfV0hBVCwKKwkJ CWdldHRleHRfbm9vcCgiU2V0cyBtYXggc2l6ZSBpbiBieXRlcyBvZiBsb2dnZWQgc3RhdGVtZW50 LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX0JZVEUKKwkJfSwKKwkJJm1heF9sb2dfc2l6ZSwK KwkJNSAqICgxMDI0ICogMTAyNCksCisJCTAsIElOVF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwK Kwl9LAorCiAJLyogRW5kLW9mLWxpc3QgbWFya2VyICovCiAJewogCQl7TlVMTCwgMCwgMCwgTlVM TCwgTlVMTH0sIE5VTEwsIDAsIDAsIDAsIE5VTEwsIE5VTEwsIE5VTEwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCA0MDdjZDFlMDhjLi44NDgw NjdkODdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC02MTcsNiArNjE3LDggQEAKIAkJCQkJIyBiaW5kLXBhcmFtZXRlciB2YWx1ZXMgdG8g TiBieXRlczsKIAkJCQkJIyAtMSBtZWFucyBwcmludCBpbiBmdWxsLCAwIGRpc2FibGVzCiAjbG9n X3N0YXRlbWVudCA9ICdub25lJwkJCSMgbm9uZSwgZGRsLCBtb2QsIGFsbAorI21heF9sb2dfc2l6 ZSA9IDVNQiAJCQkJIyBtYXggc2l6ZSBvZiBsb2dnZWQgc3RhdGVtZW50IChpbiBieXRlcykKKwkJ CQkgICAgIyAwIGRpc2FibGVzIHRoZSBmZWF0dXJlCiAjbG9nX3JlcGxpY2F0aW9uX2NvbW1hbmRz ID0gb2ZmCiAjbG9nX3RlbXBfZmlsZXMgPSAtMQkJCSMgbG9nIHRlbXBvcmFyeSBmaWxlcyBlcXVh bCBvciBsYXJnZXIKIAkJCQkJIyB0aGFuIHRoZSBzcGVjaWZpZWQgc2l6ZSBpbiBraWxvYnl0ZXM7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2N0bC90LzAwNF9sb2dyb3RhdGUucGwgYi9zcmMvYmlu L3BnX2N0bC90LzAwNF9sb2dyb3RhdGUucGwKaW5kZXggZWFjY2ExYTY1Mi4uMWMxZjg5Y2IwYSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jdGwvdC8wMDRfbG9ncm90YXRlLnBsCisrKyBiL3NyYy9i aW4vcGdfY3RsL3QvMDA0X2xvZ3JvdGF0ZS5wbApAQCAtNjksNiArNjksNyBAQCBsb2dfZGVzdGlu YXRpb24gPSAnc3RkZXJyLCBjc3Zsb2csIGpzb25sb2cnCiAjIHRoZXNlIGVuc3VyZSBzdGFiaWxp dHkgb2YgdGVzdCByZXN1bHRzOgogbG9nX3JvdGF0aW9uX2FnZSA9IDAKIGxjX21lc3NhZ2VzID0g J0MnCittYXhfbG9nX3NpemUgPSAzMgogKSk7CiAKICRub2RlLT5zdGFydCgpOwpAQCAtMTM1LDYg KzEzNiwyMCBAQCBjaGVja19sb2dfcGF0dGVybignc3RkZXJyJywgJG5ld19jdXJyZW50X2xvZ2Zp bGVzLCAnc3ludGF4IGVycm9yJywgJG5vZGUpOwogY2hlY2tfbG9nX3BhdHRlcm4oJ2NzdmxvZycs ICRuZXdfY3VycmVudF9sb2dmaWxlcywgJ3N5bnRheCBlcnJvcicsICRub2RlKTsKIGNoZWNrX2xv Z19wYXR0ZXJuKCdqc29ubG9nJywgJG5ld19jdXJyZW50X2xvZ2ZpbGVzLCAnc3ludGF4IGVycm9y JywgJG5vZGUpOwogCiskbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAnSU5TRVJUIElOVE8gU09NRV9O T05fRVhJU1RBTlRfVEFCTEUgVkFMVUVTIChURVNUKScpOworZm9yIChteSAkYXR0ZW1wdHMgPSAw OyAkYXR0ZW1wdHMgPCAkbWF4X2F0dGVtcHRzOyAkYXR0ZW1wdHMrKykKK3sKKwlldmFsIHsKKwkJ JGN1cnJlbnRfbG9nZmlsZXMgPSBzbHVycF9maWxlKCRub2RlLT5kYXRhX2RpciAuICcvY3VycmVu dF9sb2dmaWxlcycpOworCX07CisJbGFzdCB1bmxlc3MgJEA7CisJdXNsZWVwKDEwMF8wMDApOwor fQorZGllICRAIGlmICRAOworY2hlY2tfbG9nX3BhdHRlcm4oJ3N0ZGVycicsICAkY3VycmVudF9s b2dmaWxlcywgJ0lOU0VSVCBJTlRPIFNPTUVfTk9OX0VYSVNUQU5UX1RBKD8hKEJMRSBWQUxVRVMg XChURVNUXCkpKScsICRub2RlKTsKK2NoZWNrX2xvZ19wYXR0ZXJuKCdjc3Zsb2cnLCAgJGN1cnJl bnRfbG9nZmlsZXMsICdJTlNFUlQgSU5UTyBTT01FX05PTl9FWElTVEFOVF9UQSg/IShCTEUgVkFM VUVTIFwoVEVTVFwpKSknLCAkbm9kZSk7CitjaGVja19sb2dfcGF0dGVybignanNvbmxvZycsICRj dXJyZW50X2xvZ2ZpbGVzLCAnSU5TRVJUIElOVE8gU09NRV9OT05fRVhJU1RBTlRfVEEoPyEoQkxF IFZBTFVFUyBcKFRFU1RcKSkpJywgJG5vZGUpOworCiAkbm9kZS0+c3RvcCgpOwogCiBkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL2Vsb2cuaAppbmRleCBlNTRlY2E1YjQ4Li5jYWZhOGRlM2MwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5o CkBAIC01MDIsNiArNTAyLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBMb2dfZGVzdGluYXRp b247CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqTG9nX2Rlc3RpbmF0aW9uX3N0cmluZzsKIGV4 dGVybiBQR0RMTElNUE9SVCBib29sIHN5c2xvZ19zZXF1ZW5jZV9udW1iZXJzOwogZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgc3lzbG9nX3NwbGl0X21lc3NhZ2VzOworZXh0ZXJuIFBHRExMSU1QT1JU IGludCBtYXhfbG9nX3NpemU7CiAKIC8qIExvZyBkZXN0aW5hdGlvbiBiaXRtYXAgKi8KICNkZWZp bmUgTE9HX0RFU1RJTkFUSU9OX1NUREVSUgkgMQpAQCAtNTE3LDYgKzUxOCw5IEBAIGV4dGVybiB2 b2lkIERlYnVnRmlsZU9wZW4odm9pZCk7CiBleHRlcm4gY2hhciAqdW5wYWNrX3NxbF9zdGF0ZShp bnQgc3FsX3N0YXRlKTsKIGV4dGVybiBib29sIGluX2Vycm9yX3JlY3Vyc2lvbl90cm91YmxlKHZv aWQpOwogCitleHRlcm4gYm9vbCBuZWVkX3RydW5jYXRlX3F1ZXJ5X2xvZyhjb25zdCBjaGFyKiBx dWVyeSk7CitleHRlcm4gY2hhciogdHJ1bmNhdGVfcXVlcnlfbG9nKGNvbnN0IGNoYXIqIHF1ZXJ5 KTsKKwogLyogQ29tbW9uIGZ1bmN0aW9ucyBzaGFyZWQgYWNyb3NzIGRlc3RpbmF0aW9ucyAqLwog ZXh0ZXJuIHZvaWQgcmVzZXRfZm9ybWF0dGVkX3N0YXJ0X3RpbWUodm9pZCk7CiBleHRlcm4gY2hh ciAqZ2V0X2Zvcm1hdHRlZF9zdGFydF90aW1lKHZvaWQpOwotLSAKMi4zOS4yIChBcHBsZSBHaXQt MTQzKQoK --0000000000003b43a706280b2c2f--