diff options
Diffstat (limited to 'media-sound/mumble/files/pinger_fix.patch')
-rw-r--r-- | media-sound/mumble/files/pinger_fix.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/media-sound/mumble/files/pinger_fix.patch b/media-sound/mumble/files/pinger_fix.patch new file mode 100644 index 0000000..a701100 --- /dev/null +++ b/media-sound/mumble/files/pinger_fix.patch @@ -0,0 +1,69 @@ +diff --git a/src/mumble/ServerHandler.cpp b/src/mumble/ServerHandler.cpp +index 7e30e76a..d02ad0c1 100644 +--- a/src/mumble/ServerHandler.cpp ++++ b/src/mumble/ServerHandler.cpp +@@ -349,10 +349,9 @@ void ServerHandler::run() { + + tTimestamp.restart(); + +- // Setup ping timer; +- QTimer *ticker = new QTimer(this); +- connect(ticker, SIGNAL(timeout()), this, SLOT(sendPing())); +- ticker->start(5000); ++ ping_ticker = new QTimer(this); ++ connect(ping_ticker, SIGNAL(timeout()), this, SLOT(sendPing())); ++ + + g.mw->rtLast = MumbleProto::Reject_RejectType_None; + +@@ -370,6 +369,8 @@ void ServerHandler::run() { + shouldTryNextTargetServer = false; + } + ++ ping_ticker->stop(); ++ + if (qusUdp) { + QMutexLocker qml(&qmUdp); + +@@ -384,7 +385,6 @@ void ServerHandler::run() { + qusUdp = NULL; + } + +- ticker->stop(); + + ConnectionPtr cptr(cConnection); + if (cptr) { +@@ -619,7 +619,7 @@ void ServerHandler::serverConnectionStateChanged(QAbstractSocket::SocketState st + tConnectionTimeoutTimer = new QTimer(); + connect(tConnectionTimeoutTimer, SIGNAL(timeout()), this, SLOT(serverConnectionTimeoutOnConnect())); + tConnectionTimeoutTimer->setSingleShot(true); +- tConnectionTimeoutTimer->start(30000); ++ tConnectionTimeoutTimer->start(120000); //this may take some time on server with large dh + } else if (state == QAbstractSocket::ConnectedState) { + // Start TLS handshake + qtsSock->startClientEncryption(); +@@ -651,6 +651,11 @@ void ServerHandler::serverConnectionConnected() { + return; + } + ++ // Setup ping timer; ++ //do this after succesfull connection, not before ++ ping_ticker->start(10000); //do not waste too much traffic here, 10 seconds instead of 5 is ok ++ ++ + MumbleProto::Version mpv; + mpv.set_release(u8(QLatin1String(MUMBLE_RELEASE))); + +diff --git a/src/mumble/ServerHandler.h b/src/mumble/ServerHandler.h +index bb558c4b..130e65aa 100644 +--- a/src/mumble/ServerHandler.h ++++ b/src/mumble/ServerHandler.h +@@ -77,7 +77,7 @@ class ServerHandler : public QThread { + public: + Timer tTimestamp; + int iInFlightTCPPings; +- QTimer *tConnectionTimeoutTimer; ++ QTimer *tConnectionTimeoutTimer, *ping_ticker; + QList<QSslError> qlErrors; + QList<QSslCertificate> qscCert; + QSslCipher qscCipher; |