Output the chosen protocol type on connect
[quassel.git] / src / client / clientauthhandler.cpp
index 415a7dd..15efef3 100644 (file)
@@ -34,8 +34,6 @@
 #include "clientsettings.h"
 #include "peerfactory.h"
 
-#include "protocols/legacy/legacypeer.h"
-
 using namespace Protocol;
 
 ClientAuthHandler::ClientAuthHandler(CoreAccount account, QObject *parent)
@@ -180,7 +178,14 @@ void ClientAuthHandler::onSocketConnected()
         stream << magic;
 
         // here goes the list of protocols we support, in order of preference
-        stream << ((quint32)Protocol::LegacyProtocol | 0x80000000); // end list
+        PeerFactory::ProtoList protos = PeerFactory::supportedProtocols();
+        for (int i = 0; i < protos.count(); ++i) {
+            quint32 reply = protos[i].first;
+            reply |= protos[i].second<<8;
+            if (i == protos.count() - 1)
+                reply |= 0x80000000; // end list
+            stream << reply;
+        }
 
         socket()->flush(); // make sure the probing data is sent immediately
         return;
@@ -190,7 +195,7 @@ void ClientAuthHandler::onSocketConnected()
 
     qDebug() << "Legacy core detected, switching to compatibility mode";
 
-    RemotePeer *peer = new LegacyPeer(this, socket(), this);
+    RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(Protocol::LegacyProtocol, 0), this, socket(), this);
     // Only needed for the legacy peer, as all others check the protocol version before instantiation
     connect(peer, SIGNAL(protocolVersionMismatch(int,int)), SLOT(onProtocolVersionMismatch(int,int)));
 
@@ -246,6 +251,8 @@ void ClientAuthHandler::onProtocolVersionMismatch(int actual, int expected)
 
 void ClientAuthHandler::setPeer(RemotePeer *peer)
 {
+    qDebug().nospace() << "Using " << qPrintable(peer->protocolName()) << "...";
+
     _peer = peer;
     connect(_peer, SIGNAL(transferProgress(int,int)), SIGNAL(transferProgress(int,int)));