Fixes handshake failure caused by premature loop break when data is not ready.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4872 3789f03b-4d11-0410-bbf8-ca57d06f2519
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;