aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-08-15 01:17:55 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-08-15 01:17:55 +0200
commitc7edb89abbb38c432667de15181b4cee6f14577e (patch)
tree942d5c2ff728375b6d6320c62b85dd98f8c4f2cf /tests
parentad1cf20d2ad46099d4de8dbeda1db51e91efcd7a (diff)
downloadqxmpp-c7edb89abbb38c432667de15181b4cee6f14577e.tar.gz
correctly receive data immediately following a SOCKS5 message (closes #64)
The SOCKS5 client and server would discard any currently buffered received data when processing a SOCKS5 command as they used readAll(). Now they only consume the SOCKS5 command's bytes, preserving any buffered data. Why this situation should occur is a different matter, I would be surprised to see it happen during file transfer, due to the sequence in which the handshake is performed.
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmppsocks/tst_qxmppsocks.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/tests/qxmppsocks/tst_qxmppsocks.cpp b/tests/qxmppsocks/tst_qxmppsocks.cpp
index 767e322f..a8ad9564 100644
--- a/tests/qxmppsocks/tst_qxmppsocks.cpp
+++ b/tests/qxmppsocks/tst_qxmppsocks.cpp
@@ -66,16 +66,25 @@ void tst_QXmppSocks::testClient_data()
QTest::addColumn<bool>("serverHandshakeWorks");
QTest::addColumn<QByteArray>("serverConnect");
QTest::addColumn<bool>("serverConnectWorks");
+ QTest::addColumn<QByteArray>("clientReceivedData");
QTest::newRow("no authentication - good connect")
<< QByteArray::fromHex("0500") << true
- << QByteArray::fromHex("050000030e7777772e676f6f676c652e636f6d0050") << true;
+ << QByteArray::fromHex("050000030e7777772e676f6f676c652e636f6d0050") << true
+ << QByteArray();
+ QTest::newRow("no authentication - good connect and data")
+ << QByteArray::fromHex("0500") << true
+ << QByteArray::fromHex("050000030e7777772e676f6f676c652e636f6d0050001122") << true
+ << QByteArray::fromHex("001122");
+
QTest::newRow("no authentication - bad connect")
<< QByteArray::fromHex("0500") << true
- << QByteArray::fromHex("0500") << false;
+ << QByteArray::fromHex("0500") << false
+ << QByteArray();
QTest::newRow("bad authentication")
<< QByteArray::fromHex("05ff") << false
- << QByteArray() << false;
+ << QByteArray() << false
+ << QByteArray();
}
void tst_QXmppSocks::testClient()
@@ -84,6 +93,7 @@ void tst_QXmppSocks::testClient()
QFETCH(bool, serverHandshakeWorks);
QFETCH(QByteArray, serverConnect);
QFETCH(bool, serverConnectWorks);
+ QFETCH(QByteArray, clientReceivedData);
QTcpServer server;
QVERIFY(server.listen());
@@ -133,6 +143,8 @@ void tst_QXmppSocks::testClient()
QCOMPARE(client.state(), QAbstractSocket::ConnectedState);
QCOMPARE(m_connectionSocket->state(), QAbstractSocket::ConnectedState);
+ QByteArray received = client.readAll();
+ QCOMPARE(received, clientReceivedData);
// disconnect
client.disconnectFromHost();