# HG changeset patch # User mir3636 # Date 1550832795 -32400 # Node ID 6677ce2c7017a797a76190fafc929b870865efb6 # Parent 3fc0fedbc3fd1060151b8a2321c5090220fc6824 stop frame buffer multicast listenner diff -r 3fc0fedbc3fd -r 6677ce2c7017 Todo.txt --- a/Todo.txt Fri Feb 22 16:07:03 2019 +0900 +++ b/Todo.txt Fri Feb 22 19:53:15 2019 +0900 @@ -1,3 +1,10 @@ +Fri Feb 22 19:12:24 JST 2019 + マルチキャストとストリームを混在させる + WhereToConnectMessage にマルチキャストのフラグを用意する + ストリームなノードはツリーのルートの近い方にまとめる + あるところより下はマルチキャストしかいないのでフレームアップデートを流さない + 親ノードに接続する際に自分がマルチキャストかどうかを申告する + Tue Feb 19 15:01:43 JST 2019 マルチキャスト用のパラメーター Packet size diff -r 3fc0fedbc3fd -r 6677ce2c7017 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Fri Feb 22 16:07:03 2019 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Fri Feb 22 19:53:15 2019 +0900 @@ -141,7 +141,8 @@ serverCutText(); break; default: - logger.severe("Unsupported server message. Id = " + messageId); + logger.fine("Unsupported server message. Id = " + messageId); + continue; } } catch (TransportException e) { System.out.println(e.getMessage()); @@ -243,8 +244,13 @@ try { reader.readByte(); // padding this.numberOfRectangles = reader.readUInt16(); - if(numberOfRectangles != 1) + if(numberOfRectangles > 2) { System.out.println("numberofrectangle : " + numberOfRectangles); + if (rfb.getViewer().getUseMulticast()){ + + return; // Discard invalid packet + } + } while (numberOfRectangles-- > 0) { FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); rect.fill(reader); diff -r 3fc0fedbc3fd -r 6677ce2c7017 src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Fri Feb 22 16:07:03 2019 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Fri Feb 22 19:53:15 2019 +0900 @@ -1068,7 +1068,7 @@ public synchronized void startBroadcast(ReceiverTask receiverTask) { BroadcastRFBListener rfbBroadcastListener = viewer.getRfbBroadcastListener(); rfbBroadcastListener.init(this, receiverTask); - if (!rfbBroadcastListener.isStopFlag()) { + if (!isTreeManager && !rfbBroadcastListener.isStopFlag()) { Thread rfbBroadcast = new Thread(rfbBroadcastListener, "RFBBroadcast"); rfbBroadcast.start(); }