Skip to content

Commit 5e215c2

Browse files
author
Andrey Sidorov
committed
serialize flags as unsigned 32 bit int
1 parent ece3707 commit 5e215c2

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

lib/packets/handshake.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,20 @@ Handshake.fromPacket = function (packet)
2020
args.connectionId = packet.readInt32();
2121
args.authPluginData1 = packet.readBuffer(8);
2222
packet.skip(1);
23-
args.capabilityFlags = packet.readInt16();
23+
var capabilityFlagsBuffer = Buffer.allocUnsafe(4);
24+
capabilityFlagsBuffer[0] = packet.readInt8();
25+
capabilityFlagsBuffer[1] = packet.readInt8();
2426
if (packet.haveMoreData()) {
2527
args.characterSet = packet.readInt8();
2628
args.statusFlags = packet.readInt16();
2729
// upper 2 bytes
28-
args.capabilityFlags += packet.readInt16() << 16;
30+
capabilityFlagsBuffer[2] = packet.readInt8();
31+
capabilityFlagsBuffer[3] = packet.readInt8();
32+
args.capabilityFlags = capabilityFlagsBuffer.readUInt32LE(0);
2933
args.authPluginDataLength = packet.readInt8();
3034
packet.skip(10);
35+
} else {
36+
args.capabilityFlags = capabilityFlagsBuffer.readUInt16LE(0);
3137
}
3238
// var len = Math.max(12, args.authPluginDataLength - 8);
3339
args.authPluginData2 = packet.readBuffer(12);
@@ -66,10 +72,12 @@ Handshake.prototype.toPacket = function (sequenceId) {
6672
packet.writeInt32(this.connectionId);
6773
packet.writeBuffer(this.authPluginData1);
6874
packet.writeInt8(0);
69-
packet.writeInt16(this.capabilityFlags & 0xffff);
75+
var capabilityFlagsBuffer = Buffer.allocUnsafe(4);
76+
capabilityFlagsBuffer.writeUInt32LE(this.capabilityFlags);
77+
packet.writeBuffer(capabilityFlagsBuffer.slice(0, 2));
7078
packet.writeInt8(this.characterSet);
7179
packet.writeInt16(this.statusFlags);
72-
packet.writeInt16(this.capabilityFlags >> 16);
80+
packet.writeBuffer(capabilityFlagsBuffer.slice(2, 4));
7381
packet.writeInt8(21); // authPluginDataLength
7482
packet.skip(10);
7583
packet.writeBuffer(this.authPluginData2);

0 commit comments

Comments
 (0)