dcc: Protect DCC file transfer support by a feature flag
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 28 Sep 2016 21:02:50 +0000 (23:02 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 28 Sep 2016 21:06:07 +0000 (23:06 +0200)
src/client/client.cpp
src/client/transfermodel.cpp
src/common/quassel.h
src/qtui/mainwin.cpp

index 9449fbb..9116541 100644 (file)
@@ -414,10 +414,13 @@ void Client::setSyncedToCore()
     _ignoreListManager = new ClientIgnoreListManager(this);
     p->synchronize(ignoreListManager());
 
+    // create TransferManager if core supports it
     Q_ASSERT(!_transferManager);
-    _transferManager = new ClientTransferManager(this);
-    _transferModel->setManager(_transferManager);
-    p->synchronize(transferManager());
+    if (coreFeatures() & Quassel::DccFileTransfer) {
+        _transferManager = new ClientTransferManager(this);
+        _transferModel->setManager(_transferManager);
+        p->synchronize(transferManager());
+    }
 
     // trigger backlog request once all active bufferviews are initialized
     connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
index 4661512..fdacd18 100644 (file)
@@ -113,8 +113,10 @@ void TransferModel::setManager(const TransferManager *manager)
     }
 
     _manager = manager;
-    connect(manager, SIGNAL(transferAdded(QUuid)), SLOT(onTransferAdded(QUuid)));
-    connect(manager, SIGNAL(transferRemoved(QUuid)), SLOT(onTransferRemoved(QUuid)));
+    if (_manager) {
+        connect(manager, SIGNAL(transferAdded(QUuid)), SLOT(onTransferAdded(QUuid)));
+        connect(manager, SIGNAL(transferRemoved(QUuid)), SLOT(onTransferRemoved(QUuid)));
+    }
 }
 
 
index 3305009..e9ed0f9 100644 (file)
@@ -74,8 +74,9 @@ public:
         CapNegotiation = 0x0020,           /// IRCv3 capability negotiation, account tracking
         VerifyServerSSL = 0x0040,          /// IRC server SSL validation
         CustomRateLimits = 0x0080,         /// IRC server custom message rate limits
+        DccFileTransfer = 0x0100,
 
-        NumFeatures = 0x0080
+        NumFeatures = 0x0100
     };
     Q_DECLARE_FLAGS(Features, Feature)
 
index efe1819..7688512 100644 (file)
@@ -1134,7 +1134,9 @@ void MainWin::connectedToCore()
     connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int)));
     connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout()));
 
-    connect(Client::transferManager(), SIGNAL(transferAdded(QUuid)), SLOT(showNewTransferDlg(QUuid)));
+    if (Client::transferManager()) {
+        connect(Client::transferManager(), SIGNAL(transferAdded(QUuid)), SLOT(showNewTransferDlg(QUuid)));
+    }
 
     setConnectedState();
 }