summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/SOCKS5BytestreamClientSession.cpp')
-rw-r--r--Swiften/FileTransfer/SOCKS5BytestreamClientSession.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamClientSession.cpp b/Swiften/FileTransfer/SOCKS5BytestreamClientSession.cpp
index f90b73b..a18b998 100644
--- a/Swiften/FileTransfer/SOCKS5BytestreamClientSession.cpp
+++ b/Swiften/FileTransfer/SOCKS5BytestreamClientSession.cpp
@@ -10,18 +10,19 @@
#include <Swiften/Base/Algorithm.h>
#include <Swiften/Base/SafeByteArray.h>
#include <Swiften/Base/Concat.h>
#include <Swiften/Base/Log.h>
#include <Swiften/StringCodecs/SHA1.h>
#include <Swiften/StringCodecs/Hexify.h>
#include <Swiften/FileTransfer/BytestreamException.h>
#include <Swiften/Network/TimerFactory.h>
+#include <Swiften/Base/ByteArray.h>
namespace Swift {
SOCKS5BytestreamClientSession::SOCKS5BytestreamClientSession(boost::shared_ptr<Connection> connection, const HostAddressPort& addressPort, const std::string& destination, TimerFactory* timerFactory) :
connection(connection), addressPort(addressPort), destination(destination), state(Initial), chunkSize(131072) {
connection->onConnectFinished.connect(boost::bind(&SOCKS5BytestreamClientSession::handleConnectFinished, this, _1));
connection->onDisconnected.connect(boost::bind(&SOCKS5BytestreamClientSession::handleDisconnected, this, _1));
weFailedTimeout = timerFactory->createTimer(2000);
weFailedTimeout->onTick.connect(boost::bind(&SOCKS5BytestreamClientSession::handleWeFailedTimeout, this));
@@ -83,19 +84,19 @@ void SOCKS5BytestreamClientSession::process() {
// we expect x'03' = DOMAINNAME here
// discconect & signal failure
finish(true);
break;
}
if (static_cast<size_t>(unprocessedData[4]) + 1 > unprocessedData.size() + 5) {
// complete domainname and port not available yet
break;
}
- bndAddress = createByteArray(&(unprocessedData.data()[5]), unprocessedData[4]);
+ bndAddress = createByteArray(&vecptr(unprocessedData)[5], unprocessedData[4]);
if (unprocessedData[unprocessedData[4] + 5] != 0 && bndAddress == createByteArray(destination)) {
// we expect a 0 as port
// disconnect and fail
finish(true);
}
unprocessedData.clear();
state = Ready;
SWIFT_LOG(debug) << "session ready" << std::endl;
// issue ready signal so the bytestream can be used for reading or writing
@@ -209,19 +210,19 @@ void SOCKS5BytestreamClientSession::handleConnectFinished(bool error) {
}
void SOCKS5BytestreamClientSession::handleDataRead(const SafeByteArray& data) {
SWIFT_LOG(debug) << "state: " << state << " data.size() = " << data.size() << std::endl;
if (state != Reading) {
append(unprocessedData, data);
process();
}
else {
- writeBytestream->write(createByteArray(data.data(), data.size()));
+ writeBytestream->write(createByteArray(vecptr(data), data.size()));
onBytesReceived(data.size());
}
}
void SOCKS5BytestreamClientSession::handleDisconnected(const boost::optional<Connection::Error>& error) {
SWIFT_LOG(debug) << (error ? (error == Connection::ReadError ? "Read Error" : "Write Error") : "No Error") << std::endl;
if (error) {
finish(true);
}