summaryrefslogtreecommitdiffstats
path: root/src/pvs.cpp
diff options
context:
space:
mode:
authorSebastien Braun2010-07-17 17:23:29 +0200
committerSebastien Braun2010-07-17 17:23:29 +0200
commit58fb0517b78c1d9715ce2e3c8faf6bc02514b310 (patch)
treeacbbd6f37c446d7dce4767f643c229ebd5fb00bd /src/pvs.cpp
parentImplement --no-fork/-F command line argument for pvs (diff)
downloadpvs-58fb0517b78c1d9715ce2e3c8faf6bc02514b310.tar.gz
pvs-58fb0517b78c1d9715ce2e3c8faf6bc02514b310.tar.xz
pvs-58fb0517b78c1d9715ce2e3c8faf6bc02514b310.zip
Remember to delete outgoing transfers when they are finished or failed
Diffstat (limited to 'src/pvs.cpp')
-rw-r--r--src/pvs.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/pvs.cpp b/src/pvs.cpp
index c7fe5ce..af5958e 100644
--- a/src/pvs.cpp
+++ b/src/pvs.cpp
@@ -659,6 +659,8 @@ bool PVS::createMulticastTransfer(QString const& objectPath, quint64& transferID
connect(transfer, SIGNAL(failed(qulonglong, QString const)), SIGNAL(outgoingMulticastTransferFailed(qulonglong, QString const)));
connect(transfer, SIGNAL(progress(qulonglong, qulonglong, qulonglong)), SIGNAL(outgoingMulticastTransferProgress(qulonglong, qulonglong, qulonglong)));
connect(transfer, SIGNAL(announce(PVSMsg)), _pvsServerConnection, SLOT(sendMessage(PVSMsg)));
+ connect(transfer, SIGNAL(finished(qulonglong)), SLOT(outgoingMulticastTransferDelete(qulonglong)));
+ connect(transfer, SIGNAL(failed(qulonglong, QString const)), SLOT(outgoingMulticastTransferDelete(qulonglong)));
QTimer::singleShot(0, transfer, SLOT(start()));
errorReason = "";
return true;
@@ -687,3 +689,12 @@ quint64 PVS::generateMcastTransferID()
return (nodeID & Q_UINT64_C(0xffffffffffff0000)) | (quint64)(++counter);
}
+void PVS::outgoingMulticastTransferDelete(qulonglong transferID)
+{
+ PVSOutgoingMulticastTransfer* transfer = _outgoingTransfers.value(transferID, 0);
+ if (!transfer)
+ return;
+
+ _outgoingTransfers.remove(transferID);
+ transfer->deleteLater();
+}