@@ -20,14 +20,20 @@ Handshake.fromPacket = function (packet)
20
20
args . connectionId = packet . readInt32 ( ) ;
21
21
args . authPluginData1 = packet . readBuffer ( 8 ) ;
22
22
packet . skip ( 1 ) ;
23
- args . capabilityFlags = packet . readInt16 ( ) ;
23
+ var capabilityFlagsBuffer = Buffer . allocUnsafe ( 4 ) ;
24
+ capabilityFlagsBuffer [ 0 ] = packet . readInt8 ( ) ;
25
+ capabilityFlagsBuffer [ 1 ] = packet . readInt8 ( ) ;
24
26
if ( packet . haveMoreData ( ) ) {
25
27
args . characterSet = packet . readInt8 ( ) ;
26
28
args . statusFlags = packet . readInt16 ( ) ;
27
29
// 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 ) ;
29
33
args . authPluginDataLength = packet . readInt8 ( ) ;
30
34
packet . skip ( 10 ) ;
35
+ } else {
36
+ args . capabilityFlags = capabilityFlagsBuffer . readUInt16LE ( 0 ) ;
31
37
}
32
38
// var len = Math.max(12, args.authPluginDataLength - 8);
33
39
args . authPluginData2 = packet . readBuffer ( 12 ) ;
@@ -66,10 +72,12 @@ Handshake.prototype.toPacket = function (sequenceId) {
66
72
packet . writeInt32 ( this . connectionId ) ;
67
73
packet . writeBuffer ( this . authPluginData1 ) ;
68
74
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 ) ) ;
70
78
packet . writeInt8 ( this . characterSet ) ;
71
79
packet . writeInt16 ( this . statusFlags ) ;
72
- packet . writeInt16 ( this . capabilityFlags >> 16 ) ;
80
+ packet . writeBuffer ( capabilityFlagsBuffer . slice ( 2 , 4 ) ) ;
73
81
packet . writeInt8 ( 21 ) ; // authPluginDataLength
74
82
packet . skip ( 10 ) ;
75
83
packet . writeBuffer ( this . authPluginData2 ) ;
0 commit comments