# HG changeset patch # User oshiro # Date 1548317945 -32400 # Node ID 73b52954efc92291be880a670b9375afd9c30ada # Parent 6e30cb5d905f90b7179cf6f1d2c10124bdba2686 handling vncconnection failure rfb/protocol/Protocol.java HG: changed src/main/java/com/glavsoft/ rfb/protocol/ReceiverTask.java HG: changed src/viewer_swing/ java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java diff -r 6e30cb5d905f -r 73b52954efc9 src/main/java/com/glavsoft/rfb/protocol/Protocol.java --- a/src/main/java/com/glavsoft/rfb/protocol/Protocol.java Wed Jan 23 17:57:16 2019 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/Protocol.java Thu Jan 24 17:19:05 2019 +0900 @@ -212,6 +212,7 @@ receiverThread = new Thread(receiverTask, "RfbReceiverTask"); receiverThread.start(); + sendRefreshMessage(); } private void correctServerPixelFormat() { @@ -280,7 +281,7 @@ public void sendRefreshMessage() { if (receiverTask!=null) { sendMessage(receiverTask.fullscreenFbUpdateIncrementalRequest); - logger.fine("sent: full FB Refresh"); + logger.fine("sent: incremental FB Refresh"); } } @@ -294,12 +295,12 @@ public synchronized void cleanUpSession() { if (senderTask != null) { // stop senderTask to VNCServer task. - senderTask.stopTask(); - try { - senderThread.join(); - } catch (InterruptedException e) { - System.out.println("any thread has interrupted the current thread"); - } + senderTask.stopTask(); + //try { + // senderThread.join(); + //} catch (InterruptedException e) { + // System.out.println("any thread has interrupted the current thread"); + //} senderTask = null; } stopReceiverTask(); diff -r 6e30cb5d905f -r 73b52954efc9 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Wed Jan 23 17:57:16 2019 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Thu Jan 24 17:19:05 2019 +0900 @@ -153,22 +153,10 @@ System.out.println(e.getMessage()); System.out.println(e.getCause().getClass().getSimpleName()); if (e.getCause().getClass().getSimpleName().equals("SocketTimeoutException")) { - try { - if (rfb.isTreeManager()) { - sendFrameBufferUpdateRequest(); - } - reader.reset(); - } catch (TransportException e1) { - e1.printStackTrace(); - } + sendFrameBufferUpdateRequest(); continue; - } else if (e.getMessage() == "java.io.EOFException") { - try { - sendFrameBufferUpdateRequest(); - reader.reset(); - } catch (TransportException e1) { - e1.printStackTrace(); - } +// } else if (e.getMessage() == "java.io.EOFException") { +// sendFrameBufferUpdateRequest(); } logger.severe("Close session : ReceiverTask : " + e.getMessage()); if(!rfb.isTreeManager() && !(rfb.getTerminationType())) { @@ -182,6 +170,8 @@ } catch (TransportException e1) { e1.printStackTrace(); } + } else { + rfb.sendDesktopSizeChange((short) -1); } stopTask(); } catch (ProtocolException e) { @@ -209,6 +199,17 @@ } } + public void sendFrameBufferUpdateRequest() { + try { + if (rfb.isTreeManager()) { + sendFrameBufferUpdateRequest0(); + } + reader.reset(); + } catch (TransportException e1) { + e1.printStackTrace(); + } + } + private void sleep(int i) { try { Thread.sleep(i); @@ -355,9 +356,7 @@ reader.close(); } - if (rfb.isTreeManager()) { - sendFrameBufferUpdateRequest(); - } + sendFrameBufferUpdateRequest(); } private void setScreenParameter(FramebufferUpdateRectangle rect,int singleWidth ,int singleHeight) { @@ -379,7 +378,7 @@ } } - private void sendFrameBufferUpdateRequest() { + private void sendFrameBufferUpdateRequest0() { if (needSendPixelFormat) { needSendPixelFormat = false; context.setPixelFormat(pixelFormat); diff -r 6e30cb5d905f -r 73b52954efc9 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Wed Jan 23 17:57:16 2019 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Thu Jan 24 17:19:05 2019 +0900 @@ -174,11 +174,11 @@ if(!myRfb.getCuiVersion()) viewerWindow = viewerWindowFactory.createViewerWindow(workingProtocol, rfbSettings, uiSettings, connectionString, presenter); workingProtocol.startNormalHandling(this,viewerWindow.getSurface(), clipboardController, myRfb); - try { - workingSocket.setSoTimeout(1000); - } catch (SocketException e) { - e.printStackTrace(); - } +// try { +// workingSocket.setSoTimeout(1000); +// } catch (SocketException e) { +// e.printStackTrace(); +// } presenter.showMessage("Started"); if(!myRfb.getCuiVersion())