summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/JingleFileTransfer.cpp')
-rw-r--r--Swiften/FileTransfer/JingleFileTransfer.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/Swiften/FileTransfer/JingleFileTransfer.cpp b/Swiften/FileTransfer/JingleFileTransfer.cpp
index dbc4391..cf67a67 100644
--- a/Swiften/FileTransfer/JingleFileTransfer.cpp
+++ b/Swiften/FileTransfer/JingleFileTransfer.cpp
@@ -5,19 +5,19 @@
*/
#include <Swiften/FileTransfer/JingleFileTransfer.h>
#include <boost/typeof/typeof.hpp>
+#include <Swiften/Base/Log.h>
#include <Swiften/Base/foreach.h>
-#include <Swiften/JID/JID.h>
#include <Swiften/Crypto/CryptoProvider.h>
-#include <Swiften/StringCodecs/Hexify.h>
-#include <Swiften/Jingle/JingleSession.h>
#include <Swiften/FileTransfer/FileTransferTransporter.h>
-#include <Swiften/Base/Log.h>
+#include <Swiften/JID/JID.h>
+#include <Swiften/Jingle/JingleSession.h>
+#include <Swiften/StringCodecs/Hexify.h>
using namespace Swift;
JingleFileTransfer::JingleFileTransfer(
boost::shared_ptr<JingleSession> session,
const JID& target,
@@ -210,15 +210,26 @@ void JingleFileTransfer::handleTransportInfoReceived(
else {
SWIFT_LOG(debug) << "Ignoring unknown info" << std::endl;
}
}
void JingleFileTransfer::setTransporter(FileTransferTransporter* transporter) {
+ SWIFT_LOG_ASSERT(!this->transporter, error);
this->transporter = transporter;
localTransportCandidatesGeneratedConnection = transporter->onLocalCandidatesGenerated.connect(
boost::bind(&JingleFileTransfer::handleLocalTransportCandidatesGenerated, this, _1, _2, _3));
remoteTransportCandidateSelectFinishedConnection = transporter->onRemoteCandidateSelectFinished.connect(
boost::bind(&JingleFileTransfer::handleRemoteTransportCandidateSelectFinished, this, _1, _2));
proxyActivatedConnection = transporter->onProxyActivated.connect(
boost::bind(&JingleFileTransfer::handleProxyActivateFinished, this, _1, _2));
}
+void JingleFileTransfer::removeTransporter() {
+ if (transporter) {
+ localTransportCandidatesGeneratedConnection.release();
+ remoteTransportCandidateSelectFinishedConnection.release();
+ proxyActivatedConnection.release();
+ delete transporter;
+ transporter = NULL;
+ }
+}
+