Fix protocol version check
authorManuel Nickschas <sputnick@quassel-irc.org>
Sun, 6 Jul 2008 20:33:55 +0000 (22:33 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 6 Jul 2008 20:33:55 +0000 (22:33 +0200)
src/client/clientsyncer.cpp
src/core/core.cpp

index e0b502b..6759973 100644 (file)
@@ -186,8 +186,10 @@ void ClientSyncer::coreSocketDisconnected() {
 
 void ClientSyncer::clientInitAck(const QVariantMap &msg) {
   // Core has accepted our version info and sent its own. Let's see if we accept it as well...
-  if((msg.contains("CoreBuild") && msg["CoreBuild"].toUInt() < 732)  // legacy!
-     || (!msg.contains("CoreBuild") && msg["ProtocolVersion"].toUInt() < Global::clientNeedsProtocol)) {
+  uint ver = 0;
+  if(!msg.contains("ProtocolVersion") && msg["CoreBuild"].toUInt() >= 732) ver = 1; // legacy!
+  if(msg.contains("ProtocolVersion")) ver = msg["ProtocolVersion"].toUInt();
+  if(ver < Global::clientNeedsProtocol) {
     emit connectionError(tr("<b>The Quassel Core you are trying to connect to is too old!</b><br>"
         "Need at least core/client protocol v%1 to connect.").arg(Global::clientNeedsProtocol));
     disconnectFromCore();
index 31a409f..1833927 100644 (file)
@@ -394,8 +394,10 @@ void Core::processClientMessage(QTcpSocket *socket, const QVariantMap &msg) {
     QVariantMap reply;
 
     // Just version information -- check it!
-    if((msg.contains("ClientBuild") && msg["ClientBuild"].toUInt() < 732)
-       || (!msg.contains("ClientBuild") && msg["ProtocolVersion"].toUInt() < Global::coreNeedsProtocol)) {
+    uint ver = 0;
+    if(!msg.contains("ProtocolVersion") && msg["ClientBuild"].toUInt() >= 732) ver = 1; // FIXME legacy
+    if(msg.contains("ProtocolVersion")) ver = msg["ProtocolVersion"].toUInt();
+    if(ver < Global::coreNeedsProtocol) {
       reply["MsgType"] = "ClientInitReject";
       reply["Error"] = tr("<b>Your Quassel Client is too old!</b><br>"
       "This core needs at least client/core protocol version %1.<br>"