Add check for if _caps and _capsEnabled contain any capabilities. If
not, return from the clearCaps call without issuing a network SYNC.
Fixes needless clearCaps calls when reconnecting to a network that's
failing to connect.
This may cause inconsistency if clients miss some sync calls.. but
Quassel protocol currently depends on all sync calls being propogated
anyways.
void Network::clearCaps()
{
// IRCv3 specs all use lowercase capability names
+ if (_caps.empty() && _capsEnabled.empty()) {
+ // Avoid the sync call if there's nothing to clear (e.g. failed reconnects)
+ return;
+ }
// To ease core-side configuration, loop through the list and emit capRemoved for each entry.
// If performance issues arise, this can be converted to a more-efficient setup without breaking
// protocol (in theory).