# HG changeset patch # User oc # Date 1413188637 -32400 # Node ID a640cd7001e1ec16fb11e27c11437715ccb95fcb # Parent b21a7842a41db3faa455ff07ea6c0c27c95c49dd fix checkdelay, and fix serial number option diff -r b21a7842a41d -r a640cd7001e1 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Mon Oct 13 13:16:49 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Mon Oct 13 17:23:57 2014 +0900 @@ -109,10 +109,9 @@ try { if(! rfb.isTreeManager()) { // client has 8byte packet sequence number - reader.mark(28); - if (rfb.addSerialNum) { - getLost(reader); //check seq consistency - } + // add serial number flag (4byte) + reader.mark(20+8+4); + getLost(reader); //check seq consistency } else { reader.mark(20); } @@ -267,8 +266,7 @@ context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false)); // repaintController.repaintCursor(); } else if (rect.getEncodingType() == EncodingType.CHECK_DELAY) { - int length = reader.readInt32(); - int checkDelaySize = length + 24; + int checkDelaySize = 24; reader.reset(); rfb.readSendData(checkDelaySize, reader, null); int port = rfb.acceptPort; @@ -315,6 +313,7 @@ } private void getLost(Reader reader) throws Exception { + int addSerialNumFlag = reader.readInt32(); long num = reader.readInt64(); if(num != ++checkCounter) { System.out.println("LostData" + (num - checkCounter)); diff -r b21a7842a41d -r a640cd7001e1 src/main/java/jp/ac/u_ryukyu/treevnc/SendCheckDelay.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/SendCheckDelay.java Mon Oct 13 13:16:49 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/SendCheckDelay.java Mon Oct 13 17:23:57 2014 +0900 @@ -20,9 +20,7 @@ LinkedList checkdelay = new LinkedList(); long time = System.currentTimeMillis(); checkdelay.add(new CheckDelay(0, 0, 0, 0, time, EncodingType.CHECK_DELAY).getMessage()); - if (rfb.addSerialNum) { - rfb.addSerialNumber(checkdelay); - } + rfb.addSerialNumber(checkdelay); rfb.multicastqueue.put(checkdelay); } diff -r b21a7842a41d -r a640cd7001e1 src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Mon Oct 13 13:16:49 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Mon Oct 13 17:23:57 2014 +0900 @@ -435,15 +435,14 @@ int width = context.getFbWidth(); int height = context.getFbHeight(); desktopSize.add(new UpdateRectangleMessage(width, height, EncodingType.INIT_DATA, context.getInitData(),id).getMessage()); - if (addSerialNum) { - addSerialNumber(desktopSize); - } + addSerialNumber(desktopSize); multicastqueue.put(desktopSize); } public void addSerialNumber(LinkedList bufs) { - ByteBuffer serialNum = multicastqueue.allocate(8); + ByteBuffer serialNum = multicastqueue.allocate(4+8); // addSerialNum flag + SerialNum + serialNum.putInt(1); serialNum.putLong(counter++); serialNum.flip(); bufs.addFirst(serialNum); @@ -565,10 +564,10 @@ throws TransportException, UnsupportedEncodingException { LinkedList bufs = new LinkedList(); ByteBuffer header = multicastqueue.allocate(16); - ByteBuffer serial = multicastqueue.allocate(8); + ByteBuffer serial = multicastqueue.allocate(4+8); if (!isTreeManager()) { - reader.readBytes(serial.array(),0,8); - serial.limit(8); + reader.readBytes(serial.array(),0,4+8); + serial.limit(4+8); } reader.mark(dataLen); reader.readBytes(header.array(), 0, 16); @@ -605,9 +604,7 @@ blen.flip(); bufs.addFirst(blen); bufs.addFirst(header); - if (addSerialNum) { - addSerialNumber(bufs); - } + addSerialNumber(bufs); multicastqueue.put(bufs); } catch (DataFormatException e) { throw new TransportException(e); @@ -625,9 +622,7 @@ b.limit(dataLen - 16); bufs.add(b); } - if (addSerialNum) { - this.addSerialNumber(bufs); - } + this.addSerialNumber(bufs); multicastqueue.put(bufs); return;