summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2015-07-21 16:30:15 (GMT)
committerTobias Markmann <tm@ayena.de>2015-07-21 16:42:34 (GMT)
commit6ca201d0b48f4273e24dd7bff17c4a46eeaddf39 (patch)
treeace238716521c89a54168472905379a9249c3666 /Swiften/Network/ChainedConnector.h
parent02ecf91d261276ec6f1e46b537ac0e10ebae3170 (diff)
downloadswift-6ca201d0b48f4273e24dd7bff17c4a46eeaddf39.zip
swift-6ca201d0b48f4273e24dd7bff17c4a46eeaddf39.tar.bz2
Explicitly disconnect from remaining resources in destructors
Explicitly disconnect from remaining resources in the ChainedConnected and ClientSessionStanzaChannel destructors, so the event loop will not call the signal handler methods on a freed object. Test-Information: Repeating the test case of creating a Swift::Client instance, connecting it and then deleting it after a random time below one second. On Mac OS X 10.9.5 running this test case causes two ASAN heap-use-after-free errors and with this patch the errors are gone. Change-Id: I3e48150c3633f4076ca9172aad9e85ba389df950
Diffstat (limited to 'Swiften/Network/ChainedConnector.h')
-rw-r--r--Swiften/Network/ChainedConnector.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/Swiften/Network/ChainedConnector.h b/Swiften/Network/ChainedConnector.h
index 77fa6fd..9bcc961 100644
--- a/Swiften/Network/ChainedConnector.h
+++ b/Swiften/Network/ChainedConnector.h
@@ -1,20 +1,21 @@
/*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
+#include <deque>
#include <string>
#include <vector>
-#include <deque>
-#include <boost/shared_ptr.hpp>
+
#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
#include <Swiften/Base/API.h>
-#include <Swiften/Base/boost_bsignals.h>
#include <Swiften/Base/Error.h>
+#include <Swiften/Base/boost_bsignals.h>
namespace Swift {
class Connection;
@@ -26,6 +27,7 @@ namespace Swift {
class SWIFTEN_API ChainedConnector {
public:
ChainedConnector(const std::string& hostname, int port, const boost::optional<std::string>& serviceLookupPrefix, DomainNameResolver*, const std::vector<ConnectionFactory*>&, TimerFactory*);
+ ~ChainedConnector();
void setTimeoutMilliseconds(int milliseconds);
void start();