diff --git a/java/com/tigervnc/rfb/CConnection.java b/java/com/tigervnc/rfb/CConnection.java
index 1e55f04..e5392a1 100644
--- a/java/com/tigervnc/rfb/CConnection.java
+++ b/java/com/tigervnc/rfb/CConnection.java
@@ -74,12 +74,11 @@
   private void processVersionMsg() 
   {
     vlog.debug("reading protocol version");
-    Boolean done = new Boolean(true);
-    if (!cp.readVersion(is, done)) {
+    if (!cp.readVersion(is)) {
       state_ = RFBSTATE_INVALID;
       throw new Exception("reading version failed: not an RFB server?");
     }
-    if (!done.booleanValue()) return;
+    if (!cp.done) return;
 
     vlog.info("Server supports RFB protocol version "
               +cp.majorVersion+"."+ cp.minorVersion);
diff --git a/java/com/tigervnc/rfb/ConnParams.java b/java/com/tigervnc/rfb/ConnParams.java
index 0803723..3ea0496 100644
--- a/java/com/tigervnc/rfb/ConnParams.java
+++ b/java/com/tigervnc/rfb/ConnParams.java
@@ -43,20 +43,20 @@
     setName("");
   }
 
-  public boolean readVersion(InStream is, Boolean done) 
+  public boolean readVersion(InStream is) 
   {
+    done = false;
     if (verStrPos >= 12) return false;
     verStr = new StringBuilder(13);
-    is.check(12);
-    while (verStrPos < 12) {
+    while (is.checkNoWait(1) && verStrPos < 12) {
       verStr.insert(verStrPos++,(char)is.readU8());
     }
 
     if (verStrPos < 12) {
-      done = Boolean.valueOf(false);
+      done = false;
       return true;
     }
-    done = Boolean.valueOf(true);
+    done = true;
     verStr.insert(12,'0');
     verStrPos = 0;
     if (verStr.toString().matches("RFB \\d{3}\\.\\d{3}\\n0")) {
@@ -181,6 +181,7 @@
       }
     }
   }
+  public boolean done;
   public boolean useCopyRect;
 
   public boolean supportsLocalCursor;
