From 711e756c98e4db6df047b47209abc797bee2d654 Mon Sep 17 00:00:00 2001 From: guoaomen Date: Wed, 30 Nov 2022 14:05:08 +0800 Subject: [PATCH] fix: add the determination of whether ssl is enabled when the buffer is always full but no new data has been read, an error needs to be reported --- .../mysql/proto/handler/Impl/MySQLProtoHandlerImpl.java | 3 ++- .../actiontech/dble/net/connection/AbstractConnection.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/actiontech/dble/backend/mysql/proto/handler/Impl/MySQLProtoHandlerImpl.java b/src/main/java/com/actiontech/dble/backend/mysql/proto/handler/Impl/MySQLProtoHandlerImpl.java index d2a889961..cbd4e21e6 100644 --- a/src/main/java/com/actiontech/dble/backend/mysql/proto/handler/Impl/MySQLProtoHandlerImpl.java +++ b/src/main/java/com/actiontech/dble/backend/mysql/proto/handler/Impl/MySQLProtoHandlerImpl.java @@ -2,6 +2,7 @@ package com.actiontech.dble.backend.mysql.proto.handler.Impl; import com.actiontech.dble.backend.mysql.proto.handler.ProtoHandler; import com.actiontech.dble.backend.mysql.proto.handler.ProtoHandlerResult; +import com.actiontech.dble.config.model.SystemConfig; import com.actiontech.dble.net.mysql.MySQLPacket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,7 +80,7 @@ public class MySQLProtoHandlerImpl implements ProtoHandler { // not read whole message package ,so check if buffer enough and // compact dataBuffer if (!dataBuffer.hasRemaining()) { - if (SSLProtoHandler.isSSLPackage(dataBuffer, offset)) { + if (SystemConfig.getInstance().isSupportSSL() && SSLProtoHandler.isSSLPackage(dataBuffer, offset)) { return builder.setCode(SSL_PROTO_PACKET).setHasMorePacket(false).setOffset(offset); } return builder.setCode(BUFFER_NOT_BIG_ENOUGH).setHasMorePacket(false).setOffset(offset).setPacketLength(length); diff --git a/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java b/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java index 3a6d84903..f6acfe8d3 100644 --- a/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java +++ b/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java @@ -109,8 +109,13 @@ public abstract class AbstractConnection implements Connection { } else { netInBytes += got; } + final ByteBuffer tmpReadBuffer = getReadBuffer(); if (tmpReadBuffer != null) { + if (got == 0 && tmpReadBuffer.position() != 0 && tmpReadBuffer.position() == tmpReadBuffer.limit()) { + //The buffer is full, but has not been read + throw new IllegalStateException("there is a problem with buffer reading"); + } handle(tmpReadBuffer); } else if (!isClosed()) { //generally,it's won't happen