+/* Handle signals from Netsplit objects */
+
+void IrcServerHandler::handleNetsplitJoin(const QString &channel, const QStringList &users, const QString& quitMessage)
+{
+ QString msg = users.join(":").append(':').append(quitMessage);
+ emit displayMsg(Message::NetsplitJoin, BufferInfo::ChannelBuffer, channel, msg);
+
+ foreach(QString user, users) {
+ IrcUser *iu = network()->ircUser(nickFromMask(user));
+ if(iu)
+ iu->joinChannel(channel);
+ }
+}
+
+void IrcServerHandler::handleNetsplitQuit(const QString &channel, const QStringList &users, const QString& quitMessage)
+{
+ QString msg = users.join(":").append(':').append(quitMessage);
+ emit displayMsg(Message::NetsplitQuit, BufferInfo::ChannelBuffer, channel, msg);
+ foreach(QString user, users) {
+ IrcUser *iu = network()->ircUser(nickFromMask(user));
+ if(iu)
+ iu->quit();
+ }
+}
+
+void IrcServerHandler::handleNetsplitFinished()
+{
+ Netsplit* n = qobject_cast<Netsplit*>(sender());
+ _netsplits.remove(_netsplits.key(n));
+ n->deleteLater();
+}
+
+/* */
+
+// FIXME networkConnection()->setChannelKey("") for all ERR replies indicating that a JOIN went wrong
+// mostly, these are codes in the 47x range
+
+/* */
+
+void IrcServerHandler::tryNextNick(const QString &errnick, bool erroneus) {
+ QStringList desiredNicks = coreSession()->identity(network()->identity())->nicks();
+ int nextNickIdx = desiredNicks.indexOf(errnick) + 1;
+ QString nextNick;
+ if(nextNickIdx > 0 && desiredNicks.size() > nextNickIdx) {
+ nextNick = desiredNicks[nextNickIdx];
+ } else {
+ if(erroneus) {
+ emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", tr("No free and valid nicks in nicklist found. use: /nick <othernick> to continue"));
+ return;
+ } else {
+ nextNick = errnick + "_";
+ }
+ }
+ putCmd("NICK", serverEncode(nextNick));
+}
+
+bool IrcServerHandler::checkParamCount(const QString &methodName, const QList<QByteArray> ¶ms, int minParams) {
+ if(params.count() < minParams) {
+ qWarning() << qPrintable(methodName) << "requires" << minParams << "parameters but received only" << params.count() << serverDecode(params);
+ return false;