From 1dc96fbfa0de789d0a144fbed3c62b7027a5b2ff Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Thu, 7 Jun 2012 09:39:16 +0200 Subject: restore 7 second timeout for SOCKS candidate tests --- src/client/QXmppTransferManager.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/client/QXmppTransferManager.cpp') 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(); -- cgit v1.2.3