From 81cb2d60a3b2a1af76e5f23a87cdf5dc2c6b024d Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 21 Sep 2010 19:48:03 +0000 Subject: [PATCH] Temporary workaround to fix session issue - will be academic once handoff is implemented --- .../guacamole/net/output/InstructionStream.java | 5 +++++ guacamole/client/web/javascript/guacamole.js | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/guacamole/client/src/net/sourceforge/guacamole/net/output/InstructionStream.java b/guacamole/client/src/net/sourceforge/guacamole/net/output/InstructionStream.java index 33237d44a..27e5e65de 100644 --- a/guacamole/client/src/net/sourceforge/guacamole/net/output/InstructionStream.java +++ b/guacamole/client/src/net/sourceforge/guacamole/net/output/InstructionStream.java @@ -63,6 +63,11 @@ public class InstructionStream extends GuacamoleServlet { } + if (message == null) { + session.disconnect(); + throw new GuacamoleException("Disconnected."); + } + } catch (GuacamoleException e) { out.write("error:" + e.getMessage() + ";"); diff --git a/guacamole/client/web/javascript/guacamole.js b/guacamole/client/web/javascript/guacamole.js index d0f6e6cf7..f82fa58e6 100644 --- a/guacamole/client/web/javascript/guacamole.js +++ b/guacamole/client/web/javascript/guacamole.js @@ -576,14 +576,23 @@ function VNCClient(display) { }; + function disconnect() { // Only attempt disconnection not disconnected. if (currentState != STATE_DISCONNECTED && currentState != STATE_DISCONNECTING) { + var message = "disconnect;"; setState(STATE_DISCONNECTING); - sendMessage("disconnect;"); // End session + + // Send disconnect message (synchronously... as necessary until handoff is implemented) + var disconnect_xmlhttprequest = new XMLHttpRequest(); + disconnect_xmlhttprequest.open("POST", "inbound", false); + disconnect_xmlhttprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + disconnect_xmlhttprequest.setRequestHeader("Content-length", message.length); + disconnect_xmlhttprequest.send(message); + setState(STATE_DISCONNECTED); }