comparison src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java @ 525:fea7651ca24f

fix Broadcast packet offset
author k.fukuda
date Tue, 05 Mar 2019 19:33:33 +0900
parents ef2f70aee45a
children fcd833c2e148
comparison
equal deleted inserted replaced
524:ef2f70aee45a 525:fea7651ca24f
118 if (! isRunning) { 118 if (! isRunning) {
119 // server Change in direct mode 119 // server Change in direct mode
120 // pass the input stream to the TreeVNC protocol reader 120 // pass the input stream to the TreeVNC protocol reader
121 return; 121 return;
122 } 122 }
123 byte messageId = getMessageId(); 123 byte messageId = getMessageId(reader);
124 124
125 switch (messageId) { 125 switch (messageId) {
126 case FRAMEBUFFER_UPDATE: 126 case FRAMEBUFFER_UPDATE:
127 // logger.fine("Server message: FramebufferUpdate (0)"); 127 // logger.fine("Server message: FramebufferUpdate (0)");
128 framebufferUpdateMessage(reader); 128 framebufferUpdateMessage(reader);
191 stopTask(); 191 stopTask();
192 } 192 }
193 } 193 }
194 } 194 }
195 195
196 public byte getMessageId() throws Exception { 196 public byte getMessageId(Reader reader) throws Exception {
197 if(! rfb.isTreeManager() && rfb.isAddSerialNum()) { 197 if(! rfb.isTreeManager() && rfb.isAddSerialNum()) {
198 // client has 8byte packet sequence number 198 // client has 8byte packet sequence number
199 // add serial number flag (4byte) 199 // add serial number flag (4byte)
200 reader.mark(20+8+4); 200 reader.mark(20+8+4);
201 getLost(reader); //check seq consistency 201 getLost(reader); //check seq consistency
242 public void framebufferUpdateMessage(Reader reader) throws Exception { 242 public void framebufferUpdateMessage(Reader reader) throws Exception {
243 243
244 int numberOfRectangles; 244 int numberOfRectangles;
245 try { 245 try {
246 reader.readByte(); // padding 246 reader.readByte(); // padding
247 numberOfRectangles = this.reader.readUInt16(); 247 numberOfRectangles = reader.readUInt16();
248 if(numberOfRectangles > 3) { 248 if(numberOfRectangles > 3) {
249 System.out.println("numberofrectangle : " + numberOfRectangles); 249 System.out.println("numberofrectangle : " + numberOfRectangles);
250 if (rfb.getViewer().getUseMulticast()){ 250 if (rfb.getViewer().getUseMulticast()){
251 return; // Discard invalid packet 251 return; // Discard invalid packet
252 } 252 }