mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Properly handle errors on write as well as read.
This commit is contained in:
@@ -181,8 +181,17 @@ Guacamole.HTTPTunnel = function(tunnelURL) {
|
|||||||
|
|
||||||
// Once response received, send next queued event.
|
// Once response received, send next queued event.
|
||||||
message_xmlhttprequest.onreadystatechange = function() {
|
message_xmlhttprequest.onreadystatechange = function() {
|
||||||
if (message_xmlhttprequest.readyState == 4)
|
if (message_xmlhttprequest.readyState == 4) {
|
||||||
sendPendingMessages();
|
|
||||||
|
// If an error occurs during send, handle it
|
||||||
|
if (message_xmlhttprequest.status != 200)
|
||||||
|
handleHTTPTunnelError(message_xmlhttprequest);
|
||||||
|
|
||||||
|
// Otherwise, continue the send loop
|
||||||
|
else
|
||||||
|
sendPendingMessages();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message_xmlhttprequest.send(outputMessageBuffer);
|
message_xmlhttprequest.send(outputMessageBuffer);
|
||||||
@@ -195,6 +204,22 @@ Guacamole.HTTPTunnel = function(tunnelURL) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function handleHTTPTunnelError(xmlhttprequest) {
|
||||||
|
|
||||||
|
// Get error message (if any)
|
||||||
|
var message = xmlhttprequest.getResponseHeader("X-Guacamole-Error-Message");
|
||||||
|
if (!message)
|
||||||
|
message = "Internal server error";
|
||||||
|
|
||||||
|
// Call error handler
|
||||||
|
if (tunnel.onerror) tunnel.onerror(message);
|
||||||
|
|
||||||
|
// Finish
|
||||||
|
tunnel.disconnect();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function handleResponse(xmlhttprequest) {
|
function handleResponse(xmlhttprequest) {
|
||||||
|
|
||||||
var interval = null;
|
var interval = null;
|
||||||
@@ -257,17 +282,7 @@ Guacamole.HTTPTunnel = function(tunnelURL) {
|
|||||||
|
|
||||||
// Halt on error during request
|
// Halt on error during request
|
||||||
else if (xmlhttprequest.status != 200) {
|
else if (xmlhttprequest.status != 200) {
|
||||||
|
handleHTTPTunnelError(xmlhttprequest);
|
||||||
// Get error message (if any)
|
|
||||||
var message = xmlhttprequest.getResponseHeader("X-Guacamole-Error-Message");
|
|
||||||
if (!message)
|
|
||||||
message = "Internal server error";
|
|
||||||
|
|
||||||
// Call error handler
|
|
||||||
if (tunnel.onerror) tunnel.onerror(message);
|
|
||||||
|
|
||||||
// Finish
|
|
||||||
tunnel.disconnect();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user