summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2015-06-30 07:02:01 (GMT)
committerKevin Smith <kevin.smith@isode.com>2015-07-07 19:58:12 (GMT)
commit799a7ac203dc2576872894dfdd1adb5cdbbacf7b (patch)
treee0242decf49222b83674143cf04f61c3dc01bc35 /Swiften/FileTransfer/JingleFileTransfer.cpp
parentabd96284e162b3594bd0fc90a5da6b78709dee23 (diff)
downloadswift-799a7ac203dc2576872894dfdd1adb5cdbbacf7b.zip
swift-799a7ac203dc2576872894dfdd1adb5cdbbacf7b.tar.bz2
Fix memory leaks reported by ASAN
Test-Information: Tested on Elementary OS with a LLVM/Clang 3.7.0 build. With this patch the reports for the fixed locations are gone. Change-Id: I0260fc85ad662335a69ace331f51ebe2f864ef97
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
@@ -8,13 +8,13 @@
#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;
@@ -213,6 +213,7 @@ void JingleFileTransfer::handleTransportInfoReceived(
}
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));
@@ -222,3 +223,13 @@ void JingleFileTransfer::setTransporter(FileTransferTransporter* transporter) {
boost::bind(&JingleFileTransfer::handleProxyActivateFinished, this, _1, _2));
}
+void JingleFileTransfer::removeTransporter() {
+ if (transporter) {
+ localTransportCandidatesGeneratedConnection.release();
+ remoteTransportCandidateSelectFinishedConnection.release();
+ proxyActivatedConnection.release();
+ delete transporter;
+ transporter = NULL;
+ }
+}
+