From: Christian Heller Date: Thu, 21 Aug 2025 03:23:22 +0000 (+0200) Subject: Optimize handling of 396, discard not-yet-encountered special case. X-Git-Url: https://plomlompom.com/repos/error?a=commitdiff_plain;h=58ebe02bd8cc65486d0a95388c9c965b09078a3e;p=ircplom Optimize handling of 396, discard not-yet-encountered special case. --- diff --git a/ircplom/client.py b/ircplom/client.py index 81c2733..f63ed5c 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -24,7 +24,7 @@ class _MsgTok(Enum): NICKNAME = auto() NONE = auto() SERVER = auto() - USER_ADDRESS = auto() + NICK_USER_HOST = auto() _MsgTokGuide = str | _MsgTok | tuple[str | _MsgTok, str] @@ -133,7 +133,7 @@ _EXPECTATIONS += [ _MsgParseExpectation(_MsgTok.SERVER, '396', # RPL_VISIBLEHOST ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), - (_MsgTok.ANY, ':host_maybe_w_user'), + (_MsgTok.SERVER, 'set_db_attr:client_host'), _MsgTok.ANY)), ] @@ -142,7 +142,7 @@ _EXPECTATIONS += [ _MsgParseExpectation(_MsgTok.SERVER, '900', # RPL_LOGGEDIN ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), - (_MsgTok.USER_ADDRESS, ':full_address'), + (_MsgTok.NICK_USER_HOST, ':full_address'), (_MsgTok.ANY, 'set_db_attr:sasl_account'), _MsgTok.ANY)), _MsgParseExpectation(_MsgTok.SERVER, @@ -254,7 +254,7 @@ _EXPECTATIONS += [ (_MsgTok.NICKNAME, (_MsgTok.NICKNAME, ':used'), _MsgTok.ANY)), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':named'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':named'), 'NICK', ((_MsgTok.NICKNAME, ':nickname'),)), ] @@ -272,13 +272,13 @@ _EXPECTATIONS += [ ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), (_MsgTok.CHANNEL, ':channel'), _MsgTok.ANY)), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':joiner'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':joiner'), 'JOIN', ((_MsgTok.CHANNEL, ':channel'),)), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':parter'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':parter'), 'PART', ((_MsgTok.CHANNEL, ':channel'),)), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':parter'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':parter'), 'PART', ((_MsgTok.CHANNEL, ':channel'), (_MsgTok.ANY, ':reason'))), @@ -299,19 +299,19 @@ _EXPECTATIONS += [ 'NOTICE', ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), (_MsgTok.ANY, ':message'))), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':sender'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':sender'), 'NOTICE', ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), (_MsgTok.ANY, ':message'))), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':sender'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':sender'), 'NOTICE', ((_MsgTok.CHANNEL, ':channel'), (_MsgTok.ANY, ':message'))), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':sender'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':sender'), 'PRIVMSG', ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), (_MsgTok.ANY, ':message'))), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':sender'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':sender'), 'PRIVMSG', ((_MsgTok.CHANNEL, ':channel'), (_MsgTok.ANY, ':message'))), @@ -326,14 +326,14 @@ _EXPECTATIONS += [ 'MODE', ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), (_MsgTok.ANY, 'set_db_attr:user_modes'))), - _MsgParseExpectation(_MsgTok.USER_ADDRESS, + _MsgParseExpectation(_MsgTok.NICK_USER_HOST, 'MODE', ((_MsgTok.NICKNAME, 'set_db_attr:nickname'), (_MsgTok.ANY, 'set_db_attr:user_modes'))), _MsgParseExpectation(_MsgTok.NONE, 'PING', ((_MsgTok.ANY, ':reply'),)), - _MsgParseExpectation((_MsgTok.USER_ADDRESS, ':quitter'), + _MsgParseExpectation((_MsgTok.NICK_USER_HOST, ':quitter'), 'QUIT', ((_MsgTok.ANY, ':message'),)), ] @@ -817,7 +817,7 @@ class Client(ABC, ClientQueueMixin): } if msg_tok[0] == '#' else None if ex_tok is _MsgTok.NICKNAME: return msg_tok if msg_tok[0] not in '~&@%+# ' else None - if ex_tok is _MsgTok.USER_ADDRESS: + if ex_tok is _MsgTok.NICK_USER_HOST: toks = msg_tok.split('!') if len(toks) != 2: return None @@ -887,10 +887,6 @@ class Client(ABC, ClientQueueMixin): self._db.append_completable('motd', ret['line']) elif ret['verb'] == '376': # RPL_ENDOFMOTD self._db.declare_complete('motd') - elif ret['verb'] == '396': # RPL_VISIBLEHOST - # '@'-split because - # claims: " can also be in the form " - self._db.client_host = ret['host_maybe_w_user'].split('@')[-1] elif ret['verb'] == '401': # ERR_NOSUCHNICK self._log(f'{ret["target"]} not online', scope=LogScope.CHAT, target=ret['target'], alert=True)