home · contact · privacy
Fix forgetting CAP :END if no sasl capability captured.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 9 Nov 2025 17:42:14 +0000 (18:42 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 9 Nov 2025 17:42:14 +0000 (18:42 +0100)
src/ircplom/client.py

index 66e987384329fca8211d38f3f0697645a6bab6ab..6b51caa4780f6f9f3b564c1a4e9ef7b34f50dade 100644 (file)
@@ -22,7 +22,9 @@ from ircplom.irc_conn import (
 from ircplom.msg_parse_expectations import MSG_EXPECTATIONS
 
 
-_NAMES_DESIRED_SERVER_CAPS = ('sasl',)
+_SASL_CAPNAME = 'sasl'
+_SASL_PLAIN = 'PLAIN'
+_NAMES_DESIRED_SERVER_CAPS = (_SASL_CAPNAME,)
 _DISCONNECT_MSG_REGEXES_TO_RETRY_ON = (
     r'^Closing Link: \(Connection timed out\)$',
     r'^Closing Link: \(Ping timeout: [0-9]+ seconds\)$'
@@ -790,13 +792,15 @@ class Client(ABC, ClientQueueMixin):
                               ).encode('utf-8')).decode('utf-8')
             self.send('AUTHENTICATE', auth)
         elif ret['_verb'] == 'CAP':
-            if (self.caps.process_msg(verb=ret['subverb'], items=ret['items'],
-                                      complete='tbc' not in ret)
-                    and 'sasl' in self.db.caps.keys()
-                    and 'PLAIN' in self.db.caps['sasl'].data.split(',')):
-                if self.db.password:
+            if (self.caps.process_msg(verb=ret['subverb'],
+                                      items=ret['items'],
+                                      complete='tbc' not in ret)):
+                if self.db.password\
+                        and _SASL_CAPNAME in self.db.caps.keys()\
+                        and _SASL_PLAIN in self.db.caps[_SASL_CAPNAME
+                                                        ].data.split(','):
                     self.db.sasl_auth_state = 'attempting'
-                    self.send('AUTHENTICATE', 'PLAIN')
+                    self.send('AUTHENTICATE', _SASL_PLAIN)
                 else:
                     self.caps.end_negotiation()
         elif ret['_verb'] == 'JOIN' and ret['joiner'] != self.db.users['me']: