vert-x3 / vertx-tcp-eventbus-bridge

Apache License 2.0
49 stars 44 forks source link

Invalid frame length for messages with utf-8 chars #15

Closed bramdrenthe closed 8 years ago

bramdrenthe commented 8 years ago

Version

Inside the javascript code:

function send(transport, message) {
    var buffer = new Buffer(message.length + 4);
    buffer.writeInt32BE(message.length, 0);
    buffer.write(message, 4, message.length, 'utf-8');
    transport.write(buffer);
}

I believe "message.length" returns the string length, not the byte length as encoded by "buffer.write(......, "utf-8"), resulting in only a partially sent message.

Proposed fix

This works for me:

function send(transport, message) {
    message = Buffer.from(message, "utf-8");
    var buffer = new Buffer(4);
    buffer.writeInt32BE(message.length, 0);
    buffer = Buffer.concat([buffer, message], buffer.length + message.length);
    transport.write(buffer);
}