]> jfr.im git - solanum.git/commit
m_sasl: Remove implicit abort on registration
authorEd Kellett <redacted>
Sat, 16 Oct 2021 23:00:55 +0000 (00:00 +0100)
committerDoug Freed <redacted>
Thu, 6 Oct 2022 21:06:28 +0000 (17:06 -0400)
commit06c53095343c2756208f6398bb7e00fb2cbe46dd
tree7decfe0ca9cfc8b2dae67e59de233d5189e800ea
parent687f290a6cc3c2c002be9f4a71245c3be3e58bab
m_sasl: Remove implicit abort on registration

This doesn't make sense in a world where post-registration SASL is
allowed, and should fix one case of an annoying login desync that's seen
in the real world.

Specifically, when a client sends its final AUTHENTICATE and Atheme
receives it, it sends an SVSLOGIN for that client. If the client sends
us its CAP END *before* we see the SVSLOGIN, the implicit abort will try
to abort the SASL session that's already succeeded.

Atheme interprets this as an instruction to forget about the successful
SASL session; you'll connect unidentified. But it's already sent
SVSLOGIN, which will log the client in ircd-side, causing ircd and
services views to differ until the user authenticates again manually.

I think allowing a SASL session to be aborted when it has already
succeeded is an Atheme bug, and it can still be triggered without this
change. But our behaviour here seems silly anyway.
NEWS.md
modules/m_sasl.c
tests/sasl_abort1.c