diff options
Diffstat (limited to 'Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.cpp')
| -rw-r--r-- | Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.cpp | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.cpp b/Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.cpp index 1036e12..25a12ea 100644 --- a/Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.cpp +++ b/Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.cpp | |||
| @@ -112,21 +112,20 @@ boost::shared_ptr<SOCKS5BytestreamClientSession> SOCKS5BytestreamProxiesManager: | |||
| 112 | return connection; | 112 | return connection; |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | void SOCKS5BytestreamProxiesManager::handleProxyFound(S5BProxyRequest::ref proxy) { | 115 | void SOCKS5BytestreamProxiesManager::handleProxiesFound(std::vector<S5BProxyRequest::ref> proxyHosts) { |
| 116 | if (proxy) { | 116 | foreach(S5BProxyRequest::ref proxy, proxyHosts) { |
| 117 | if (HostAddress(proxy->getStreamHost().get().host).isValid()) { | 117 | if (proxy) { |
| 118 | addS5BProxy(proxy); | 118 | if (HostAddress(proxy->getStreamHost().get().host).isValid()) { |
| 119 | onDiscoveredProxiesChanged(); | 119 | addS5BProxy(proxy); |
| 120 | } | 120 | onDiscoveredProxiesChanged(); |
| 121 | else { | 121 | } |
| 122 | DomainNameAddressQuery::ref resolveRequest = resolver_->createAddressQuery(proxy->getStreamHost().get().host); | 122 | else { |
| 123 | resolveRequest->onResult.connect(boost::bind(&SOCKS5BytestreamProxiesManager::handleNameLookupResult, this, _1, _2, proxy)); | 123 | DomainNameAddressQuery::ref resolveRequest = resolver_->createAddressQuery(proxy->getStreamHost().get().host); |
| 124 | resolveRequest->run(); | 124 | resolveRequest->onResult.connect(boost::bind(&SOCKS5BytestreamProxiesManager::handleNameLookupResult, this, _1, _2, proxy)); |
| 125 | resolveRequest->run(); | ||
| 126 | } | ||
| 125 | } | 127 | } |
| 126 | } | 128 | } |
| 127 | else { | ||
| 128 | onDiscoveredProxiesChanged(); | ||
| 129 | } | ||
| 130 | proxyFinder_->stop(); | 129 | proxyFinder_->stop(); |
| 131 | proxyFinder_.reset(); | 130 | proxyFinder_.reset(); |
| 132 | } | 131 | } |
| @@ -157,12 +156,12 @@ void SOCKS5BytestreamProxiesManager::handleNameLookupResult(const std::vector<Ho | |||
| 157 | void SOCKS5BytestreamProxiesManager::queryForProxies() { | 156 | void SOCKS5BytestreamProxiesManager::queryForProxies() { |
| 158 | proxyFinder_ = boost::make_shared<SOCKS5BytestreamProxyFinder>(serviceRoot_, iqRouter_); | 157 | proxyFinder_ = boost::make_shared<SOCKS5BytestreamProxyFinder>(serviceRoot_, iqRouter_); |
| 159 | 158 | ||
| 160 | proxyFinder_->onProxyFound.connect(boost::bind(&SOCKS5BytestreamProxiesManager::handleProxyFound, this, _1)); | 159 | proxyFinder_->onProxiesFound.connect(boost::bind(&SOCKS5BytestreamProxiesManager::handleProxiesFound, this, _1)); |
| 161 | proxyFinder_->start(); | 160 | proxyFinder_->start(); |
| 162 | } | 161 | } |
| 163 | 162 | ||
| 164 | void SOCKS5BytestreamProxiesManager::handleProxySessionReady(const std::string& sessionID, const JID& jid, boost::shared_ptr<SOCKS5BytestreamClientSession> session, bool error) { | 163 | void SOCKS5BytestreamProxiesManager::handleProxySessionReady(const std::string& sessionID, const JID& jid, boost::shared_ptr<SOCKS5BytestreamClientSession> session, bool error) { |
| 165 | session->onSessionReady.disconnect(boost::bind(&SOCKS5BytestreamProxiesManager::handleProxySessionFinished, this, boost::cref(sessionID), boost::cref(jid), session, _1)); | 164 | session->onSessionReady.disconnect(boost::bind(&SOCKS5BytestreamProxiesManager::handleProxySessionReady, this, boost::cref(sessionID), boost::cref(jid), session, _1)); |
| 166 | if (!error) { | 165 | if (!error) { |
| 167 | // The SOCKS5 bytestream session to the proxy succeeded; stop and remove other sessions. | 166 | // The SOCKS5 bytestream session to the proxy succeeded; stop and remove other sessions. |
| 168 | if (proxySessions_.find(sessionID) != proxySessions_.end()) { | 167 | if (proxySessions_.find(sessionID) != proxySessions_.end()) { |
Swift