in src/firefox/rdp-client.js [21:48]
export function parseRDPMessage(data) {
const str = data.toString();
const sepIdx = str.indexOf(':');
if (sepIdx < 1) {
return { data };
}
const byteLen = parseInt(str.slice(0, sepIdx));
if (isNaN(byteLen)) {
const error = new Error('Error parsing RDP message length');
return { data, error, fatal: true };
}
if (data.length - (sepIdx + 1) < byteLen) {
// Can't parse yet, will retry once more data has been received.
return { data };
}
data = data.slice(sepIdx + 1);
const msg = data.slice(0, byteLen);
data = data.slice(byteLen);
try {
return { data, rdpMessage: JSON.parse(msg.toString()) };
} catch (error) {
return { data, error, fatal: false };
}
}