}
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;
}
- 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;