diff options
author | Tobias Markmann <tm@ayena.de> | 2015-05-20 16:01:06 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2015-05-26 15:43:35 (GMT) |
commit | e544a3ad5a8d3cdf67554384f53895fad34ff9bc (patch) | |
tree | 2807a0a190fd9592f9aedb689af3462bc507f156 /Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp | |
parent | 009e94c604e2d892ea8711ed6b3756da3eea9d04 (diff) | |
download | swift-e544a3ad5a8d3cdf67554384f53895fad34ff9bc.zip swift-e544a3ad5a8d3cdf67554384f53895fad34ff9bc.tar.bz2 |
Fix crash when sending a file to yourself
Use scoped_connection to prevent missing disconnection from signals.
Stop and free S5BServer when stopping SOCKS5BytestreamServerManager.
Test-Information:
Tried sending a file to myself multiple times and it did not crash.
Change-Id: If32075d8e9c243cab254776b924248227520e030
Diffstat (limited to 'Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp')
-rw-r--r-- | Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp b/Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp index 43d3e46..3137163 100644 --- a/Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp +++ b/Swiften/FileTransfer/SOCKS5BytestreamServerManager.cpp @@ -189,12 +189,16 @@ void SOCKS5BytestreamServerManager::stop() { getPublicIPRequest.reset(); } if (forwardPortRequest) { forwardPortRequest->stop(); forwardPortRequest.reset(); } + if (server) { + server->stop(); + server = NULL; + } if (connectionServer) { connectionServer->stop(); connectionServer.reset(); } state = Start; @@ -220,12 +224,13 @@ void SOCKS5BytestreamServerManager::handleForwardPortResult(boost::optional<NATP } else { SWIFT_LOG(debug) << "Mapping port has failed." << std::endl; } portMapping = mapping; + onPortForwardingSetup(mapping.is_initialized()); forwardPortRequest->stop(); forwardPortRequest.reset(); } void SOCKS5BytestreamServerManager::handleUnforwardPortResult(boost::optional<bool> result) { |