X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=b57685420a27cdd65a1e45c3945bb4b29719b631;hp=d7b9cb19787c8cdbb74d6d77aae3ab4ed27010f5;hb=ef12cc4010e853348474b4ea15c383dd596d4858;hpb=cf7c5679c2475bb563cd64e15477c485d89368a3 diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index d7b9cb19..b5768542 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -396,19 +396,25 @@ void CoreSession::createNetwork(const NetworkInfo &info_) { if(!info.networkId.isValid()) Core::createNetwork(user(), info); - Q_ASSERT(info.networkId.isValid()); + if(!info.networkId.isValid()) { + qWarning() << qPrintable(tr("CoreSession::createNetwork(): Got invalid networkId from Core when trying to create network %1!").arg(info.networkName)); + return; + } id = info.networkId.toInt(); - Q_ASSERT(!_networks.contains(id)); - - Network *net = new Network(id, this); - connect(net, SIGNAL(connectRequested(NetworkId)), this, SLOT(connectToNetwork(NetworkId))); - connect(net, SIGNAL(disconnectRequested(NetworkId)), this, SLOT(disconnectFromNetwork(NetworkId))); - net->setNetworkInfo(info); - net->setProxy(signalProxy()); - _networks[id] = net; - signalProxy()->synchronize(net); - emit networkCreated(id); + if(!_networks.contains(id)) { + Network *net = new Network(id, this); + connect(net, SIGNAL(connectRequested(NetworkId)), this, SLOT(connectToNetwork(NetworkId))); + connect(net, SIGNAL(disconnectRequested(NetworkId)), this, SLOT(disconnectFromNetwork(NetworkId))); + net->setNetworkInfo(info); + net->setProxy(signalProxy()); + _networks[id] = net; + signalProxy()->synchronize(net); + emit networkCreated(id); + } else { + qWarning() << qPrintable(tr("CoreSession::createNetwork(): Trying to create a network that already exists, updating instead!")); + updateNetwork(info); + } } void CoreSession::updateNetwork(const NetworkInfo &info) { @@ -462,7 +468,10 @@ void CoreSession::removeBufferRequested(BufferId bufferId) { if(bufferInfo.type() == BufferInfo::ChannelBuffer) { Network *net = network(bufferInfo.networkId()); - Q_ASSERT(net); + if(!net) { + qWarning() << "CoreSession::removeBufferRequested(): Received BufferInfo with unknown networkId!"; + return; + } IrcChannel *chan = net->ircChannel(bufferInfo.bufferName()); if(chan) { qWarning() << "CoreSession::removeBufferRequested(): Unable to remove Buffer for joined Channel:" << bufferInfo.bufferName();