Error handling, added data submission for connect.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 9 Apr 2011 05:41:31 +0000 (22:41 -0700)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 9 Apr 2011 05:41:31 +0000 (22:41 -0700)
src/main/resources/guacamole.js
src/main/resources/tunnel.js

index 4e4831c..688f225 100644 (file)
@@ -429,12 +429,19 @@ function GuacamoleClient(display, tunnel) {
     }
 
     this.disconnect = disconnect;
-    this.connect = function() {
+    this.connect = function(data) {
 
         setState(STATE_CONNECTING);
-        tunnel.connect();
-        setState(STATE_WAITING);
 
+        try {
+            tunnel.connect(data);
+        }
+        catch (e) {
+            setState(STATE_IDLE);
+            throw e;
+        }
+
+        setState(STATE_WAITING);
     };
 
     this.escapeGuacamoleString   = escapeGuacamoleString;
index 70b139d..d5a785a 100644 (file)
@@ -213,13 +213,24 @@ function GuacamoleHTTPTunnel(tunnelURL) {
 
     }
 
-    function connect() {
+    function connect(data) {
 
         // Start tunnel and connect synchronously
         var connect_xmlhttprequest = new XMLHttpRequest();
         connect_xmlhttprequest.open("POST", TUNNEL_CONNECT, false);
         connect_xmlhttprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
-        connect_xmlhttprequest.send(null);
+        connect_xmlhttprequest.send(data);
+
+        // If failure, throw error
+        if (connect_xmlhttprequest.status != 200) {
+
+            var message = connect_xmlhttprequest.getResponseHeader("X-Guacamole-Error-Message");
+            if (!message)
+                message = "Internal error";
+
+            throw new Error(message);
+
+        }
 
         // Get UUID from response
         tunnel_uuid = connect_xmlhttprequest.responseText;