forked from j62/ctbrec
Fix MyFreeCams websocket message parsing
This commit is contained in:
parent
4205cb6ff2
commit
d2c2cb476b
|
@ -455,17 +455,19 @@ public class MyFreeCamsClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Message parseMessage(StringBuilder msgBuffer) throws UnsupportedEncodingException {
|
private Message parseMessage(StringBuilder msgBuffer) throws UnsupportedEncodingException {
|
||||||
if (msgBuffer.length() < 4) {
|
int packetLengthBytes = 6;
|
||||||
|
if (msgBuffer.length() < packetLengthBytes) {
|
||||||
// packet size not transmitted completely
|
// packet size not transmitted completely
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
int packetLength = Integer.parseInt(msgBuffer.substring(0, 4));
|
int packetLength = Integer.parseInt(msgBuffer.substring(0, packetLengthBytes));
|
||||||
if (packetLength > msgBuffer.length() - 4) {
|
if (packetLength > msgBuffer.length() - packetLengthBytes) {
|
||||||
// packet not complete
|
// packet not complete
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
msgBuffer.delete(0, 4);
|
LOG.trace("<-- {}", msgBuffer);
|
||||||
|
msgBuffer.delete(0, packetLengthBytes);
|
||||||
StringBuilder rawMessage = new StringBuilder(msgBuffer.substring(0, packetLength));
|
StringBuilder rawMessage = new StringBuilder(msgBuffer.substring(0, packetLength));
|
||||||
int type = parseNextInt(rawMessage);
|
int type = parseNextInt(rawMessage);
|
||||||
int sender = parseNextInt(rawMessage);
|
int sender = parseNextInt(rawMessage);
|
||||||
|
|
Loading…
Reference in New Issue