diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-18 13:28:11 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-18 13:28:11 +0200 |
| commit | b0ab0287f7c8a16e1f8db39ba2e202574fbd6ac2 (patch) | |
| tree | b9dc34544816f1bdec92fe515b7111b04cb76162 /src | |
| parent | 502d08dc25086af5bae7b4906ed59b19b5170312 (diff) | |
| download | qxmpp-b0ab0287f7c8a16e1f8db39ba2e202574fbd6ac2.tar.gz | |
move IPv6 specifics inside QXmppSocksServer
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppSocks.cpp | 23 | ||||
| -rw-r--r-- | src/base/QXmppSocks.h | 4 | ||||
| -rw-r--r-- | src/client/QXmppTransferManager.cpp | 23 |
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); } } |
