From f11fddaaa15f7b803bcc54f95e0ac15e22c1ec31 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 19 Sep 2010 01:19:58 -0700 Subject: [PATCH] No session creation in InstructionStream, made connect syncronous to avoid current session race --- .../guacamole/net/output/InstructionStream.java | 7 ------- guacamole/client/web/javascript/guacamole.js | 14 +++++++++++--- 2 files changed, 11 insertions(+), 10 deletions(-) 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 bba89540c..33237d44a 100644 --- a/guacamole/client/src/net/sourceforge/guacamole/net/output/InstructionStream.java +++ b/guacamole/client/src/net/sourceforge/guacamole/net/output/InstructionStream.java @@ -32,16 +32,9 @@ import net.sourceforge.guacamole.net.GuacamoleSession; public class InstructionStream extends GuacamoleServlet { - protected boolean shouldCreateSession() { - return true; - } - @Override protected void handleRequest(GuacamoleSession session, HttpServletRequest request, HttpServletResponse response) throws GuacamoleException { - if (!session.isConnected()) - session.connect(); - ReentrantLock instructionStreamLock = session.getInstructionStreamLock(); instructionStreamLock.lock(); diff --git a/guacamole/client/web/javascript/guacamole.js b/guacamole/client/web/javascript/guacamole.js index 7f0c70345..d0f6e6cf7 100644 --- a/guacamole/client/web/javascript/guacamole.js +++ b/guacamole/client/web/javascript/guacamole.js @@ -559,10 +559,18 @@ function VNCClient(display) { this.connect = function() { - // Attempt connection - setState(STATE_CONNECTING); - sendMessage("connect;"); // Start new guacamole session + var message = "connect;"; + setState(STATE_CONNECTING); + + // Send connect message (synchronously... as necessary until handoff is implemented) + var connect_xmlhttprequest = new XMLHttpRequest(); + connect_xmlhttprequest.open("POST", "inbound", false); + connect_xmlhttprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + connect_xmlhttprequest.setRequestHeader("Content-length", message.length); + connect_xmlhttprequest.send(message); + + // Start reading data setState(STATE_WAITING); handleResponse(makeRequest());