diff --git a/amt-desktop-0.0.2.js b/amt-desktop-0.0.2.js
index bed30d5..7af45dc 100644
--- a/amt-desktop-0.0.2.js
+++ b/amt-desktop-0.0.2.js
@@ -190,6 +190,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
_SendRefresh();
if (obj.onScreenSizeChange != null) { obj.onScreenSizeChange(obj, obj.ScreenWidth, obj.ScreenHeight); }
+ if (obj.parent) { obj.parent.disconnectCode = 50001; } // Everything looks good, a disconnection here would be Intel AMT initiated.
}
else if (obj.state == 4) {
switch (obj.acc[0]) {
diff --git a/amt-redir-node-0.1.0.js b/amt-redir-node-0.1.0.js
index a3c1532..589b101 100644
--- a/amt-redir-node-0.1.0.js
+++ b/amt-redir-node-0.1.0.js
@@ -28,7 +28,7 @@ var CreateAmtRedirect = function (module) {
obj.authuri = '/RedirectionService';
obj.digestRealmMatch = null;
obj.onStateChanged = null;
- obj.disconnectCode = 0;
+ obj.disconnectCode = 0; // 2 = BUSY, 3 = UNSUPPORTED, 256 = ERROR, 50000 = RLE16 fail, 50001 = AmtDisconnect.
function ToIntStr(v) { return String.fromCharCode((v & 0xFF), ((v >> 8) & 0xFF), ((v >> 16) & 0xFF), ((v >> 24) & 0xFF)); }
function ToShortStr(v) { return String.fromCharCode((v & 0xFF), ((v >> 8) & 0xFF)); }
@@ -47,6 +47,7 @@ var CreateAmtRedirect = function (module) {
obj.xtlsoptions = tlsoptions;
obj.xtlsFingerprint = tlsFingerprint;
obj.connectstate = 0;
+ obj.disconnectCode = 0;
if (obj.xtlsoptions && obj.xtlsoptions.meshServerConnect) {
// Use the websocket wrapper to connect to MeshServer server
diff --git a/index.html b/index.html
index 3368361..9a7f147 100644
--- a/index.html
+++ b/index.html
@@ -1028,7 +1028,7 @@
@@ -2908,6 +2908,7 @@
terminal.Stop();
// ###END###{Terminal}
// ###BEGIN###{Desktop}
+ desktop.disconnectCode = 0;
desktop.Stop();
// ###END###{Desktop}
}
@@ -8213,6 +8214,8 @@
*/
// ###END###{DesktopInband}
+ function connectDesktopButton(e) { desktop.disconnectCode = 0; connectDesktop(e); }
+
var connectDesktopConsent = false;
function connectDesktop(skipConsent) {
if (!desktop || xxdialogMode) return;
@@ -8394,6 +8397,7 @@
// ###END###{Desktop-Multi}
function onDesktopStateChange(desktop, state) {
+ var reconnect = false;
//console.log("onDesktopStateChange: " + state);
idx_connectbutton1.value = (state == 0) ? "Connect" : "Disconnect";
var input = ((state == 3) && !urlvars['kvmviewonly']);
@@ -8424,6 +8428,8 @@
messagebox("Remote Desktop", "The device indicated that this type of connection of not supported.");
} else if (desktop.disconnectCode == 50000) { // KVM-Disconnect
messagebox("Remote Desktop", "KVM disconnection, they may indicate that Intel AMT is unable to capture the display (Try RLE8 encoding), or unsupported GPU.");
+ } else if (desktop.disconnectCode == 50001) { // Intel AMT disconnect, try to connect again
+ reconnect = true;
}
break;
case 3:
@@ -8440,6 +8446,7 @@
// ###END###{Mode-NodeWebkit}
center();
updateDesktopState();
+ if (reconnect) { setTimeout(connectDesktop, 200); }
}
// Update remote desktop status
@@ -8488,7 +8495,7 @@
if (desktopsettings.showfocus == false) { desktop.m.focusmode = 0; idx_deskFocusBtn.value = "All Focus"; }
// ###END###{DesktopFocus}
desktop.m.frameRateDelay = (desktopsettings.limitFrameRate == true)?200:0;
- if (desktop.State != 0) { desktop.Stop(); setTimeout(connectDesktop, 50); }
+ if (desktop.State != 0) { desktop.disconnectCode = 0; desktop.Stop(); setTimeout(connectDesktop, 50); }
}
function applyDesktopSettings() {
@@ -13426,6 +13433,7 @@
// ###END###{Mode-NodeWebkit}
// ###BEGIN###{Desktop}
+ window['connectDesktopButton'] = connectDesktopButton;
window['connectDesktop'] = connectDesktop;
window['deskToggleFull'] = deskToggleFull;
window['showDesktopSettings'] = showDesktopSettings;