X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fprotocols%2Fdatastream%2Fdatastreampeer.cpp;fp=src%2Fcommon%2Fprotocols%2Fdatastream%2Fdatastreampeer.cpp;h=6709c695d5cafc70375a7151491ed74d3f26a4f7;hp=e91c9775e6b81bd0c33c93b41097496e357c2e22;hb=9f91e0dd3c4eb5c2e2dedfc8d36a068d433d51b1;hpb=b5dfd31e3d1ad7ca4bfe8262b62be259f6dc786a diff --git a/src/common/protocols/datastream/datastreampeer.cpp b/src/common/protocols/datastream/datastreampeer.cpp index e91c9775..6709c695 100644 --- a/src/common/protocols/datastream/datastreampeer.cpp +++ b/src/common/protocols/datastream/datastreampeer.cpp @@ -24,6 +24,7 @@ #include #include "datastreampeer.h" +#include "quassel.h" using namespace Protocol; @@ -116,7 +117,11 @@ void DataStreamPeer::handleHandshakeMessage(const QVariantList &mapData) } if (msgType == "ClientInit") { - handle(RegisterClient(m["ClientVersion"].toString(), m["ClientDate"].toString(), false, m["Features"].toInt())); // UseSsl obsolete + handle(RegisterClient{Quassel::Features{m["FeatureList"].toStringList(), Quassel::LegacyFeatures(m["Features"].toUInt())}, + m["ClientVersion"].toString(), + m["ClientDate"].toString(), + false // UseSsl obsolete + }); } else if (msgType == "ClientInitReject") { @@ -124,7 +129,12 @@ void DataStreamPeer::handleHandshakeMessage(const QVariantList &mapData) } else if (msgType == "ClientInitAck") { - handle(ClientRegistered(m["CoreFeatures"].toUInt(), m["Configured"].toBool(), m["StorageBackends"].toList(), false, m["Authenticators"].toList())); // SupportsSsl obsolete + handle(ClientRegistered{Quassel::Features{m["FeatureList"].toStringList(), Quassel::LegacyFeatures(m["CoreFeatures"].toUInt())}, + m["Configured"].toBool(), + m["StorageBackends"].toList(), + m["Authenticators"].toList(), + false // SupportsSsl obsolete + }); } else if (msgType == "CoreSetupData") { @@ -166,9 +176,10 @@ void DataStreamPeer::handleHandshakeMessage(const QVariantList &mapData) void DataStreamPeer::dispatch(const RegisterClient &msg) { QVariantMap m; m["MsgType"] = "ClientInit"; + m["Features"] = static_cast(msg.features.toLegacyFeatures()); + m["FeatureList"] = msg.features.toStringList(); m["ClientVersion"] = msg.clientVersion; m["ClientDate"] = msg.buildDate; - m["Features"] = msg.clientFeatures; writeMessage(m); } @@ -186,10 +197,17 @@ void DataStreamPeer::dispatch(const ClientDenied &msg) { void DataStreamPeer::dispatch(const ClientRegistered &msg) { QVariantMap m; m["MsgType"] = "ClientInitAck"; - m["CoreFeatures"] = msg.coreFeatures; - m["StorageBackends"] = msg.backendInfo; - m["Authenticators"] = msg.authenticatorInfo; + if (hasFeature(Quassel::Feature::ExtendedFeatures)) { + m["FeatureList"] = msg.features.toStringList(); + } + else { + m["CoreFeatures"] = static_cast(msg.features.toLegacyFeatures()); + } m["LoginEnabled"] = m["Configured"] = msg.coreConfigured; + m["StorageBackends"] = msg.backendInfo; + if (hasFeature(Quassel::Feature::Authenticators)) { + m["Authenticators"] = msg.authenticatorInfo; + } writeMessage(m); }