@@ -35,20 +35,21 @@ public OkPacket(ReadableByteBuf buf, Context context) {
3535 if (buf .readableBytes () > 0 && context .hasClientCapability (Capabilities .CLIENT_SESSION_TRACK )) {
3636 buf .skip (buf .readIntLengthEncodedNotNull ()); // skip info
3737 while (buf .readableBytes () > 0 ) {
38- if (buf .readIntLengthEncodedNotNull () > 0 ) {
39- switch (buf .readByte ()) {
38+ ReadableByteBuf sessionStateBuf = buf .readLengthBuffer ();
39+ while (sessionStateBuf .readableBytes () > 0 ) {
40+ switch (sessionStateBuf .readByte ()) {
4041 case StateChange .SESSION_TRACK_SYSTEM_VARIABLES :
41- buf . readIntLengthEncodedNotNull ();
42- String variable = buf .readString (buf .readIntLengthEncodedNotNull ());
43- Integer len = buf .readLength ();
44- String value = len == null ? null : buf .readString (len );
42+ ReadableByteBuf tmpBuf2 = sessionStateBuf . readLengthBuffer ();
43+ String variable = tmpBuf2 .readString (tmpBuf2 .readIntLengthEncodedNotNull ());
44+ Integer len = tmpBuf2 .readLength ();
45+ String value = len == null ? null : tmpBuf2 .readString (len );
4546 logger .debug ("System variable change: {} = {}" , variable , value );
4647 break ;
4748
4849 case StateChange .SESSION_TRACK_SCHEMA :
49- buf .readIntLengthEncodedNotNull ();
50- Integer dbLen = buf .readLength ();
51- String database = dbLen == null ? null : buf .readString (dbLen );
50+ sessionStateBuf .readIntLengthEncodedNotNull ();
51+ Integer dbLen = sessionStateBuf .readLength ();
52+ String database = dbLen == null ? null : sessionStateBuf .readString (dbLen );
5253 context .setDatabase (database .isEmpty () ? null : database );
5354 logger .debug ("Database change: is '{}'" , database );
5455 break ;
0 commit comments