aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppSocks.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-07-27 12:53:39 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-07-27 12:53:39 +0200
commit908e14a6efe310bf6395ca1023a83a8695203557 (patch)
tree7b5b46b947af68cb0452876bc0a716d082da8495 /src/base/QXmppSocks.cpp
parent418a89298beff8e434e7c07d89b0edf53e085e59 (diff)
downloadqxmpp-908e14a6efe310bf6395ca1023a83a8695203557.tar.gz
socks5: only advance state on success
Diffstat (limited to 'src/base/QXmppSocks.cpp')
-rw-r--r--src/base/QXmppSocks.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/base/QXmppSocks.cpp b/src/base/QXmppSocks.cpp
index 82ccd096..cd1e306b 100644
--- a/src/base/QXmppSocks.cpp
+++ b/src/base/QXmppSocks.cpp
@@ -139,8 +139,6 @@ void QXmppSocksClient::slotReadyRead()
{
if (m_step == ConnectState)
{
- m_step++;
-
// receive connect to server response
QByteArray buffer = readAll();
if (buffer.size() != 2 || buffer.at(0) != SocksVersion || buffer.at(1) != NoAuthentication)
@@ -150,6 +148,9 @@ void QXmppSocksClient::slotReadyRead()
return;
}
+ // advance state
+ m_step = CommandState;
+
// send CONNECT command
buffer.resize(3);
buffer[0] = SocksVersion;
@@ -162,8 +163,6 @@ void QXmppSocksClient::slotReadyRead()
write(buffer);
} else if (m_step == CommandState) {
- m_step++;
-
// disconnect from signal
disconnect(this, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
@@ -192,6 +191,7 @@ void QXmppSocksClient::slotReadyRead()
// FIXME : what do we do with the resulting name / port?
// notify of connection
+ m_step = ReadyState;
emit ready();
}
}
@@ -250,8 +250,6 @@ void QXmppSocksServer::slotReadyRead()
if (m_states.value(socket) == ConnectState)
{
- m_states.insert(socket, CommandState);
-
// receive connect to server request
QByteArray buffer = socket->readAll();
if (buffer.size() < 3 ||
@@ -280,6 +278,9 @@ void QXmppSocksServer::slotReadyRead()
return;
}
+ // advance state
+ m_states.insert(socket, CommandState);
+
// send connect to server response
buffer.resize(2);
buffer[0] = SocksVersion;
@@ -287,8 +288,6 @@ void QXmppSocksServer::slotReadyRead()
socket->write(buffer);
} else if (m_states.value(socket) == CommandState) {
- m_states.insert(socket, ReadyState);
-
// disconnect from signals
disconnect(socket, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
@@ -316,6 +315,7 @@ void QXmppSocksServer::slotReadyRead()
}
// notify of connection
+ m_states.insert(socket, ReadyState);
emit newConnection(socket, hostName, hostPort);
// send response