From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#58877: 29.0.50; [PATCH] When killing Emacs from a client frame with no other frames, Emacs shows a useless error prompt Date: Sun, 30 Oct 2022 14:14:59 -0700 Message-ID: <13835614-c593-ba2d-5373-a9950f6f3dab@gmail.com> References: <8121efd5-77c3-0682-ce0f-6be9375dadd8@gmail.com> <83a65dhm7f.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------3GBLHKzCHc5luDdDPtaJENk9" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38147"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 58877@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Oct 30 22:16:41 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1opFfc-0009jF-7c for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 30 Oct 2022 22:16:40 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opFf2-0005s5-NQ; Sun, 30 Oct 2022 17:16:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1opFf1-0005ro-3p for bug-gnu-emacs@gnu.org; Sun, 30 Oct 2022 17:16:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1opFf0-0002pb-SG for bug-gnu-emacs@gnu.org; Sun, 30 Oct 2022 17:16:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1opFf0-0008Pu-NB for bug-gnu-emacs@gnu.org; Sun, 30 Oct 2022 17:16:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 30 Oct 2022 21:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58877 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 58877-submit@debbugs.gnu.org id=B58877.166716451132271 (code B ref 58877); Sun, 30 Oct 2022 21:16:02 +0000 Original-Received: (at 58877) by debbugs.gnu.org; 30 Oct 2022 21:15:11 +0000 Original-Received: from localhost ([127.0.0.1]:39083 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1opFeA-0008OQ-Ct for submit@debbugs.gnu.org; Sun, 30 Oct 2022 17:15:11 -0400 Original-Received: from mail-pj1-f43.google.com ([209.85.216.43]:38500) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1opFe8-0008OC-0J for 58877@debbugs.gnu.org; Sun, 30 Oct 2022 17:15:08 -0400 Original-Received: by mail-pj1-f43.google.com with SMTP id l22-20020a17090a3f1600b00212fbbcfb78so14268919pjc.3 for <58877@debbugs.gnu.org>; Sun, 30 Oct 2022 14:15:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=JrgU9dWAska7YI67clceWpiroACmd4YnljJZfnZpspk=; b=egb7cM2HdiVHA5O7jgrJnFhS4iTwt2XBDTviPmluRGjQ6LFHT96Ysf+YLTjWBpMfep V401zTVivqq9iWts+eDuNHbT+TLpZojX+iMjNn92124LXwoDq+MdO6ugrxrIwONk7Rcc R9p5jHlQ/Sb4WN4llOH+LEAa8424L2GIliotYqAzpTNQs1wf3Uli2UYSEm0oS3WZYP0W UFn6dqOvlsj13dCNc+nX6TP+P53D70wunbqwCQnmXDfYTwimrLoAoKbFRlshkpVb6vMs RS1i+pXp4HBUm515qhQCIvTUU5yKwTIC4h2RP8Xr+zLK0oSACsYbTMOQuNK86Kml8vZZ 6Y4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=JrgU9dWAska7YI67clceWpiroACmd4YnljJZfnZpspk=; b=yWaRMvQP7czYEXTqkD+iSA0OT2xUMcM6CzkCuXnuz00U7tgLqwTqMkwU8Suhtwz1/B uBa+Ngmzu1J20A7M0hF6RZTSRYjm7707Wgrhr78X/YMXReK/UJotJZJymMnpo8buwx0z uZam/YZ73ihnbWBXjgkGuKKLALTgQKlBSF8zDxeWzqsychthmbJ5/yUfNmrDJDX30D4v rVSPGjtcEKCKesorHOh0Ljp1y/Am0v4BQxlIFV2uaIZfV1aa6Z6011DabWr1tlTMnV2m EswnYtA5slwfM8oiLL18t8FTuTlx8yeD3YP3O/PIgg6fWi3sD2FGp8ZHLxoM6vAYxR3T 1o9w== X-Gm-Message-State: ACrzQf1y8+tMErhZ3G7bveszhKg4o/1OUsAUQh0UiXCwvKcEBGkrDAPB 8VkY6+O4G/FlcxGG6HdTUHY= X-Google-Smtp-Source: AMsMyM71SVsutuPdBCa3LyQVmf1/bul2QkaqkU8iZ+oA5QlP0UDUaSHg0I7gJYkIGHGpHepA3G9nVg== X-Received: by 2002:a17:902:ec8e:b0:186:de89:7f66 with SMTP id x14-20020a170902ec8e00b00186de897f66mr11024261plg.160.1667164501909; Sun, 30 Oct 2022 14:15:01 -0700 (PDT) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id pj14-20020a17090b4f4e00b00212cf2fe8c3sm21275853pjb.1.2022.10.30.14.14.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 30 Oct 2022 14:15:00 -0700 (PDT) Content-Language: en-US In-Reply-To: <83a65dhm7f.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "bug-gnu-emacs" Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:246650 Archived-At: This is a multi-part message in MIME format. --------------3GBLHKzCHc5luDdDPtaJENk9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 10/29/2022 11:14 PM, Eli Zaretskii wrote: >> Date: Sat, 29 Oct 2022 14:33:42 -0700 >> From: Jim Porter >> >> Attached is a patch to do this. Note that I named the new argument >> "noframe" because that matches the existing code in server.el (see >> 'server-delete-client'). It's a bit of a misnomer though, and maybe >> "keep-frames" would be better... > > Hmm... it doesn't look very elegant to add to server-start an extra > argument whose purpose is to affect server-delete-client. Can we do > this in some more elegant way? For example, how about making most of > the code in server-start an internal function with an additional > argument, and then have server-start and server-force-stop call that > internal function? At the very least the new argument to server-start > shouldn't be advertised, I think, since it's entirely for internal use > by us. Thanks for taking a look. I had hesitated to make any big changes to this code since it doesn't have regression tests, but I think the attached patch should be more elegant while retaining the flow of the code as much as possible. Do you know of a good way to write regression tests for this code? I couldn't find any existing tests that start/stop Emacs processes in a way that I could use for testing this. It seems like we'd need to be able to start a new Emacs process and then be able to send arbitrary key combinations to it to drive it... Back to the patch itself though: one small functional change I made was that I slightly changed how 'server-ensure-safe-dir' is called in 'server-start'. (I only mention this because this code looks to be security-related, so I think it should have extra attention.) It used to check the 'server-dir', defined as: (if server-use-tcp server-auth-dir server-socket-dir) Now, it checks the directory of the server *file*. The file is defined as: (expand-file-name server-name server-dir) This could be different if 'server-name' (a defcustom) contains a slash. I think the new code is actually safer, since it checks the proper directory even if a user customized 'server-name' to have a slash or '..' or whatever. Still, I thought this change deserved a mention so that I don't inadvertently open a security hole. --------------3GBLHKzCHc5luDdDPtaJENk9 Content-Type: text/plain; charset=UTF-8; name="0001-Don-t-explicitly-delete-client-frames-when-killing-E.patch" Content-Disposition: attachment; filename*0="0001-Don-t-explicitly-delete-client-frames-when-killing-E.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NGVlMjU2YWRhYWQ1M2EzODcxMmNhMTk0YmQ5ZTFiYThiMDBhMzk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IEZyaSwgMTkgTm92IDIwMjEgMjA6MTQ6MzMgLTA4MDAKU3ViamVjdDogW1BB VENIXSBEb24ndCBleHBsaWNpdGx5IGRlbGV0ZSBjbGllbnQgZnJhbWVzIHdoZW4ga2lsbGlu ZyBFbWFjcwogYW55d2F5CgpUaGlzIGVsaW1pbmF0ZXMgYSB1c2VsZXNzIGVycm9yIHByb21w dCB3aGVuIGtpbGxpbmcgRW1hY3MgZnJvbSBhCmNsaWVudCBmcmFtZSB3aGVuIHRoZXJlIGFy ZSBubyBvdGhlciBmcmFtZXMgKGJ1ZyM1ODg3NykuCgoqIGxpc3Avc2VydmVyLmVsIChzZXJ2 ZXItcnVubmluZy1leHRlcm5hbCk6IE5ldyBlcnJvci4KKHNlcnZlci0tZmlsZS1uYW1lKTog TmV3IGZ1bmN0aW9uLi4uCihzZXJ2ZXItZXZhbC1hdCk6IC4uLiB1c2UgaXQuCihzZXJ2ZXIt c3RhcnQpOiBGYWN0b3Igb3V0IHNlcnZlciBzdG9wcGluZyBjb2RlIGludG8uLi4KKHNlcnZl ci1zdG9wKTogLi4uIGhlcmUuCihzZXJ2ZXItZm9yY2Utc3RvcCk6IFVzZSAnc2VydmVyLXN0 b3AnLCBhbmQgdGVsbCBpdCBub3QgdG8gZGVsZXRlCmZyYW1lcy4KLS0tCiBsaXNwL3NlcnZl ci5lbCB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9zZXJ2ZXIuZWwgYi9saXNwL3NlcnZlci5lbAppbmRl eCA5MGQ5N2MxNTM4Li4wOTVkZTA2Y2Y5IDEwMDY0NAotLS0gYS9saXNwL3NlcnZlci5lbAor KysgYi9saXNwL3NlcnZlci5lbApAQCAtMjg3LDYgKzI4Nyw4IEBAIHNlcnZlci1zb2NrZXQt ZGlyCiAgICJUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIHBsYWNlIHRoZSBzZXJ2ZXIgc29j a2V0LgogSWYgbG9jYWwgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZCwgdGhpcyBpcyBuaWwu IikKIAorKGRlZmluZS1lcnJvciAnc2VydmVyLXJ1bm5pbmctZXh0ZXJuYWwgIkV4dGVybmFs IHNlcnZlciBydW5uaW5nIikKKwogKGRlZnVuIHNlcnZlci1jbGllbnRzLXdpdGggKHByb3Bl cnR5IHZhbHVlKQogICAiUmV0dXJuIGEgbGlzdCBvZiBjbGllbnRzIHdpdGggUFJPUEVSVFkg c2V0IHRvIFZBTFVFLiIKICAgKGxldCAocmVzdWx0KQpAQCAtNjEwLDYgKzYxMiw1OSBAQCBz ZXJ2ZXItZ2V0LWF1dGgta2V5CiAgICAgICAoZXJyb3IgIlRoZSBrZXkgYCVzJyBpcyBpbnZh bGlkIiBzZXJ2ZXItYXV0aC1rZXkpKQogICAgIChzZXJ2ZXItZ2VuZXJhdGUta2V5KSkpCiAK KyhkZWZzdWJzdCBzZXJ2ZXItLWZpbGUtbmFtZSAoKQorICAiUmV0dXJuIHRoZSBmaWxlIG5h bWUgdG8gdXNlIGZvciB0aGUgc2VydmVyIHNvY2tldC4iCisgIChsZXQgKChzZXJ2ZXItZGly IChpZiBzZXJ2ZXItdXNlLXRjcCBzZXJ2ZXItYXV0aC1kaXIgc2VydmVyLXNvY2tldC1kaXIp KSkKKyAgICAoZXhwYW5kLWZpbGUtbmFtZSBzZXJ2ZXItbmFtZSBzZXJ2ZXItZGlyKSkpCisK KyhkZWZ1biBzZXJ2ZXItc3RvcCAoJm9wdGlvbmFsIG5vZnJhbWUpCisgICJJZiB0aGlzIEVt YWNzIHByb2Nlc3MgaGFzIGEgc2VydmVyIGNvbW11bmljYXRpb24gc3VicHJvY2Vzcywgc3Rv cCBpdC4KK0lmIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyBpbiBzb21lIG90aGVyIEVtYWMgcHJv Y2VzcyAoc2VlCitgc2VydmVyLXJ1bm5pbmctcCcpLCBzaWduYWwgYSBgc2VydmVyLXJ1bm5p bmctZXh0ZXJuYWwnIGVycm9yLgorCitJZiBOT0ZSQU1FIGlzIG5vbi1uaWwsIGRvbid0IGRl bGV0ZSBhbnkgZXhpc3RpbmcgZnJhbWVzCithc3NvY2lhdGVkIHdpdGggYSBjbGllbnQgcHJv Y2Vzcy4gIFRoaXMgaXMgdXNlZnVsLCBmb3IgZXhhbXBsZSwKK3doZW4ga2lsbGluZyBFbWFj cywgaW4gd2hpY2ggY2FzZSB0aGUgZnJhbWVzIHdpbGwgZ2V0IGRlbGV0ZWQKK2FueXdheS4i CisgIChsZXQgKChzZXJ2ZXItZmlsZSAoc2VydmVyLS1maWxlLW5hbWUpKSkKKyAgICAod2hl biBzZXJ2ZXItcHJvY2VzcworICAgICAgOzsgS2lsbCBpdCBkZWFkIQorICAgICAgKGlnbm9y ZS1lcnJvcnMgKGRlbGV0ZS1wcm9jZXNzIHNlcnZlci1wcm9jZXNzKSkKKyAgICAgICh1bmxl c3Mgbm9mcmFtZQorICAgICAgICAoc2VydmVyLWxvZyAobWVzc2FnZSAiU2VydmVyIHN0b3Bw ZWQiKSkpCisgICAgICAoc2V0cSBzZXJ2ZXItcHJvY2VzcyBuaWwpKQorICAgICh1bndpbmQt cHJvdGVjdAorICAgICAgICA7OyBDaGVjayB0byBzZWUgaWYgYW4gdW5pbml0aWFsaXplZCBl eHRlcm5hbCBzb2NrZXQgaGFzIGJlZW4KKyAgICAgICAgOzsgcGFzc2VkIGluLiAgSWYgdGhh dCBpcyB0aGUgY2FzZSwgc2tpcCBjaGVja2luZworICAgICAgICA7OyBgc2VydmVyLXJ1bm5p bmctcCcgYXMgdGhpcyB3aWxsIHJldHVybiB0aGUgd3JvbmcgcmVzdWx0LgorICAgICAgICAo aWYgKGFuZCBpbnRlcm5hbC0tZGFlbW9uLXNvY2tuYW1lCisgICAgICAgICAgICAgICAgIChu b3Qgc2VydmVyLS1leHRlcm5hbC1zb2NrZXQtaW5pdGlhbGl6ZWQpKQorICAgICAgICAgICAg KHNldHEgc2VydmVyLS1leHRlcm5hbC1zb2NrZXQtaW5pdGlhbGl6ZWQgdCkKKyAgICAgICAg ICA7OyBEZWxldGUgdGhlIHNvY2tldCBmaWxlcyBtYWRlIGJ5IHByZXZpb3VzIHNlcnZlcgor ICAgICAgICAgIDs7IGludm9jYXRpb25zLgorICAgICAgICAgIChpZiAobm90IChlcSB0IChz ZXJ2ZXItcnVubmluZy1wIHNlcnZlci1uYW1lKSkpCisgICAgICAgICAgICAgIDs7IFJlbW92 ZSBhbnkgbGVmdG92ZXIgc29ja2V0IG9yIGF1dGhlbnRpY2F0aW9uIGZpbGUuCisgICAgICAg ICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAgICAgICAgICAgICAgKGxldCAoZGVsZXRlLWJ5 LW1vdmluZy10by10cmFzaCkKKyAgICAgICAgICAgICAgICAgIChkZWxldGUtZmlsZSBzZXJ2 ZXItZmlsZSkKKyAgICAgICAgICAgICAgICAgIDs7IEFsc28gZGVsZXRlIHRoZSBkaXJlY3Rv cnkgdGhhdCB0aGUgc2VydmVyIGZpbGUgd2FzCisgICAgICAgICAgICAgICAgICA7OyBjcmVh dGVkIGluIC0tIGJ1dCBvbmx5IGluIC90bXAgKHNlZSBidWcjNDQ2NDQpLgorICAgICAgICAg ICAgICAgICAgOzsgVGhlcmUgbWF5IGJlIG90aGVyIHNlcnZlcnMgcnVubmluZywgdG9vLCBz byB0aGlzIG1heQorICAgICAgICAgICAgICAgICAgOzsgZmFpbC4KKyAgICAgICAgICAgICAg ICAgICh3aGVuIChlcXVhbCAoZmlsZS1uYW1lLWRpcmVjdG9yeQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZGlyZWN0b3J5LWZpbGUtbmFtZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3Rvcnkgc2VydmVyLWZpbGUpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3RtcC8iKQorICAgICAgICAgICAg ICAgICAgICAoaWdub3JlLWVycm9ycworICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUt ZGlyZWN0b3J5IChmaWxlLW5hbWUtZGlyZWN0b3J5IHNlcnZlci1maWxlKSkpKSkpCisgICAg ICAgICAgICAoc2V0cSBzZXJ2ZXItbW9kZSBuaWwpIDs7IGFscmVhZHkgc2V0IGJ5IHRoZSBt aW5vciBtb2RlIGNvZGUKKyAgICAgICAgICAgIChzaWduYWwgJ3NlcnZlci1ydW5uaW5nLWV4 dGVybmFsCisgICAgICAgICAgICAgICAgICAgIChsaXN0IChmb3JtYXQgIlRoZXJlIGlzIGFu IGV4aXN0aW5nIEVtYWNzIHNlcnZlciwgbmFtZWQgJVMuIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcnZlci1uYW1lKSkpKSkKKyAgICAgIDs7IElmIHRoaXMgRW1h Y3MgYWxyZWFkeSBoYWQgYSBzZXJ2ZXIsIGNsZWFyIG91dCBhc3NvY2lhdGVkIHN0YXR1cy4K KyAgICAgICh3aGlsZSBzZXJ2ZXItY2xpZW50cworICAgICAgICAoc2VydmVyLWRlbGV0ZS1j bGllbnQgKGNhciBzZXJ2ZXItY2xpZW50cykgbm9mcmFtZSkpKSkpCisKIDs7OyMjI2F1dG9s b2FkCiAoZGVmdW4gc2VydmVyLXN0YXJ0ICgmb3B0aW9uYWwgbGVhdmUtZGVhZCBpbmhpYml0 LXByb21wdCkKICAgIkFsbG93IHRoaXMgRW1hY3MgcHJvY2VzcyB0byBiZSBhIHNlcnZlciBm b3IgY2xpZW50IHByb2Nlc3Nlcy4KQEAgLTY0Myw1NSArNjk4LDI1IEBAIHNlcnZlci1zdGFy dAogCSAgICAgKGluaGliaXQtcHJvbXB0IHQpCiAJICAgICAodCAoeWVzLW9yLW5vLXAKIAkJ ICJUaGUgY3VycmVudCBzZXJ2ZXIgc3RpbGwgaGFzIGNsaWVudHM7IGRlbGV0ZSB0aGVtPyAi KSkpKQotICAgIChsZXQqICgoc2VydmVyLWRpciAoaWYgc2VydmVyLXVzZS10Y3Agc2VydmVy LWF1dGgtZGlyIHNlcnZlci1zb2NrZXQtZGlyKSkKLQkgICAoc2VydmVyLWZpbGUgKGV4cGFu ZC1maWxlLW5hbWUgc2VydmVyLW5hbWUgc2VydmVyLWRpcikpKQotICAgICAgKHdoZW4gc2Vy dmVyLXByb2Nlc3MKLQk7OyBraWxsIGl0IGRlYWQhCi0JKGlnbm9yZS1lcnJvcnMgKGRlbGV0 ZS1wcm9jZXNzIHNlcnZlci1wcm9jZXNzKSkpCi0gICAgICA7OyBDaGVjayB0byBzZWUgaWYg YW4gdW5pbml0aWFsaXplZCBleHRlcm5hbCBzb2NrZXQgaGFzIGJlZW4KLSAgICAgIDs7IHBh c3NlZCBpbiwgaWYgdGhhdCBpcyB0aGUgY2FzZSwgc2tpcCBjaGVja2luZwotICAgICAgOzsg YHNlcnZlci1ydW5uaW5nLXAnIGFzIHRoaXMgd2lsbCByZXR1cm4gdGhlIHdyb25nIHJlc3Vs dC4KLSAgICAgIChpZiAoYW5kIGludGVybmFsLS1kYWVtb24tc29ja25hbWUKLSAgICAgICAg ICAgICAgIChub3Qgc2VydmVyLS1leHRlcm5hbC1zb2NrZXQtaW5pdGlhbGl6ZWQpKQotICAg ICAgICAgIChzZXRxIHNlcnZlci0tZXh0ZXJuYWwtc29ja2V0LWluaXRpYWxpemVkIHQpCi0g ICAgICAgIDs7IERlbGV0ZSB0aGUgc29ja2V0IGZpbGVzIG1hZGUgYnkgcHJldmlvdXMgc2Vy dmVyIGludm9jYXRpb25zLgotICAgICAgICAoaWYgKG5vdCAoZXEgdCAoc2VydmVyLXJ1bm5p bmctcCBzZXJ2ZXItbmFtZSkpKQotICAgICAgICAgICA7OyBSZW1vdmUgYW55IGxlZnRvdmVy IHNvY2tldCBvciBhdXRoZW50aWNhdGlvbiBmaWxlLgotICAgICAgICAgICAoaWdub3JlLWVy cm9ycwotICAgICAgICAgICAgIChsZXQgKGRlbGV0ZS1ieS1tb3ZpbmctdG8tdHJhc2gpCi0g ICAgICAgICAgICAgICAoZGVsZXRlLWZpbGUgc2VydmVyLWZpbGUpCi0gICAgICAgICAgICAg ICA7OyBBbHNvIGRlbGV0ZSB0aGUgZGlyZWN0b3J5IHRoYXQgdGhlIHNlcnZlciBmaWxlIHdh cwotICAgICAgICAgICAgICAgOzsgY3JlYXRlZCBpbiAtLSBidXQgb25seSBpbiAvdG1wIChz ZWUgYnVnIzQ0NjQ0KS4KLSAgICAgICAgICAgICAgIDs7IFRoZXJlIG1heSBiZSBvdGhlciBz ZXJ2ZXJzIHJ1bm5pbmcsIHRvbywgc28gdGhpcyBtYXkKLSAgICAgICAgICAgICAgIDs7IGZh aWwuCi0gICAgICAgICAgICAgICAod2hlbiAoZXF1YWwgKGZpbGUtbmFtZS1kaXJlY3RvcnkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpcmVjdG9yeS1maWxlLW5hbWUKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IHNlcnZl ci1maWxlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90bXAvIikKLSAgICAg ICAgICAgICAgICAgKGlnbm9yZS1lcnJvcnMKLSAgICAgICAgICAgICAgICAgICAoZGVsZXRl LWRpcmVjdG9yeSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBzZXJ2ZXItZmlsZSkpKSkpKQotICAg ICAgICAgKHNldHEgc2VydmVyLW1vZGUgbmlsKSA7OyBhbHJlYWR5IHNldCBieSB0aGUgbWlu b3IgbW9kZSBjb2RlCi0gICAgICAgICAoZGlzcGxheS13YXJuaW5nCi0gICAgICAgICAgJ3Nl cnZlcgotICAgICAgICAgIChjb25jYXQgIlVuYWJsZSB0byBzdGFydCB0aGUgRW1hY3Mgc2Vy dmVyLlxuIgotICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiVGhlcmUgaXMgYW4gZXhpc3Rp bmcgRW1hY3Mgc2VydmVyLCBuYW1lZCAlUy5cbiIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmVyLW5hbWUpCi0gICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZS1jb21tYW5k LWtleXMKLSAgICAgICAgICAgICAgICAgICAgIlRvIHN0YXJ0IHRoZSBzZXJ2ZXIgaW4gdGhp cyBFbWFjcyBwcm9jZXNzLCBzdG9wIHRoZSBleGlzdGluZworICAgIDs7IElmIGEgc2VydmVy IGlzIGFscmVhZHkgcnVubmluZywgdHJ5IHRvIHN0b3AgaXQuCisgICAgKGNvbmRpdGlvbi1j YXNlIGVycgorICAgICAgICAoc2VydmVyLXN0b3ApCisgICAgICAoc2VydmVyLXJ1bm5pbmct ZXh0ZXJuYWwKKyAgICAgICAoZGlzcGxheS13YXJuaW5nCisgICAgICAgICdzZXJ2ZXIKKyAg ICAgICAgKGNvbmNhdCAiVW5hYmxlIHRvIHN0YXJ0IHRoZSBFbWFjcyBzZXJ2ZXIuXG4iCisg ICAgICAgICAgICAgICAgKGNhZHIgZXJyKQorICAgICAgICAgICAgICAgIChzdWJzdGl0dXRl LWNvbW1hbmQta2V5cworICAgICAgICAgICAgICAgICAiXG5UbyBzdGFydCB0aGUgc2VydmVy IGluIHRoaXMgRW1hY3MgcHJvY2Vzcywgc3RvcCB0aGUgZXhpc3RpbmcKIHNlcnZlciBvciBj YWxsIGBcXFtzZXJ2ZXItZm9yY2UtZGVsZXRlXScgdG8gZm9yY2libHkgZGlzY29ubmVjdCBp dC4iKSkKLSAgICAgICAgICA6d2FybmluZykKLSAgICAgICAgIChzZXRxIGxlYXZlLWRlYWQg dCkpKQotICAgICAgOzsgSWYgdGhpcyBFbWFjcyBhbHJlYWR5IGhhZCBhIHNlcnZlciwgY2xl YXIgb3V0IGFzc29jaWF0ZWQgc3RhdHVzLgotICAgICAgKHdoaWxlIHNlcnZlci1jbGllbnRz Ci0JKHNlcnZlci1kZWxldGUtY2xpZW50IChjYXIgc2VydmVyLWNsaWVudHMpKSkKLSAgICAg IDs7IE5vdyBhbnkgcHJldmlvdXMgc2VydmVyIGlzIHByb3Blcmx5IHN0b3BwZWQuCi0gICAg ICAoaWYgbGVhdmUtZGVhZAotCSAgKHByb2duCi0JICAgICh1bmxlc3MgKGVxIHQgbGVhdmUt ZGVhZCkgKHNlcnZlci1sb2cgKG1lc3NhZ2UgIlNlcnZlciBzdG9wcGVkIikpKQotCSAgICAo c2V0cSBzZXJ2ZXItcHJvY2VzcyBuaWwpKQotCTs7IE1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNh ZmUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIHBsYWNlIHRoZSBzb2NrZXQuCi0JKHNlcnZlci1l bnN1cmUtc2FmZS1kaXIgc2VydmVyLWRpcikKLQkod2hlbiBzZXJ2ZXItcHJvY2VzcworICAg ICAgICA6d2FybmluZykKKyAgICAgICAoc2V0cSBsZWF2ZS1kZWFkIHQpKSkKKyAgICA7OyBO b3cgYW55IHByZXZpb3VzIHNlcnZlciBpcyBwcm9wZXJseSBzdG9wcGVkLgorICAgICh1bmxl c3MgbGVhdmUtZGVhZAorICAgICAgKGxldCAoKHNlcnZlci1maWxlIChzZXJ2ZXItLWZpbGUt bmFtZSkpKQorICAgICAgICA7OyBNYWtlIHN1cmUgdGhlcmUgaXMgYSBzYWZlIGRpcmVjdG9y eSBpbiB3aGljaCB0byBwbGFjZSB0aGUgc29ja2V0LgorICAgICAgICAoc2VydmVyLWVuc3Vy ZS1zYWZlLWRpciAoZmlsZS1uYW1lLWRpcmVjdG9yeSBzZXJ2ZXItZmlsZSkpCisgICAgICAg ICh3aGVuIHNlcnZlci1wcm9jZXNzCiAJICAoc2VydmVyLWxvZyAobWVzc2FnZSAiUmVzdGFy dGluZyBzZXJ2ZXIiKSkpCiAgICAgICAgICh3aXRoLWZpbGUtbW9kZXMgP1w3MDAKIAkgIChh ZGQtaG9vayAnc3VzcGVuZC10dHktZnVuY3Rpb25zICMnc2VydmVyLWhhbmRsZS1zdXNwZW5k LXR0eSkKQEAgLTc0Miw3ICs3NjcsNyBAQCBzZXJ2ZXItc3RhcnQKIChkZWZ1biBzZXJ2ZXIt Zm9yY2Utc3RvcCAoKQogICAiS2lsbCBhbGwgY29ubmVjdGlvbnMgdG8gdGhlIGN1cnJlbnQg c2VydmVyLgogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBga2ls bC1lbWFjcy1ob29rJy4iCi0gIChzZXJ2ZXItc3RhcnQgdCB0KSkKKyAgKGlnbm9yZS1lcnJv cnMgKHNlcnZlci1zdG9wICdub2ZyYW1lKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4g c2VydmVyLWZvcmNlLWRlbGV0ZSAoJm9wdGlvbmFsIG5hbWUpCkBAIC0xODU4LDExICsxODgz LDEwIEBAIHNlcnZlci1ldmFsLWF0CiBjYW5ub3QgY29udGFjdCB0aGUgc3BlY2lmaWVkIHNl cnZlci4gIEZvciBleGFtcGxlOgogICAoc2VydmVyLWV2YWwtYXQgXCJzZXJ2ZXJcIiBcXD0n KGVtYWNzLXBpZCkpCiByZXR1cm5zIHRoZSBwcm9jZXNzIElEIG9mIHRoZSBFbWFjcyBpbnN0 YW5jZSBydW5uaW5nIFwic2VydmVyXCIuIgotICAobGV0KiAoKHNlcnZlci1kaXIgKGlmIHNl cnZlci11c2UtdGNwIHNlcnZlci1hdXRoLWRpciBzZXJ2ZXItc29ja2V0LWRpcikpCi0JIChz ZXJ2ZXItZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSBzZXJ2ZXIgc2VydmVyLWRpcikpCi0JIChj b2Rpbmctc3lzdGVtLWZvci1yZWFkICdiaW5hcnkpCi0JIChjb2Rpbmctc3lzdGVtLWZvci13 cml0ZSAnYmluYXJ5KQotCSBhZGRyZXNzIHBvcnQgc2VjcmV0IHByb2Nlc3MpCisgIChsZXQg KChzZXJ2ZXItZmlsZSAoc2VydmVyLS1maWxlLW5hbWUpKQorICAgICAgICAoY29kaW5nLXN5 c3RlbS1mb3ItcmVhZCAnYmluYXJ5KQorICAgICAgICAoY29kaW5nLXN5c3RlbS1mb3Itd3Jp dGUgJ2JpbmFyeSkKKyAgICAgICAgYWRkcmVzcyBwb3J0IHNlY3JldCBwcm9jZXNzKQogICAg ICh1bmxlc3MgKGZpbGUtZXhpc3RzLXAgc2VydmVyLWZpbGUpCiAgICAgICAoZXJyb3IgIk5v IHN1Y2ggc2VydmVyOiAlcyIgc2VydmVyKSkKICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotLSAK Mi4yNS4xCgo= --------------3GBLHKzCHc5luDdDPtaJENk9--