summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swiften/Network/HTTPConnectProxiedConnection.cpp1
-rw-r--r--Swiften/StreamStack/HighLayer.cpp6
2 files changed, 5 insertions, 2 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();
}
diff --git a/Swiften/StreamStack/HighLayer.cpp b/Swiften/StreamStack/HighLayer.cpp
index dc17c2a..0f76f22 100644
--- a/Swiften/StreamStack/HighLayer.cpp
+++ b/Swiften/StreamStack/HighLayer.cpp
@@ -1,26 +1,28 @@
/*
* Copyright (c) 2010 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#include <Swiften/StreamStack/HighLayer.h>
#include <cassert>
#include <Swiften/StreamStack/LowLayer.h>
namespace Swift {
HighLayer::HighLayer() : childLayer(NULL) {
}
HighLayer::~HighLayer() {
}
void HighLayer::writeDataToChildLayer(const SafeByteArray& data) {
- assert(childLayer);
- childLayer->writeData(data);
+ //assert(childLayer);
+ if (childLayer) {
+ childLayer->writeData(data);
+ }
}
}