X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=68f31271f88b19571ffd09648d305d498f85bb08;hb=cc7f376eb105f7bf931fb7f96c9601a7b3f69511;hp=d7b9cb19787c8cdbb74d6d77aae3ab4ed27010f5;hpb=08792d799bcff809f96ca0c04c9f9eadd119dc31;p=quassel.git diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index d7b9cb19..68f31271 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -192,8 +192,8 @@ void CoreSession::attachNetworkConnection(NetworkConnection *conn) { //signalProxy()->attachSignal(conn, SIGNAL(connected(NetworkId)), SIGNAL(networkConnected(NetworkId))); //signalProxy()->attachSignal(conn, SIGNAL(disconnected(NetworkId)), SIGNAL(networkDisconnected(NetworkId))); - connect(conn, SIGNAL(displayMsg(Message::Type, BufferInfo::Type, QString, QString, QString, quint8)), - this, SLOT(recvMessageFromServer(Message::Type, BufferInfo::Type, QString, QString, QString, quint8))); + connect(conn, SIGNAL(displayMsg(Message::Type, BufferInfo::Type, QString, QString, QString, Message::Flags)), + this, SLOT(recvMessageFromServer(Message::Type, BufferInfo::Type, QString, QString, QString, Message::Flags))); connect(conn, SIGNAL(displayStatusMsg(QString)), this, SLOT(recvStatusMsgFromServer(QString))); connect(conn, SIGNAL(nickChanged(const NetworkId &, const QString &, const QString &)), @@ -282,10 +282,11 @@ void CoreSession::msgFromClient(BufferInfo bufinfo, QString msg) { // ALL messages coming pass through these functions before going to the GUI. // So this is the perfect place for storing the backlog and log stuff. -void CoreSession::recvMessageFromServer(Message::Type type, BufferInfo::Type bufferType, QString target, QString text, QString sender, quint8 flags) { +void CoreSession::recvMessageFromServer(Message::Type type, BufferInfo::Type bufferType, + QString target, QString text, QString sender, Message::Flags flags) { NetworkConnection *netCon = qobject_cast(this->sender()); Q_ASSERT(netCon); - + BufferInfo bufferInfo = Core::bufferInfo(user(), netCon->networkId(), bufferType, target); Message msg(bufferInfo, type, text, sender, flags); msg.setMsgId(Core::storeMessage(msg)); @@ -396,19 +397,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 +469,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();