self.db.port = PORT_SSL
         if not self.db.user_wanted:
             self.db.user_wanted = getuser()
+        self._autojoins: set[str] = set()
 
     def connect(self) -> None:
         'Attempt to open connection, on success perform session init steps.'
 
     def close(self) -> None:
         'Close connection and wipe memory of its states.'
+        if not self._autojoins:
+            for name in self.db.channels.keys():
+                self._autojoins.add(name)
         self.db.clear()
         if self.conn:
             self.conn.close()
                         setattr(node, tok_name, ret[tok_name])
                     else:
                         getattr(node, tok_name)()
-        if ret['_verb'] == '005':   # RPL_ISUPPORT
+        if ret['_verb'] == '001':   # RPL_WELCOME
+            for name in self._autojoins:
+                self.send('JOIN', name)
+            self._autojoins.clear()
+        elif ret['_verb'] == '005':   # RPL_ISUPPORT
             for item in ret['isupport']:
                 if item[0] == '-':
                     del self.db.isupport[item[1:]]