diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java
index c61399196..040a917e3 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java
@@ -1,9 +1,6 @@
package net.sourceforge.guacamole.io;
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -22,6 +19,9 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
* along with this program. If not, see .
*/
+import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
+
/**
* Provides abstract and raw character read access to a stream of Guacamole
* instructions.
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java
index 71ceb6b6e..a4bb7c041 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java
@@ -1,9 +1,6 @@
package net.sourceforge.guacamole.io;
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -22,6 +19,9 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
* along with this program. If not, see .
*/
+import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
+
/**
* Provides abstract and raw character write access to a stream of Guacamole
* instructions.
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java
index 66638b1ca..7443d56c8 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java
@@ -1,12 +1,6 @@
package net.sourceforge.guacamole.io;
-import java.io.IOException;
-import java.io.Reader;
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
-import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -25,6 +19,12 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
* along with this program. If not, see .
*/
+import java.io.IOException;
+import java.io.Reader;
+import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
+import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
+
/**
* A GuacamoleReader which wraps a standard Java Reader, using that Reader as
* the Guacamole instruction stream.
@@ -54,6 +54,17 @@ public class ReaderGuacamoleReader implements GuacamoleReader {
@Override
public char[] read() throws GuacamoleException {
+ // If data was previously read via readInstruction(), return remaining
+ // data instead of reading more.
+ if (instructionBuffer != null) {
+
+ char[] chunk = new char[instructionBuffer.length - instructionStart];
+ System.arraycopy(instructionBuffer, instructionStart, chunk, 0, chunk.length);
+ instructionBuffer = null;
+
+ return chunk;
+ }
+
try {
// While we're blocking, or input is available
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java
index cfa8a6d0f..78f425519 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java
@@ -1,11 +1,6 @@
package net.sourceforge.guacamole.io;
-import java.io.IOException;
-import java.io.Writer;
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -24,6 +19,11 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
* along with this program. If not, see .
*/
+import java.io.IOException;
+import java.io.Writer;
+import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.protocol.GuacamoleInstruction;
+
/**
* A GuacamoleWriter which wraps a standard Java Writer, using that Writer as
* the Guacamole instruction stream.
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java
index bb6b58722..a61b12508 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java
@@ -1,10 +1,6 @@
package net.sourceforge.guacamole.net;
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.io.GuacamoleReader;
-import net.sourceforge.guacamole.io.GuacamoleWriter;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -23,6 +19,10 @@ import net.sourceforge.guacamole.io.GuacamoleWriter;
* along with this program. If not, see .
*/
+import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.io.GuacamoleReader;
+import net.sourceforge.guacamole.io.GuacamoleWriter;
+
/**
* Provides abstract socket-like access to a Guacamole connection.
*
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java
index 145df86ff..0db73caac 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java
@@ -1,8 +1,6 @@
package net.sourceforge.guacamole.properties;
-import net.sourceforge.guacamole.GuacamoleException;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -21,6 +19,8 @@ import net.sourceforge.guacamole.GuacamoleException;
* along with this program. If not, see .
*/
+import net.sourceforge.guacamole.GuacamoleException;
+
/**
* An abstract representation of a property in the guacamole.properties file,
* which parses into a specific type.
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java
index afa5ad8d0..3406da582 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java
@@ -1,12 +1,6 @@
package net.sourceforge.guacamole.protocol;
-import net.sourceforge.guacamole.io.GuacamoleReader;
-import net.sourceforge.guacamole.io.GuacamoleWriter;
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.net.GuacamoleSocket;
-import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -25,6 +19,12 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
* along with this program. If not, see .
*/
+import net.sourceforge.guacamole.io.GuacamoleReader;
+import net.sourceforge.guacamole.io.GuacamoleWriter;
+import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.net.GuacamoleSocket;
+import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
+
/**
* A GuacamoleSocket which pre-configures the connection based on a given
* GuacamoleConfiguration, completing the initial protocol handshake before
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java
index 728e3f8e8..878dbb2de 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java
@@ -1,8 +1,6 @@
package net.sourceforge.guacamole.protocol;
-import java.util.HashMap;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -21,6 +19,8 @@ import java.util.HashMap;
* along with this program. If not, see .
*/
+import java.util.HashMap;
+
/**
* All information necessary to complete the initial protocol handshake of a
* Guacamole session.
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java
index f0d65a3f0..bf8f7f614 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java
@@ -1,8 +1,6 @@
package net.sourceforge.guacamole.protocol;
-import java.util.HashMap;
-
/*
* Guacamole - Clientless Remote Desktop
* Copyright (C) 2010 Michael Jumper
@@ -21,6 +19,8 @@ import java.util.HashMap;
* along with this program. If not, see .
*/
+import java.util.HashMap;
+
/**
* An abstract representation of a Guacamole instruction, as defined by the
* Guacamole protocol.