diff options
| author | Kevin Smith <git@kismith.co.uk> | 2011-12-13 14:52:46 (GMT) |
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2011-12-13 14:52:46 (GMT) |
| commit | 902e2ee8e61acb18d2819e8a59a28921f85bbd77 (patch) | |
| tree | 792f2ad256c8734536bf58540122f882ca63f290 /Swiften/Network/HTTPConnectProxiedConnection.cpp | |
| parent | 8414b9b6dd1ecf9af622cb291934279c3c52a6a4 (diff) | |
| download | swift-contrib-902e2ee8e61acb18d2819e8a59a28921f85bbd77.zip swift-contrib-902e2ee8e61acb18d2819e8a59a28921f85bbd77.tar.bz2 | |
Avoid crash due to misuse of XMPPLayer
Diffstat (limited to 'Swiften/Network/HTTPConnectProxiedConnection.cpp')
| -rw-r--r-- | Swiften/Network/HTTPConnectProxiedConnection.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Swiften/Network/HTTPConnectProxiedConnection.cpp b/Swiften/Network/HTTPConnectProxiedConnection.cpp index 3e6c986..edbdd82 100644 --- a/Swiften/Network/HTTPConnectProxiedConnection.cpp +++ b/Swiften/Network/HTTPConnectProxiedConnection.cpp @@ -53,67 +53,68 @@ void HTTPConnectProxiedConnection::connect(const HostAddressPort& server) { } void HTTPConnectProxiedConnection::listen() { assert(false); connection_->listen(); } void HTTPConnectProxiedConnection::disconnect() { connected_ = false; connection_->disconnect(); } void HTTPConnectProxiedConnection::handleDisconnected(const boost::optional<Error>& error) { onDisconnected(error); } void HTTPConnectProxiedConnection::write(const SafeByteArray& data) { connection_->write(data); } void HTTPConnectProxiedConnection::handleConnectionConnectFinished(bool error) { connection_->onConnectFinished.disconnect(boost::bind(&HTTPConnectProxiedConnection::handleConnectionConnectFinished, shared_from_this(), _1)); if (!error) { std::stringstream connect; connect << "CONNECT " << server_.getAddress().toString() << ":" << server_.getPort() << " HTTP/1.1\r\n"; SafeByteArray data = createSafeByteArray(connect.str()); if (!authID_.empty() && !authPassword_.empty()) { append(data, createSafeByteArray("Proxy-Authorization: Basic ")); SafeByteArray credentials = authID_; append(credentials, createSafeByteArray(":")); append(credentials, authPassword_); append(data, Base64::encode(credentials)); append(data, createSafeByteArray("\r\n")); } append(data, createSafeByteArray("\r\n")); + SWIFT_LOG(debug) << "HTTP Proxy send headers: " << byteArrayToString(ByteArray(data.begin(), data.end())) << std::endl; connection_->write(data); } else { onConnectFinished(true); } } void HTTPConnectProxiedConnection::handleDataRead(boost::shared_ptr<SafeByteArray> data) { if (!connected_) { SWIFT_LOG(debug) << byteArrayToString(ByteArray(data->begin(), data->end())) << std::endl; std::vector<std::string> tmp = String::split(byteArrayToString(ByteArray(data->begin(), data->end())), ' '); if(tmp.size() > 1) { int status = boost::lexical_cast<int> (tmp[1].c_str()); SWIFT_LOG(debug) << "Proxy Status: " << status << std::endl; if (status / 100 == 2) { // all 2XX states are OK connected_ = true; onConnectFinished(false); return; } SWIFT_LOG(debug) << "HTTP Proxy returned an error: " << byteArrayToString(ByteArray(data->begin(), data->end())) << std::endl; } disconnect(); onConnectFinished(true); } else { onDataRead(data); } } HostAddressPort HTTPConnectProxiedConnection::getLocalAddress() const { return connection_->getLocalAddress(); } |
Swift