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 1tv6hq-0009gB-C9 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Mar 2025 03:36:30 +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 1tv6hp-00GJIS-3o for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Mar 2025 03:36:29 +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 1tv6ho-00GJHs-Hq for pgsql-hackers@lists.postgresql.org; Thu, 20 Mar 2025 03:36:28 +0000 Received: from mail-qv1-xf33.google.com ([2607:f8b0:4864:20::f33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tv6hm-0003Dq-35 for pgsql-hackers@lists.postgresql.org; Thu, 20 Mar 2025 03:36:27 +0000 Received: by mail-qv1-xf33.google.com with SMTP id 6a1803df08f44-6eb1e09f7e4so3841456d6.3 for ; Wed, 19 Mar 2025 20:36:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742441786; x=1743046586; 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=hs+Rq3yAjey6sO1MP14TJ1auzWM8XyF0glXLGUNuwJo=; b=ixaZeyibD8fawrd4BBphDk3LdUqcyhdTRmnfeiBG1mIzc/7zUyHDvBPT0MGISaMG+0 un76MT5cfAYEar3UxpXw9EBZmpy5D+Wr1hMDqzWw4m7bGLAhxPYcMm+73TdwKNwd0v75 Le7EKkWWF+3+jarSQHwilWOyYVAH0PIGW6OFmBts8Q9AzXzN9YqIdPd1Fc4gIsYi60WR 8qYeMtuD2T5LI7suJX4oPn9gSr+nnHVR/vbay41dr2zTVreglqfpAJ0icaTKM1O0IRac IYM+NkLUIaJFYfbP4nG8awrEBWB5hySHYv0D52uc3+KDbOrGXRjfk4+4lczZpWX4kM6W Gdkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742441786; x=1743046586; 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=hs+Rq3yAjey6sO1MP14TJ1auzWM8XyF0glXLGUNuwJo=; b=MaywQpaK/fPlaz8wMqlbkrn6dI3DVhBbRJmji2cCdK3HHXp6LUDappaUnq5270wXuh Sdd3DsSgNlqEQSuIDQOEo7su2nbwgmR0tMDgET35EGKurmc+KbCOKVBoelDJi6wtpPWF D5YvOQtDVdL55C8iLV+AMB/r7xLHFqhhb98RDntgv2/6NQBUY7U8HlcrD6m1Y52szaIU nkApqakyj+09FouJnxhZ20WQ7ocf/ioqWGPk8CImM72HH0S5o/Gw6KhfvifqahxdkhO0 biRXnZS/81YngkQ6bCkIwtbqeLOT4QMqhlKDmalYTyOi6jYwrfao0snu435zrdVrLPYM 8cKQ== X-Forwarded-Encrypted: i=1; AJvYcCUdc1OCsoo48w5zVHe33I21c7ZbrYVmpISikV4V49CDTqbIRy2RNTR880kopXkOBhznoUNvI3pJMhtIzVUE@lists.postgresql.org X-Gm-Message-State: AOJu0YxQaUhIniAlSKtT2H2WFMkJKoO1h3hJMKqg+opYGHce+YvE6Beg WyJxbkBzz+a++7rAmTCVS8RawQlFwovGxlXLRM0Qj0LLsv1hcZbijmhWw5zP26oSalKbgunMUG7 Cfwt8e8ur82bH0m2veHLpJNEt1xpspw== X-Gm-Gg: ASbGnct3VPCC+DqXbPBOD+vqP+sdrwfcsl+atUxDBeaKzTL8okHSd2rIuXKhu4tpovI DatQTsR8JAvJc/Y/1PlSvHTatJi4mHC+b1rUBWbFb7jxuofmmUVaGek0BoS2nPf07TqhjEE1Mm8 +QWmcstRZbUw2fOZC85grTPog5ttSZ X-Google-Smtp-Source: AGHT+IHyqfxNkUx1ZyOsbNMAMHkFVwSSr1ZpnlJFuJz3U8q1lg7NmqlC3xPJDHYQJq37hE+Lf3iQ/PKVTuKEN4GJDWU= X-Received: by 2002:a05:6214:268d:b0:6e8:feae:9291 with SMTP id 6a1803df08f44-6eb352c45d3mr16033326d6.24.1742441785782; Wed, 19 Mar 2025 20:36:25 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shubham Khanna Date: Thu, 20 Mar 2025 09:06:10 +0530 X-Gm-Features: AQ5f1JpIPXcwJJFIqpHVValtoEBvp_tKf4zwtMgBD91IyMk_GEcibGOG-8Oe4uQ Message-ID: Subject: Re: Adding a '--clean-publisher-objects' option to 'pg_createsubscriber' utility. To: vignesh C Cc: "Hayato Kuroda (Fujitsu)" , "David G. Johnston" , Euler Taveira , Peter Smith , Nisha Moond , Shlok Kyal , PostgreSQL Hackers , Amit Kapila Content-Type: multipart/mixed; boundary="000000000000af715c0630bdd7da" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000af715c0630bdd7da Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 19, 2025 at 3:15=E2=80=AFPM vignesh C wro= te: > > On Wed, 19 Mar 2025 at 14:32, Shubham Khanna > wrote: > > > > > > Changed -r to -R based on the shared analysis to avoid conflict with > > the --retain option used in pg_upgrade and to maintain consistency > > across tools. > > > > The attached patch contains the suggested change. > > Few suggestions: > 1) I felt the comments from the function header of > check_and_drop_publications and the comments of the caller should be > interchanged. That will help in understanding the > check_and_drop_publications function more easily: > + * Since the publications were created before the > consistent LSN, they > + * remain on the subscriber even after the physical repli= ca is > + * promoted. Remove these publications from the > subscriber because > + * they have no use. Additionally, if requested, drop > all pre-existing > + * publications. > */ > - drop_publication(conn, &dbinfo[i]); > + check_and_drop_publications(conn, &dbinfo[i]); > > +/* > + * Check and drop the required publications in the given database. > + */ > +static void > +check_and_drop_publications(PGconn *conn, struct LogicalRepInfo *dbinfo) > Fixed. > 2) I was not sure if this line "Multiple object types can be specified > by using multiple --removed" is required in documentation, as > currently the only option supported is publications: > + target server. Multiple object types can be specified by using mu= ltiple > + switches. > + > > I felt this should be added once at least one more object type removal > is included. > Fixed. The attached patch contains the suggested changes. Thanks and regards, Shubham Khanna. --000000000000af715c0630bdd7da Content-Type: application/octet-stream; name="v24-0001-Support-for-dropping-all-publications-in-pg_crea.patch" Content-Disposition: attachment; filename="v24-0001-Support-for-dropping-all-publications-in-pg_crea.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8gss8m30 RnJvbSA0YjAzZTQ0MTM4ZmJiZWMzODkyYjVmNGViNTVjOWU3OThlYmE3MWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLaGFubmEgPFNodWJoYW0uS2hhbm5hQGZ1aml0c3UuY29tPgpE YXRlOiBNb24sIDE3IE1hciAyMDI1IDA5OjA3OjM3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2MjRd IFN1cHBvcnQgZm9yIGRyb3BwaW5nIGFsbCBwdWJsaWNhdGlvbnMgaW4KICdwZ19jcmVhdGVzdWJz Y3JpYmVyJwoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICctLXJlbW92ZScgb3B0aW9uIGlu IHRoZSAncGdfY3JlYXRlc3Vic2NyaWJlcicKdXRpbGl0eSB0byBzcGVjaWZ5IHRoZSBvYmplY3Qg dHlwZXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdWJzY3JpYmVyLgpUaGlzIHBhdGNoIGFkZHMg c3VwcG9ydHMgdG8gc3BlY2lmeSAncHVibGljYXRpb25zJyBhcyBhbiBvYmplY3QgdHlwZS4KClRo aXMgZmVhdHVyZSBlbnN1cmVzIGEgY2xlYW4gYW5kIHN0cmVhbWxpbmVkIHNldHVwIG9mIGxvZ2lj YWwgcmVwbGljYXRpb24gYnkKcmVtb3ZpbmcgcHVibGljYXRpb25zIG9uIHRoZSBzdWJzY3JpYmVy IHRoYXQgd2VyZSBvcmlnaW5hbGx5IHJlcGxpY2F0ZWQgZnJvbQp0aGUgcHJpbWFyeSBzZXJ2ZXIg ZHVyaW5nIHBoeXNpY2FsIHJlcGxpY2F0aW9uLgpUaGVzZSBwdWJsaWNhdGlvbnMgYmVjb21lIHJl ZHVuZGFudCBvbmNlIHRoZSBzZXR1cCB0cmFuc2l0aW9ucyB0byBsb2dpY2FsCnJlcGxpY2F0aW9u IGFuZCBzZXJ2ZSBubyBmdXJ0aGVyIHB1cnBvc2UuCgpUaGlzIGNsZWFudXAgcHJvY2VzcyByZW1v dmVzIGFsbCBwdWJsaWNhdGlvbnMgZnJvbSB0aGUgc3Vic2NyaWJlciwgcmVnYXJkbGVzcwpvZiB0 aGVpciBvcmlnaW4uCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNn bWwgICAgIHwgMjMgKysrKysKIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3Jp YmVyLmMgICB8IDk5ICsrKysrKysrKysrKysrKystLS0KIC4uLi90LzA0MF9wZ19jcmVhdGVzdWJz Y3JpYmVyLnBsICAgICAgICAgICAgICB8IDI1ICsrKystCiAzIGZpbGVzIGNoYW5nZWQsIDEzMCBp bnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRl c3Vic2NyaWJlci5zZ21sCmluZGV4IGI0Yjk5NjIzNmU0Li4zODBkMGIxYzM1YyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKQEAgLTE0Niw2ICsxNDYsMjkgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48b3B0aW9uPi1SPC9vcHRp b24+PC90ZXJtPgorICAgICA8dGVybT48b3B0aW9uPi0tcmVtb3ZlPC9vcHRpb24+PC90ZXJtPgor ICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBSZW1vdmUgYWxsIG9iamVjdHMg b2YgdGhlIHNwZWNpZmllZCB0eXBlIGZyb20gc3BlY2lmaWVkIGRhdGFiYXNlcyBvbiB0aGUKKyAg ICAgICB0YXJnZXQgc2VydmVyLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg cHVibGljYXRpb25zOiBUaGUgImFsbCB0YWJsZXMiIHB1YmxpY2F0aW9ucyBlc3RhYmxpc2hlZCBm b3IgdGhpcworICAgICAgIHN1YnNjcmliZXIgYXJlIGFsd2F5cyByZW1vdmVkOyBzcGVjaWZ5aW5n IHRoaXMgb2JqZWN0IHR5cGUgY2F1c2VzIGFsbAorICAgICAgIG90aGVyIHB1YmxpY2F0aW9ucyBy ZXBsaWNhdGVkIGZyb20gdGhlIHNvdXJjZSBzZXJ2ZXIgdG8gYmUgZHJvcHBlZCBhcworICAgICAg IHdlbGwuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgb2JqZWN0cyBz ZWxlY3RlZCB0byBiZSBkcm9wcGVkIGFyZSBpbmRpdmlkdWFsbHkgbG9nZ2VkIGFuZCBkbyBzaG93 CisgICAgICAgdXAgaW4gYSAtLWRyeS1ydW4uICBUaGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBh ZmZlY3Qgb3Igc3RvcCB0aGUKKyAgICAgICBkcm9wcGluZyBvZiB0aGUgc2VsZWN0ZWQgb2JqZWN0 cyBzbyBjb25zaWRlciB0YWtpbmcgYSBiYWNrdXAgb2YgdGhlbQorICAgICAgIHVzaW5nIHBnX2R1 bXAuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+ CisKICAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48b3B0aW9uPi1zIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5kaXI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KICAg ICAgPHRlcm0+PG9wdGlvbj4tLXNvY2tldGRpcj08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZGlyPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwppbmRleCA2YmFmOTJlODAyNC4uMTFlNjZjNzgzMWQg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMK KysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwpAQCAtMjks NiArMjksNyBAQAogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAKICNkZWZpbmUJREVGQVVMVF9T VUJfUE9SVAkiNTA0MzIiCisjZGVmaW5lCU9CSkVDVFRZUEVfUFVCTElDQVRJT05TICAweDAwMDEK IAogLyogQ29tbWFuZC1saW5lIG9wdGlvbnMgKi8KIHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0 aW9ucwpAQCAtNDQsNiArNDUsNyBAQCBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMKIAlT aW1wbGVTdHJpbmdMaXN0IHN1Yl9uYW1lczsgLyogbGlzdCBvZiBzdWJzY3JpcHRpb24gbmFtZXMg Ki8KIAlTaW1wbGVTdHJpbmdMaXN0IHJlcGxzbG90X25hbWVzOwkvKiBsaXN0IG9mIHJlcGxpY2F0 aW9uIHNsb3QgbmFtZXMgKi8KIAlpbnQJCQlyZWNvdmVyeV90aW1lb3V0OwkvKiBzdG9wIHJlY292 ZXJ5IGFmdGVyIHRoaXMgdGltZSAqLworCVNpbXBsZVN0cmluZ0xpc3Qgb2JqZWN0dHlwZXNfdG9f cmVtb3ZlOyAvKiBsaXN0IG9mIG9iamVjdCB0eXBlcyB0byByZW1vdmUgKi8KIH07CiAKIC8qIHBl ci1kYXRhYmFzZSBwdWJsaWNhdGlvbi9zdWJzY3JpcHRpb24gaW5mbyAqLwpAQCAtNjgsNiArNzAs OCBAQCBzdHJ1Y3QgTG9naWNhbFJlcEluZm9zCiB7CiAJc3RydWN0IExvZ2ljYWxSZXBJbmZvICpk YmluZm87CiAJYm9vbAkJdHdvX3BoYXNlOwkJLyogZW5hYmxlLXR3by1waGFzZSBvcHRpb24gKi8K KwliaXRzMzIJCW9iamVjdHR5cGVzX3RvX3JlbW92ZTsJLyogZmxhZ3MgaW5kaWNhdGluZyB3aGlj aCBvYmplY3QgdHlwZXMKKwkJCQkJCQkJCQkgKiB0byByZW1vdmUgb24gc3Vic2NyaWJlciAqLwog fTsKIAogc3RhdGljIHZvaWQgY2xlYW51cF9vYmplY3RzX2F0ZXhpdCh2b2lkKTsKQEAgLTEwOSw3 ICsxMTMsOSBAQCBzdGF0aWMgdm9pZCBzdG9wX3N0YW5kYnlfc2VydmVyKGNvbnN0IGNoYXIgKmRh dGFkaXIpOwogc3RhdGljIHZvaWQgd2FpdF9mb3JfZW5kX3JlY292ZXJ5KGNvbnN0IGNoYXIgKmNv bm5pbmZvLAogCQkJCQkJCQkgIGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAq b3B0KTsKIHN0YXRpYyB2b2lkIGNyZWF0ZV9wdWJsaWNhdGlvbihQR2Nvbm4gKmNvbm4sIHN0cnVj dCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKTsKLXN0YXRpYyB2b2lkIGRyb3BfcHVibGljYXRpb24o UEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7CitzdGF0aWMgdm9p ZCBkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcHVibmFtZSwKKwkJ CQkJCQkgY29uc3QgY2hhciAqZGJuYW1lLCBib29sICptYWRlX3B1YmxpY2F0aW9uKTsKK3N0YXRp YyB2b2lkIGNoZWNrX2FuZF9kcm9wX3B1YmxpY2F0aW9ucyhQR2Nvbm4gKmNvbm4sIHN0cnVjdCBM b2dpY2FsUmVwSW5mbyAqZGJpbmZvKTsKIHN0YXRpYyB2b2lkIGNyZWF0ZV9zdWJzY3JpcHRpb24o UEdjb25uICpjb25uLCBjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7CiBzdGF0 aWMgdm9pZCBzZXRfcmVwbGljYXRpb25fcHJvZ3Jlc3MoUEdjb25uICpjb25uLCBjb25zdCBzdHJ1 Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKIAkJCQkJCQkJCSBjb25zdCBjaGFyICpsc24pOwpA QCAtMTk0LDcgKzIwMCw4IEBAIGNsZWFudXBfb2JqZWN0c19hdGV4aXQodm9pZCkKIAkJCWlmIChj b25uICE9IE5VTEwpCiAJCQl7CiAJCQkJaWYgKGRiaW5mby0+bWFkZV9wdWJsaWNhdGlvbikKLQkJ CQkJZHJvcF9wdWJsaWNhdGlvbihjb25uLCBkYmluZm8pOworCQkJCQlkcm9wX3B1YmxpY2F0aW9u KGNvbm4sIGRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUsCisJCQkJCQkJCQkgJmRiaW5m by0+bWFkZV9wdWJsaWNhdGlvbik7CiAJCQkJaWYgKGRiaW5mby0+bWFkZV9yZXBsc2xvdCkKIAkJ CQkJZHJvcF9yZXBsaWNhdGlvbl9zbG90KGNvbm4sIGRiaW5mbywgZGJpbmZvLT5yZXBsc2xvdG5h bWUpOwogCQkJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgZmFsc2UpOwpAQCAtMjQxLDYgKzI0 OCw4IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAg ICAgICAgICBkcnkgcnVuLCBqdXN0IHNob3cgd2hhdCB3b3VsZCBiZSBkb25lXG4iKSk7CiAJcHJp bnRmKF8oIiAgLXAsIC0tc3Vic2NyaWJlci1wb3J0PVBPUlQgICAgICBzdWJzY3JpYmVyIHBvcnQg bnVtYmVyIChkZWZhdWx0ICVzKVxuIiksIERFRkFVTFRfU1VCX1BPUlQpOwogCXByaW50ZihfKCIg IC1QLCAtLXB1Ymxpc2hlci1zZXJ2ZXI9Q09OTlNUUiAgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3Ry aW5nXG4iKSk7CisJcHJpbnRmKF8oIiAgLVIsIC0tcmVtb3ZlPU9CSkVDVFRZUEUgICAgICAgICBy ZW1vdmUgYWxsIG9iamVjdHMgb2YgdGhlIHNwZWNpZmllZCB0eXBlIGZyb20gc3BlY2lmaWVkXG4i CisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgb24gdGhl IHN1YnNjcmliZXI7IGFjY2VwdHM6IHB1YmxpY2F0aW9uc1xuIikpOwogCXByaW50ZihfKCIgIC1z LCAtLXNvY2tldGRpcj1ESVIgICAgICAgICAgICAgc29ja2V0IGRpcmVjdG9yeSB0byB1c2UgKGRl ZmF1bHQgY3VycmVudCBkaXIuKVxuIikpOwogCXByaW50ZihfKCIgIC10LCAtLXJlY292ZXJ5LXRp bWVvdXQ9U0VDUyAgICAgc2Vjb25kcyB0byB3YWl0IGZvciByZWNvdmVyeSB0byBlbmRcbiIpKTsK IAlwcmludGYoXygiICAtVCwgLS1lbmFibGUtdHdvLXBoYXNlICAgICAgICAgIGVuYWJsZSB0d28t cGhhc2UgY29tbWl0IGZvciBhbGwgc3Vic2NyaXB0aW9uc1xuIikpOwpAQCAtMTE5MywxMiArMTIw Miw4IEBAIHNldHVwX3N1YnNjcmliZXIoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNv bnN0IGNoYXIgKmNvbnNpc3RlbnRfbHNuKQogCQkgKi8KIAkJY2hlY2tfYW5kX2Ryb3BfZXhpc3Rp bmdfc3Vic2NyaXB0aW9ucyhjb25uLCAmZGJpbmZvW2ldKTsKIAotCQkvKgotCQkgKiBTaW5jZSB0 aGUgcHVibGljYXRpb24gd2FzIGNyZWF0ZWQgYmVmb3JlIHRoZSBjb25zaXN0ZW50IExTTiwgaXQg aXMKLQkJICogYXZhaWxhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHdoZW4gdGhlIHBoeXNpY2FsIHJl cGxpY2EgaXMgcHJvbW90ZWQuCi0JCSAqIFJlbW92ZSBwdWJsaWNhdGlvbnMgZnJvbSB0aGUgc3Vi c2NyaWJlciBiZWNhdXNlIGl0IGhhcyBubyB1c2UuCi0JCSAqLwotCQlkcm9wX3B1YmxpY2F0aW9u KGNvbm4sICZkYmluZm9baV0pOworCQkvKiBDaGVjayBhbmQgZHJvcCB0aGUgcmVxdWlyZWQgcHVi bGljYXRpb25zIGluIHRoZSBnaXZlbiBkYXRhYmFzZS4gKi8KKwkJY2hlY2tfYW5kX2Ryb3BfcHVi bGljYXRpb25zKGNvbm4sICZkYmluZm9baV0pOwogCiAJCWNyZWF0ZV9zdWJzY3JpcHRpb24oY29u biwgJmRiaW5mb1tpXSk7CiAKQEAgLTE2NjMsMTAgKzE2NjgsMTEgQEAgY3JlYXRlX3B1YmxpY2F0 aW9uKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiB9CiAKIC8q Ci0gKiBSZW1vdmUgcHVibGljYXRpb24gaWYgaXQgY291bGRuJ3QgZmluaXNoIGFsbCBzdGVwcy4K KyAqIERyb3AgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbiBpbiB0aGUgZ2l2ZW4gZGF0YWJhc2Uu CiAgKi8KIHN0YXRpYyB2b2lkCi1kcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3RydWN0 IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCitkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqcHVibmFtZSwgY29uc3QgY2hhciAqZGJuYW1lLAorCQkJCSBib29sICptYWRl X3B1YmxpY2F0aW9uKQogewogCVBRRXhwQnVmZmVyIHN0ciA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7 CiAJUEdyZXN1bHQgICAqcmVzOwpAQCAtMTY3NCwxMCArMTY4MCwxMCBAQCBkcm9wX3B1YmxpY2F0 aW9uKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAKIAlBc3Nl cnQoY29ubiAhPSBOVUxMKTsKIAotCXB1Ym5hbWVfZXNjID0gUFFlc2NhcGVJZGVudGlmaWVyKGNv bm4sIGRiaW5mby0+cHVibmFtZSwgc3RybGVuKGRiaW5mby0+cHVibmFtZSkpOworCXB1Ym5hbWVf ZXNjID0gUFFlc2NhcGVJZGVudGlmaWVyKGNvbm4sIHB1Ym5hbWUsIHN0cmxlbihwdWJuYW1lKSk7 CiAKIAlwZ19sb2dfaW5mbygiZHJvcHBpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNl IFwiJXNcIiIsCi0JCQkJZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCQkJcHVi bmFtZSwgZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIkRST1AgUFVCTElDQVRJ T04gJXMiLCBwdWJuYW1lX2VzYyk7CiAKQEAgLTE2OTEsOCArMTY5Nyw4IEBAIGRyb3BfcHVibGlj YXRpb24oUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAkJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJewogCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgZHJvcCBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIl c1wiOiAlcyIsCi0JCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFyZXN1 bHRFcnJvck1lc3NhZ2UocmVzKSk7Ci0JCQlkYmluZm8tPm1hZGVfcHVibGljYXRpb24gPSBmYWxz ZTsJLyogZG9uJ3QgdHJ5IGFnYWluLiAqLworCQkJCQkJIHB1Ym5hbWUsIGRibmFtZSwgUFFyZXN1 bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQkqbWFkZV9wdWJsaWNhdGlvbiA9IGZhbHNlOwkvKiBk b24ndCB0cnkgYWdhaW4uICovCiAKIAkJCS8qCiAJCQkgKiBEb24ndCBkaXNjb25uZWN0IGFuZCBl eGl0IGhlcmUuIFRoaXMgcm91dGluZSBpcyB1c2VkIGJ5IHByaW1hcnkKQEAgLTE3MDgsNiArMTcx NCw0OSBAQCBkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJ bmZvICpkYmluZm8pCiAJZGVzdHJveVBRRXhwQnVmZmVyKHN0cik7CiB9CiAKKy8qCisgKiBSZXRy aWV2ZSBhbmQgZHJvcCB0aGUgcHVibGljYXRpb25zLgorICoKKyAqIFNpbmNlIHRoZSBwdWJsaWNh dGlvbnMgd2VyZSBjcmVhdGVkIGJlZm9yZSB0aGUgY29uc2lzdGVudCBMU04sIHRoZXkKKyAqIHJl bWFpbiBvbiB0aGUgc3Vic2NyaWJlciBldmVuIGFmdGVyIHRoZSBwaHlzaWNhbCByZXBsaWNhIGlz CisgKiBwcm9tb3RlZC4gUmVtb3ZlIHRoZXNlIHB1YmxpY2F0aW9ucyBmcm9tIHRoZSBzdWJzY3Jp YmVyIGJlY2F1c2UKKyAqIHRoZXkgaGF2ZSBubyB1c2UuIEFkZGl0aW9uYWxseSwgaWYgcmVxdWVz dGVkLCBkcm9wIGFsbCBwcmUtZXhpc3RpbmcKKyAqIHB1YmxpY2F0aW9ucy4KKyAqLworc3RhdGlj IHZvaWQKK2NoZWNrX2FuZF9kcm9wX3B1YmxpY2F0aW9ucyhQR2Nvbm4gKmNvbm4sIHN0cnVjdCBM b2dpY2FsUmVwSW5mbyAqZGJpbmZvKQoreworCVBHcmVzdWx0ICAgKnJlczsKKworCUFzc2VydChj b25uICE9IE5VTEwpOworCisJaWYgKGRiaW5mb3Mub2JqZWN0dHlwZXNfdG9fcmVtb3ZlICYgT0JK RUNUVFlQRV9QVUJMSUNBVElPTlMpCisJeworCQlwZ19sb2dfaW5mbygiZHJvcHBpbmcgYWxsIGV4 aXN0aW5nIHB1YmxpY2F0aW9ucyBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQlkYmluZm8tPmRi bmFtZSk7CisKKwkJLyogRmV0Y2ggYWxsIHB1YmxpY2F0aW9uIG5hbWVzICovCisJCXJlcyA9IFBR ZXhlYyhjb25uLCAiU0VMRUNUIHB1Ym5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u OyIpOworCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJCXsK KwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFpbiBwdWJsaWNhdGlvbiBpbmZvcm1hdGlv bjogJXMiLAorCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJUFFjbGVhcihy ZXMpOworCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKKwkJfQorCisJCS8qIERy b3AgZWFjaCBwdWJsaWNhdGlvbiAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IFBRbnR1cGxlcyhy ZXMpOyBpKyspCisJCQlkcm9wX3B1YmxpY2F0aW9uKGNvbm4sIFBRZ2V0dmFsdWUocmVzLCBpLCAw KSwgZGJpbmZvLT5kYm5hbWUsCisJCQkJCQkJICZkYmluZm8tPm1hZGVfcHVibGljYXRpb24pOwor CisJCVBRY2xlYXIocmVzKTsKKwl9CisJZWxzZQorCQlkcm9wX3B1YmxpY2F0aW9uKGNvbm4sIGRi aW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUsCisJCQkJCQkgJmRiaW5mby0+bWFkZV9wdWJs aWNhdGlvbik7Cit9CisKIC8qCiAgKiBDcmVhdGUgYSBzdWJzY3JpcHRpb24gd2l0aCBzb21lIHBy ZWRlZmluZWQgb3B0aW9ucy4KICAqCkBAIC0xOTE0LDYgKzE5NjMsNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJeyJkcnktcnVuIiwgbm9fYXJndW1lbnQsIE5VTEwsICduJ30sCiAJ CXsic3Vic2NyaWJlci1wb3J0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCiAJCXsi cHVibGlzaGVyLXNlcnZlciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorCQl7InJl bW92ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAogCQl7InNvY2tldGRpciIsIHJl cXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAogCQl7InJlY292ZXJ5LXRpbWVvdXQiLCByZXF1 aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3QnfSwKIAkJeyJlbmFibGUtdHdvLXBoYXNlIiwgbm9fYXJn dW1lbnQsIE5VTEwsICdUJ30sCkBAIC0xOTk1LDcgKzIwNDUsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAogCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7CiAKLQl3aGlsZSAoKGMgPSBn ZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiZDpEOm5wOlA6czp0OlRVOnYiLAorCXdoaWxlICgoYyA9 IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJkOkQ6bnA6UDpSOnM6dDpUVTp2IiwKIAkJCQkJCQls b25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykKQEAg LTIwMjUsNiArMjA3NSwxMiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2Ug J1AnOgogCQkJCW9wdC5wdWJfY29ubmluZm9fc3RyID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJ YnJlYWs7CisJCQljYXNlICdSJzoKKwkJCQlpZiAoIXNpbXBsZV9zdHJpbmdfbGlzdF9tZW1iZXIo Jm9wdC5vYmplY3R0eXBlc190b19yZW1vdmUsIG9wdGFyZykpCisJCQkJCXNpbXBsZV9zdHJpbmdf bGlzdF9hcHBlbmQoJm9wdC5vYmplY3R0eXBlc190b19yZW1vdmUsIG9wdGFyZyk7CisJCQkJZWxz ZQorCQkJCQlwZ19mYXRhbCgib2JqZWN0IHR5cGUgXCIlc1wiIGlzIHNwZWNpZmllZCBtb3JlIHRo YW4gb25jZSBmb3IgLS1yZW1vdmUiLCBvcHRhcmcpOworCQkJCWJyZWFrOwogCQkJY2FzZSAncyc6 CiAJCQkJb3B0LnNvY2tldF9kaXIgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQljYW5vbmljYWxp emVfcGF0aChvcHQuc29ja2V0X2Rpcik7CkBAIC0yMTg5LDYgKzIyNDUsMTkgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCWV4aXQoMSk7CiAJfQogCisJLyogVmVyaWZ5IHRoZSBvYmpl Y3QgdHlwZXMgc3BlY2lmaWVkIGZvciByZW1vdmFsIGZyb20gdGhlIHN1YnNjcmliZXIgKi8KKwlm b3IgKFNpbXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsID0gb3B0Lm9iamVjdHR5cGVzX3RvX3JlbW92 ZS5oZWFkOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dCkKKwl7CisJCWlmIChwZ19zdHJjYXNlY21w KGNlbGwtPnZhbCwgInB1YmxpY2F0aW9ucyIpID09IDApCisJCQlkYmluZm9zLm9iamVjdHR5cGVz X3RvX3JlbW92ZSB8PSBPQkpFQ1RUWVBFX1BVQkxJQ0FUSU9OUzsKKwkJZWxzZQorCQl7CisJCQlw Z19sb2dfZXJyb3IoImludmFsaWQgb2JqZWN0IHR5cGUgXCIlc1wiIHNwZWNpZmllZCBmb3IgLS1y ZW1vdmUiLCBjZWxsLT52YWwpOworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSB2YWxpZCBvcHRp b24gaXM6IFwicHVibGljYXRpb25zXCIiKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisKIAkvKiBH ZXQgdGhlIGFic29sdXRlIHBhdGggb2YgcGdfY3RsIGFuZCBwZ19yZXNldHdhbCBvbiB0aGUgc3Vi c2NyaWJlciAqLwogCXBnX2N0bF9wYXRoID0gZ2V0X2V4ZWNfcGF0aChhcmd2WzBdLCAicGdfY3Rs Iik7CiAJcGdfcmVzZXR3YWxfcGF0aCA9IGdldF9leGVjX3BhdGgoYXJndlswXSwgInBnX3Jlc2V0 d2FsIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wNDBfcGdfY3JlYXRl c3Vic2NyaWJlci5wbCBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJz Y3JpYmVyLnBsCmluZGV4IGMzNWZhMTA4Y2UzLi4yYzliZDViZGI5ZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwKKysrIGIvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwKQEAgLTMyOSw2 ICszMjksMjEgQEAgJG5vZGVfcC0+c2FmZV9wc3FsKCRkYjEsCiAJIkNSRUFURSBTVUJTQ1JJUFRJ T04gJGR1bW15X3N1YiBDT05ORUNUSU9OICdkYm5hbWU9ZHVtbXknIFBVQkxJQ0FUSU9OIHB1Yl9k dW1teSBXSVRIIChjb25uZWN0PWZhbHNlKSIKICk7CiAkbm9kZV9wLT53YWl0X2Zvcl9yZXBsYXlf Y2F0Y2h1cCgkbm9kZV9zKTsKKworIyBDcmVhdGUgdXNlci1kZWZpbmVkIHB1YmxpY2F0aW9ucywg d2FpdCBmb3Igc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHRvIHN5bmMgdGhlbQorIyB0byB0aGUgc3Rh bmRieSwgdGhlbiB2ZXJpZnkgdGhhdCAnLS1yZW1vdmUnCisjIHJlbW92ZXMgdGhlbS4KKyRub2Rl X3AtPnNhZmVfcHNxbCgKKwkkZGIxLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGVzdF9wdWIx IEZPUiBBTEwgVEFCTEVTOworCUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0X3B1YjIgRk9SIEFMTCBU QUJMRVM7CispKTsKKworJG5vZGVfcC0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfcyk7 CisKK29rKCRub2RlX3MtPnNhZmVfcHNxbCgkZGIxLCAiU0VMRUNUIENPVU5UKCopID0gMiBGUk9N IHBnX3B1YmxpY2F0aW9uIiksCisJJ3R3byBwcmUtZXhpc3RpbmcgcHVibGljYXRpb25zIG9uIHN1 YnNjcmliZXInKTsKKwogJG5vZGVfcy0+c3RvcDsKIAogIyBkcnkgcnVuIG1vZGUgb24gbm9kZSBT CkBAIC0zNzMsNyArMzg4LDggQEAgY29tbWFuZF9vaygKIAogIyBSdW4gcGdfY3JlYXRlc3Vic2Ny aWJlciBvbiBub2RlIFMuICAtLXZlcmJvc2UgaXMgdXNlZCB0d2ljZQogIyB0byBzaG93IG1vcmUg aW5mb3JtYXRpb24uCi0jIEluIHBhc3NpbmcsIGFsc28gdGVzdCB0aGUgLS1lbmFibGUtdHdvLXBo YXNlIG9wdGlvbgorIyBJbiBwYXNzaW5nLCBhbHNvIHRlc3QgdGhlIC0tZW5hYmxlLXR3by1waGFz ZSBvcHRpb24gYW5kCisjIC0tcmVtb3ZlIG9wdGlvbgogY29tbWFuZF9vaygKIAlbCiAJCSdwZ19j cmVhdGVzdWJzY3JpYmVyJywKQEAgLTM4OSw3ICs0MDUsOCBAQCBjb21tYW5kX29rKAogCQknLS1y ZXBsaWNhdGlvbi1zbG90JyA9PiAncmVwbHNsb3QyJywKIAkJJy0tZGF0YWJhc2UnID0+ICRkYjEs CiAJCSctLWRhdGFiYXNlJyA9PiAkZGIyLAotCQknLS1lbmFibGUtdHdvLXBoYXNlJworCQknLS1l bmFibGUtdHdvLXBoYXNlJywKKwkJJy0tcmVtb3ZlJyA9PiAncHVibGljYXRpb25zJywKIAldLAog CSdydW4gcGdfY3JlYXRlc3Vic2NyaWJlciBvbiBub2RlIFMnKTsKIApAQCAtNDA4LDYgKzQyNSwx MCBAQCAkbm9kZV9wLT5zYWZlX3BzcWwoJGRiMiwgIklOU0VSVCBJTlRPIHRibDIgVkFMVUVTKCdy b3cgMScpIik7CiAjIFN0YXJ0IHN1YnNjcmliZXIKICRub2RlX3MtPnN0YXJ0OwogCisjIENvbmZp cm0gcHVibGljYXRpb25zIGFyZSByZW1vdmVkIGZyb20gdGhlIHN1YnNjcmliZXIgbm9kZQoraXMo JG5vZGVfcy0+c2FmZV9wc3FsKCRkYjEsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19wdWJsaWNh dGlvbjsiKSwKKwknMCcsICdhbGwgcHVibGljYXRpb25zIG9uIHN1YnNjcmliZXIgaGF2ZSBiZWVu IHJlbW92ZWQnKTsKKwogIyBWZXJpZnkgdGhhdCBhbGwgc3VidHdvcGhhc2Ugc3RhdGVzIGFyZSBw ZW5kaW5nIG9yIGVuYWJsZWQsCiAjIGUuZy4gdGhlcmUgYXJlIG5vIHN1YnNjcmlwdGlvbnMgd2hl cmUgc3VidHdvcGhhc2UgaXMgZGlzYWJsZWQgKCdkJykKIGlzKCAkbm9kZV9zLT5zYWZlX3BzcWwo Ci0tIAoyLjQxLjAud2luZG93cy4zCgo= --000000000000af715c0630bdd7da--