From 123fc368f8705fa7799c04ee84af85999a7ebde3 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 28 Sep 2016 23:02:50 +0200 Subject: [PATCH 1/1] dcc: Protect DCC file transfer support by a feature flag --- src/client/client.cpp | 9 ++++++--- src/client/transfermodel.cpp | 6 ++++-- src/common/quassel.h | 3 ++- src/qtui/mainwin.cpp | 4 +++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index 9449fbb4..91165418 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -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())); diff --git a/src/client/transfermodel.cpp b/src/client/transfermodel.cpp index 46615126..fdacd186 100644 --- a/src/client/transfermodel.cpp +++ b/src/client/transfermodel.cpp @@ -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))); + } } diff --git a/src/common/quassel.h b/src/common/quassel.h index 3305009d..e9ed0f95 100644 --- a/src/common/quassel.h +++ b/src/common/quassel.h @@ -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) diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index efe18197..7688512d 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -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(); } -- 2.20.1