From e503287400aee034b7d93fa623766b5bcf2c06cb Mon Sep 17 00:00:00 2001 From: Seth Call Date: Sun, 31 Aug 2014 15:02:49 -0500 Subject: [PATCH] * VRFS-2110 - add simple guard to protect against xtra callbacks --- .../assets/javascripts/networkTestHelper.js | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/web/app/assets/javascripts/networkTestHelper.js b/web/app/assets/javascripts/networkTestHelper.js index 340c91916..ca851e59d 100644 --- a/web/app/assets/javascripts/networkTestHelper.js +++ b/web/app/assets/javascripts/networkTestHelper.js @@ -365,6 +365,11 @@ } } + // we know we are attempting a pass if the backend or prime guard timeout is not null + function isAttemptingPass() { + backendGuardTimeout != null || primePumpTimeout != null; + } + function clearPrimeGuard() { if (primeGuardTimeout) { clearTimeout(primeGuardTimeout); @@ -375,6 +380,7 @@ function setPrimeGuard() { clearPrimeGuard(); primeGuardTimeout = setTimeout(function () { + clearPrimeGuard(); primeTimedOut() }, (PRIME_PUMP_TIME + 10) * 1000); } @@ -382,6 +388,7 @@ function setBackendGuard() { clearBackendGuard(); backendGuardTimeout = setTimeout(function () { + clearBackendGuard(); backendTimedOut() }, (gon.ftue_network_test_duration + 1) * 1000); } @@ -550,6 +557,10 @@ } function primePumpTimeout(data) { + if(!isAttemptingPass()) { + logger.error("primePumpTimeout: already completed the test pass. indicates backend sent > 1 final event"); + return; + } clearPrimeGuard(); scoring = false; logger.debug("the prime pump routine timed out") @@ -557,6 +568,11 @@ } function primePumpComplete(data) { + if(!isAttemptingPass()) { + logger.error("primePumpComplete: already completed the test pass. indicates backend sent > 1 final event"); + return; + } + if (data.progress === true) { // waiting... logger.debug("pump prime progress report"); @@ -576,6 +592,11 @@ } function networkTestComplete(data) { + if(!isAttemptingPass()) { + logger.error("networkTestComplete: already completed the test pass. indicates backend sent > 1 final event"); + return; + } + var attempt = getCurrentAttempt(); function refineTest(up) { @@ -708,6 +729,11 @@ } function networkTestTimeout(data) { + if(!isAttemptingPass()) { + logger.error("networkTestTimeout: already completed the test pass. indicates backend sent > 1 final event"); + return; + } + clearBackendGuard(); logger.warn("network timeout when testing latency test: " + data); @@ -729,7 +755,6 @@ else { $startNetworkTestBtn.text('START NETWORK TEST').removeClass('button-grey').addClass('button-orange'); } - } function initializeNextButtonState() {