Mercurial > hg > Applications > TreeVNC
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 } |