From 2c0bb4d90c0c720936be60459a8e144c64355426 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 13 Jul 2011 00:17:34 -0700 Subject: [PATCH] Client now handles tunnel errors. --- src/main/resources/guacamole.js | 5 +++++ src/main/resources/tunnel.js | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/resources/guacamole.js b/src/main/resources/guacamole.js index 3bff5d0..e32c62d 100644 --- a/src/main/resources/guacamole.js +++ b/src/main/resources/guacamole.js @@ -44,6 +44,11 @@ Guacamole.Client = function(display, tunnel) { tunnel.oninstruction = doInstruction; + tunnel.onerror = function(message) { + if (guac_client.onerror) + guac_client.onerror(message); + }; + // Display must be relatively positioned for mouse to be handled properly display.style.position = "relative"; diff --git a/src/main/resources/tunnel.js b/src/main/resources/tunnel.js index 0f33c3e..278766e 100644 --- a/src/main/resources/tunnel.js +++ b/src/main/resources/tunnel.js @@ -169,8 +169,8 @@ Guacamole.HTTPTunnel = function(tunnelURL) { return; } - // Start next request as soon as possible - if (xmlhttprequest.readyState >= 2 && nextRequest == null) + // Start next request as soon as possible IF request was successful + if (xmlhttprequest.readyState >= 2 && nextRequest == null && xmlhttprequest.status == 200) nextRequest = makeRequest(); // Parse stream when data is received and when complete. @@ -185,8 +185,14 @@ Guacamole.HTTPTunnel = function(tunnelURL) { clearInterval(interval); } + // If canceled, stop transfer + if (xmlhttprequest.status == 0) { + tunnel.disconnect(); + return; + } + // Halt on error during request - if (xmlhttprequest.status == 0 || xmlhttprequest.status != 200) { + else if (xmlhttprequest.status != 200) { // Get error message (if any) var message = xmlhttprequest.getResponseHeader("X-Guacamole-Error-Message"); -- 1.7.10.4