aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-09-18 13:28:11 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-09-18 13:28:11 +0200
commitb0ab0287f7c8a16e1f8db39ba2e202574fbd6ac2 (patch)
treeb9dc34544816f1bdec92fe515b7111b04cb76162 /src/base
parent502d08dc25086af5bae7b4906ed59b19b5170312 (diff)
downloadqxmpp-b0ab0287f7c8a16e1f8db39ba2e202574fbd6ac2.tar.gz
move IPv6 specifics inside QXmppSocksServer
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppSocks.cpp23
-rw-r--r--src/base/QXmppSocks.h4
2 files changed, 17 insertions, 10 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;
diff --git a/src/base/QXmppSocks.h b/src/base/QXmppSocks.h
index 1a0f3f9b..23862ae4 100644
--- a/src/base/QXmppSocks.h
+++ b/src/base/QXmppSocks.h
@@ -62,9 +62,8 @@ public:
QXmppSocksServer(QObject *parent=0);
void close();
bool isListening() const;
- bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0);
+ bool listen(quint16 port = 0);
- QHostAddress serverAddress() const;
quint16 serverPort() const;
signals:
@@ -76,6 +75,7 @@ private slots:
private:
QTcpServer *m_server;
+ QTcpServer *m_server_v6;
QMap<QTcpSocket*, int> m_states;
};