Spawn a new viewer on ClientRedirects, otherwise ConnParams may not be initialized correctly.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4895 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index 154a719..714dff0 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -388,9 +388,7 @@
       setServerPort(port);
       sock = new TcpSocket(host, port);
       vlog.info("Redirected to "+host+":"+port);
-      setStreams(sock.inStream(), sock.outStream());
-      sock.inStream().setBlockCallback(this);
-      initialiseProtocol();
+      viewer.newViewer(viewer, sock, true);
     } catch (java.lang.Exception e) {
       throw new Exception(e.toString());
     }
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index 26f41b6..799ee5d 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -247,12 +247,18 @@
     firstApplet = true;
   }
 
-  public static void newViewer(VncViewer oldViewer, Socket sock) {
+  public static void newViewer(VncViewer oldViewer, Socket sock, boolean close) {
     VncViewer viewer = new VncViewer();
     viewer.applet = oldViewer.applet;
-    viewer.firstApplet = false;
+    viewer.firstApplet = (close) ? true : false;
     viewer.sock = sock;
     viewer.start();
+    if (close)
+      oldViewer.stop();
+  }
+
+  public static void newViewer(VncViewer oldViewer, Socket sock) {
+    newViewer(oldViewer, sock, false);
   }
 
   public static void newViewer(VncViewer oldViewer) {