Client now handles tunnel errors.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Wed, 13 Jul 2011 07:17:34 +0000 (00:17 -0700)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Wed, 13 Jul 2011 07:17:34 +0000 (00:17 -0700)
src/main/resources/guacamole.js
src/main/resources/tunnel.js

index 3bff5d0..e32c62d 100644 (file)
@@ -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";
 
index 0f33c3e..278766e 100644 (file)
@@ -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");