diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-06-07 09:39:16 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-06-07 09:39:16 +0200 |
| commit | 1dc96fbfa0de789d0a144fbed3c62b7027a5b2ff (patch) | |
| tree | 0dd13162cc368ddfabb3af8d65eeac18c8f5f599 /src | |
| parent | f260085ef199428e9287a3f36387d697709af4ef (diff) | |
| download | qxmpp-1dc96fbfa0de789d0a144fbed3c62b7027a5b2ff.tar.gz | |
restore 7 second timeout for SOCKS candidate tests
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/QXmppTransferManager.cpp | 17 | ||||
| -rw-r--r-- | src/client/QXmppTransferManager_p.h | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/client/QXmppTransferManager.cpp b/src/client/QXmppTransferManager.cpp index d7bad7de..539d61d0 100644 --- a/src/client/QXmppTransferManager.cpp +++ b/src/client/QXmppTransferManager.cpp @@ -394,6 +394,7 @@ void QXmppTransferJob::terminate(QXmppTransferJob::Error cause) QXmppTransferIncomingJob::QXmppTransferIncomingJob(const QString& jid, QXmppClient* client, QObject* parent) : QXmppTransferJob(jid, IncomingDirection, client, parent) , m_candidateClient(0) + , m_candidateTimer(0) { } @@ -439,6 +440,7 @@ void QXmppTransferIncomingJob::connectToNextHost() // try to connect to stream host m_candidateClient = new QXmppSocksClient(m_candidateHost.host(), m_candidateHost.port(), this); + m_candidateTimer = new QTimer(this); check = connect(m_candidateClient, SIGNAL(disconnected()), this, SLOT(_q_candidateDisconnected())); @@ -448,6 +450,12 @@ void QXmppTransferIncomingJob::connectToNextHost() this, SLOT(_q_candidateReady())); Q_ASSERT(check); + check = connect(m_candidateTimer, SIGNAL(timeout()), + this, SLOT(_q_candidateDisconnected())); + Q_ASSERT(check); + + m_candidateTimer->setSingleShot(true); + m_candidateTimer->start(socksTimeout); m_candidateClient->connectToHost(hostName, 0); } @@ -483,9 +491,16 @@ void QXmppTransferIncomingJob::_q_candidateReady() if (!m_candidateClient) return; + info(QString("Connected to streamhost: %1 (%2:%3)").arg( + m_candidateHost.jid(), + m_candidateHost.host().toString(), + QString::number(m_candidateHost.port()))); + setState(QXmppTransferJob::TransferState); d->socksSocket = m_candidateClient; m_candidateClient = 0; + m_candidateTimer->deleteLater(); + m_candidateTimer = 0; check = connect(d->socksSocket, SIGNAL(readyRead()), this, SLOT(_q_receiveData())); @@ -516,6 +531,8 @@ void QXmppTransferIncomingJob::_q_candidateDisconnected() m_candidateClient->deleteLater(); m_candidateClient = 0; + m_candidateTimer->deleteLater(); + m_candidateTimer = 0; // try next host connectToNextHost(); diff --git a/src/client/QXmppTransferManager_p.h b/src/client/QXmppTransferManager_p.h index 713353b7..5a21001e 100644 --- a/src/client/QXmppTransferManager_p.h +++ b/src/client/QXmppTransferManager_p.h @@ -38,6 +38,7 @@ // We mean it. // +class QTimer; class QXmppSocksClient; class QXmppTransferIncomingJob : public QXmppTransferJob @@ -61,6 +62,7 @@ private: QXmppByteStreamIq::StreamHost m_candidateHost; QXmppSocksClient *m_candidateClient; + QTimer *m_candidateTimer; QList<QXmppByteStreamIq::StreamHost> m_streamCandidates; QString m_streamOfferId; QString m_streamOfferFrom; |
