[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 28.0.50; buffer-naming collisions involving bouncers in ERC

From: J.P.
Subject: Re: 28.0.50; buffer-naming collisions involving bouncers in ERC
Date: Mon, 14 Mar 2022 06:08:42 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

Update #5.


 The travails of trying to make the term "session" stick in some form or
 fashion have led me to abandon the effort entirely. At the end of the
 day, it's just too overloaded (not least within ERC itself). Instead,
 I've opted to lean on the inherent namespacing provided by the
 erc-networks module(/feature) and base everything around the arguably
 more ambiguous `erc-networks--id'.

 As a consequence, nearly all new naming- and identity-related functions
 have been relocated to erc-networks.el and rebranded under its feature
 banner. IMO, this is much more maintainable because nearly everything
 associated with this initiative now lives under one roof. Moreover,
 it's come to my attention that the term "network identity" has been
 adopted by an influential project for much the same purpose.


 There's been a change in course with respect to the makeup of internal
 buffer-target objects. At the time of the last update (#4), a unified
 struct played host to all three flavors: query, channel, and local
 channel. I've since decided to err instead on the side of inheritance,
 albeit for equally flimsy reasons (like, for example, that it's easier
 to dispatch on struct type should the need arise). But the move may
 also allow for a more convenient means of separation if we ever want to
 track variant-specific state that's also context dependent (e.g.,
 detached, parted, etc.) or store miscellaneous ephemera, such as
 short-lived timers watching for server-initiated MODE bursts (324/329).


 Additional efforts to unify ERC's interactions with auth-source have
 led to the possible need to require erc-compat by default. I've held
 off on doing so proactively, but it may end up being inevitable. As a
 side note, related changes made to this working version of 5.4.1 by a
 well-meaning visitor[1] (obviously unaware that we're tethered to
 27) will be nullified by this series.


 I've tacked on another piggyback patch (at least temporarily) for the
 same tenuous reason as before: its tests depend on changes introduced
 herein. This one, though, affects basic functionality and has to do
 with ERC only partially exempting PONGs from flood protection -- PONGs
 and any other "forced" outgoing messages. (Un)surprisingly, this issue
 has always existed but has only recently come to light due to the
 growing popularity of a newish bouncer called Soju and its apparent
 practice of using a PING's nonce for ACKing[2]. The end result is ERC
 users being unable to transmit during times of heavy aggregate traffic.
 And without modern features like `echo-message' available, users are
 left to suffer in the dark, wondering what gives.

Until next time,

P.S. As always, the attached snapshot is mainly for posterity, and the
latest set can be found elsewhere[3].

[1] https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ad5cf84f
[2] https://git.sr.ht/~emersion/soju/tree/fdf97276/item/downstream.go#L604
[3] https://jpneverwas.gitlab.io/erc-tools/48598/patches.tar.gz

Attachment: 0001-Customize-displaying-of-ERC-buffers-on-reconnect.patch
Description: Text Data

Attachment: 0002-Allow-exemption-from-flood-penalty-in-erc-backend.patch
Description: Text Data

Attachment: 0003-Don-t-set-erc-server-announced-name-unless-known.patch
Description: Text Data

Attachment: 0004-Require-erc-networks-in-erc.el.patch
Description: Text Data

Attachment: 0005-Update-ISUPPORT-handling-in-ERC.patch
Description: Text Data

Attachment: 0006-Recognize-ascii-and-strict-CASEMAPPINGs-in-ERC.patch
Description: Text Data

Attachment: 0007-Make-ERC-respect-spaces-in-server-passwords.patch
Description: Text Data

Attachment: 0008-Add-helper-to-determine-local-channels-in-ERC.patch
Description: Text Data

Attachment: 0009-Add-eventual-replacement-for-erc-default-recipients.patch
Description: Text Data

Attachment: 0010-Discourage-ill-defined-use-of-buffer-targets-in-ERC.patch
Description: Text Data

Attachment: 0011-Add-ERC-test-server-and-related-resources.patch
Description: Text Data

Attachment: 0012-Address-long-standing-ERC-buffer-naming-issues.patch
Description: Text Data

Attachment: 0013-SQUASH-ME-Add-user-oriented-test-scenarios-for-ERC.patch
Description: Text Data

Attachment: 0014-Register-erc-kill-buffer-function-locally.patch
Description: Text Data

Attachment: 0015-Don-t-call-erc-auto-query-twice-on-PRIVMSG.patch
Description: Text Data

Attachment: 0016-SQUASH-ME-Add-ERC-scenarios-for-identity-aware-msg-h.patch
Description: Text Data

Attachment: 0017-Favor-network-identities-in-erc-join.patch
Description: Text Data

Attachment: 0018-SQUASH-ME-Add-ERC-test-scenarios-for-identity-aware-.patch
Description: Text Data

Attachment: 0019-Standardize-auth-source-queries-in-ERC.patch
Description: Text Data

Attachment: 0020-SQUASH-ME-Add-ERC-test-scenarios-involving-auth-sour.patch
Description: Text Data

Attachment: 0021-SQUASH-ME-Add-ERC-test-scenario-for-erc-cmd-JOIN.patch
Description: Text Data

Attachment: 0022-Update-ERC-s-Info-doc-with-network-ID-related-change.patch
Description: Text Data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]