X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorenetwork.cpp;h=f05618385a0ed1833568042c314a0a7f5e38ad5f;hp=7a34d659d3455469dd89af00c5c686604e6bde6c;hb=453ccab6ade4a21c7aa3c331af893c91468250a4;hpb=f824db0e31b54969e0b7fa0b5405b1e9173d482c diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index 7a34d659..f0561838 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -82,6 +82,8 @@ CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session) CoreNetwork::~CoreNetwork() { if(connectionState() != Disconnected && connectionState() != Network::Reconnecting) disconnectFromIrc(false); // clean up, but this does not count as requested disconnect! + else + socket.close(); disconnect(&socket, 0, this, 0); // this keeps the socket from triggering events during clean up delete _ircServerHandler; delete _userInputHandler; @@ -404,19 +406,21 @@ void CoreNetwork::sendPerform() { } // rejoin channels we've been in - QStringList channels, keys; - foreach(QString chan, persistentChannels()) { - QString key = channelKey(chan); - if(!key.isEmpty()) { - channels.prepend(chan); - keys.prepend(key); - } else { - channels.append(chan); + if(rejoinChannels()) { + QStringList channels, keys; + foreach(QString chan, coreSession()->persistentChannels(networkId()).keys()) { + QString key = channelKey(chan); + if(!key.isEmpty()) { + channels.prepend(chan); + keys.prepend(key); + } else { + channels.append(chan); + } } + QString joinString = QString("%1 %2").arg(channels.join(",")).arg(keys.join(",")).trimmed(); + if(!joinString.isEmpty()) + userInputHandler()->handleJoin(statusBuf, joinString); } - QString joinString = QString("%1 %2").arg(channels.join(",")).arg(keys.join(",")).trimmed(); - if(!joinString.isEmpty()) - userInputHandler()->handleJoin(statusBuf, joinString); } void CoreNetwork::setUseAutoReconnect(bool use) {