X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsyncer.cpp;h=fb8bebc2f0e67c38b41d070697d2a7d44f0c68d9;hp=a8e08ef2c22b2343153b474c2a31e219474ae2f2;hb=236dda81632fa792e788d45b0f4f31b973823f7f;hpb=c6fc5ae878a4f92b658c3da2861bcc7da9c2594f diff --git a/src/client/clientsyncer.cpp b/src/client/clientsyncer.cpp index a8e08ef2..fb8bebc2 100644 --- a/src/client/clientsyncer.cpp +++ b/src/client/clientsyncer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -123,10 +123,10 @@ void ClientSyncer::connectToCore(const QVariantMap &conn) { #ifdef HAVE_SSL QSslSocket *sock = new QSslSocket(Client::instance()); + connect(sock, SIGNAL(encrypted()), this, SIGNAL(encrypted())); #else if(conn["useSsl"].toBool()) { emit connectionError(tr("This client is built without SSL Support!
Disable the usage of SSL in the account settings.")); - emit encrypted(false); return; } QTcpSocket *sock = new QTcpSocket(Client::instance()); @@ -167,9 +167,35 @@ void ClientSyncer::coreSocketConnected() { SignalProxy::writeDataToDevice(socket, clientInit); } -void ClientSyncer::useInternalCore(AccountId internalAccountId) { +void ClientSyncer::useInternalCore() { + AccountId internalAccountId; + + CoreAccountSettings accountSettings; + QList knownAccounts = accountSettings.knownAccounts(); + foreach(AccountId id, knownAccounts) { + if(!id.isValid()) + continue; + QVariantMap data = accountSettings.retrieveAccountData(id); + if(data.contains("InternalAccount") && data["InternalAccount"].toBool()) { + internalAccountId = id; + break; + } + } + + if(!internalAccountId.isValid()) { + for(AccountId i = 1;; i++) { + if(!knownAccounts.contains(i)) { + internalAccountId = i; + break; + } + } + QVariantMap data; + data["InternalAccount"] = true; + accountSettings.storeAccountData(internalAccountId, data); + } + coreConnectionInfo["AccountId"] = QVariant::fromValue(internalAccountId); - emit startInternalCore(); + emit startInternalCore(this); emit connectToInternalCore(Client::instance()->signalProxy()); } @@ -203,11 +229,8 @@ void ClientSyncer::clientInitAck(const QVariantMap &msg) { Q_ASSERT(sslSocket); connect(sslSocket, SIGNAL(sslErrors(const QList &)), this, SLOT(sslErrors(const QList &))); sslSocket->startClientEncryption(); - emit encrypted(true); - Client::instance()->setSecuredConnection(); } else { emit connectionError(tr("The Quassel Core you are trying to connect to does not support SSL!
If you want to connect anyways, disable the usage of SSL in the account settings.")); - emit encrypted(false); disconnectFromCore(); return; }