aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppSocks.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/QXmppSocks.cpp')
-rw-r--r--src/base/QXmppSocks.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/base/QXmppSocks.cpp b/src/base/QXmppSocks.cpp
index aa6d4b0d..adb7a5a6 100644
--- a/src/base/QXmppSocks.cpp
+++ b/src/base/QXmppSocks.cpp
@@ -201,16 +201,24 @@ QXmppSocksServer::QXmppSocksServer(QObject *parent)
{
m_server = new QTcpServer(this);
connect(m_server, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
+
+ m_server_v6 = new QTcpServer(this);
+ connect(m_server_v6, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
}
void QXmppSocksServer::close()
{
m_server->close();
+ m_server_v6->close();
}
-bool QXmppSocksServer::listen(const QHostAddress &address, quint16 port)
+bool QXmppSocksServer::listen(quint16 port)
{
- return m_server->listen(address, port);
+ if (!m_server->listen(QHostAddress::Any, port))
+ return false;
+
+ m_server_v6->listen(QHostAddress::AnyIPv6, m_server->serverPort());
+ return true;
}
bool QXmppSocksServer::isListening() const
@@ -218,11 +226,6 @@ bool QXmppSocksServer::isListening() const
return m_server->isListening();
}
-QHostAddress QXmppSocksServer::serverAddress() const
-{
- return m_server->serverAddress();
-}
-
quint16 QXmppSocksServer::serverPort() const
{
return m_server->serverPort();
@@ -230,7 +233,11 @@ quint16 QXmppSocksServer::serverPort() const
void QXmppSocksServer::slotNewConnection()
{
- QTcpSocket *socket = m_server->nextPendingConnection();
+ QTcpServer *server = qobject_cast<QTcpServer*>(sender());
+ if (!server)
+ return;
+
+ QTcpSocket *socket = server->nextPendingConnection();
if (!socket)
return;