Fix KILL command packet boundary detection

If a packet with a KILL query was followed with another packet in the same
network buffer, the code wouldn't work as it expected to receive only one
packet at a time.
This commit is contained in:
Markus Mäkelä 2019-06-12 10:32:02 +03:00
parent b98ff222f0
commit bb92d61a1b
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19

View File

@ -1863,13 +1863,8 @@ return_rc:
static spec_com_res_t process_special_commands(DCB* dcb, GWBUF* read_buffer, int nbytes_read)
{
spec_com_res_t rval = RES_CONTINUE;
bool is_complete = false;
unsigned int packet_len =
MYSQL_GET_PAYLOAD_LEN((uint8_t*)GWBUF_DATA(read_buffer)) + MYSQL_HEADER_LEN;
if (gwbuf_length(read_buffer) == packet_len)
{
is_complete = true;
}
unsigned int packet_len = MYSQL_GET_PAYLOAD_LEN((uint8_t*)GWBUF_DATA(read_buffer)) + MYSQL_HEADER_LEN;
bool is_complete = gwbuf_length(read_buffer) >= packet_len;
/**
* Handle COM_SET_OPTION. This seems to be only used by some versions of PHP.