aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent502d08dc25086af5bae7b4906ed59b19b5170312 (diff)
downloadqxmpp-b0ab0287f7c8a16e1f8db39ba2e202574fbd6ac2.tar.gz
move IPv6 specifics inside QXmppSocksServer
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppSocks.cpp23
-rw-r--r--src/base/QXmppSocks.h4
-rw-r--r--src/client/QXmppTransferManager.cpp23
3 files changed, 21 insertions, 29 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;
};
diff --git a/src/client/QXmppTransferManager.cpp b/src/client/QXmppTransferManager.cpp
index 3b59cb54..1fc6d7b2 100644
--- a/src/client/QXmppTransferManager.cpp
+++ b/src/client/QXmppTransferManager.cpp
@@ -736,7 +736,6 @@ public:
QString proxy;
bool proxyOnly;
QXmppSocksServer *socksServer;
- QXmppSocksServer *socksServerV6;
QXmppTransferJob::Methods supportedMethods;
private:
@@ -748,7 +747,6 @@ QXmppTransferManagerPrivate::QXmppTransferManagerPrivate(QXmppTransferManager *q
: ibbBlockSize(4096)
, proxyOnly(false)
, socksServer(0)
- , socksServerV6(0)
, supportedMethods(QXmppTransferJob::AnyMethod)
, q(qq)
{
@@ -799,16 +797,8 @@ QXmppTransferManager::QXmppTransferManager()
check = connect(d->socksServer, SIGNAL(newConnection(QTcpSocket*,QString,quint16)),
this, SLOT(_q_socksServerConnected(QTcpSocket*,QString,quint16)));
Q_ASSERT(check);
- if (!d->socksServer->listen(QHostAddress::Any)) {
- qWarning("QXmppSocksServer could not start listening for IPv4");
- }
-
- d->socksServerV6 = new QXmppSocksServer(this);
- check = connect(d->socksServerV6, SIGNAL(newConnection(QTcpSocket*,QString,quint16)),
- this, SLOT(_q_socksServerConnected(QTcpSocket*,QString,quint16)));
- Q_ASSERT(check);
- if (!d->socksServerV6->listen(QHostAddress::AnyIPv6)) {
- qWarning("QXmppSocksServer could not start listening for IPv6");
+ if (!d->socksServer->listen()) {
+ qWarning("QXmppSocksServer could not start listening");
}
}
@@ -1446,13 +1436,8 @@ void QXmppTransferManager::socksServerSendOffer(QXmppTransferJob *job)
QXmppByteStreamIq::StreamHost streamHost;
streamHost.setJid(ownJid);
streamHost.setHost(address.toString());
- if (address.protocol() == QAbstractSocket::IPv4Protocol && d->socksServer->isListening()) {
- streamHost.setPort(d->socksServer->serverPort());
- streamHosts.append(streamHost);
- } else if (address.protocol() == QAbstractSocket::IPv6Protocol && d->socksServerV6->isListening()) {
- streamHost.setPort(d->socksServerV6->serverPort());
- streamHosts.append(streamHost);
- }
+ streamHost.setPort(d->socksServer->serverPort());
+ streamHosts.append(streamHost);
}
}