Fix SSL regression

This builds on commit 1287b0e595a5f99026f66df7eeaef091b8ffc774 and cleans
up the original code. This fixes a bug introduced in the aforementioned
commit and cleans up the code.
This commit is contained in:
Markus Mäkelä
2017-11-08 10:00:10 +02:00
parent 1287b0e595
commit 4da28789ac
2 changed files with 20 additions and 4 deletions

View File

@ -502,11 +502,22 @@ int gw_read_client_event(DCB* dcb)
*
*/
case MXS_AUTH_STATE_MESSAGE_READ:
dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, read_buffer);
if ((read_buffer = modutil_get_next_MySQL_packet(&dcb->dcb_readqueue)))
if (nbytes_read < 3 ||
(0 == max_bytes && nbytes_read < MYSQL_GET_PACKET_LEN(read_buffer)) ||
(0 != max_bytes && nbytes_read < max_bytes))
{
return_code = gw_read_do_authentication(dcb, read_buffer, gwbuf_length(read_buffer));
dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, read_buffer);
}
else
{
if (nbytes_read > MYSQL_GET_PACKET_LEN(read_buffer))
{
// We read more data than was needed
dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, read_buffer);
read_buffer = modutil_get_next_MySQL_packet(&dcb->dcb_readqueue);
}
return_code = gw_read_do_authentication(dcb, read_buffer, nbytes_read);
}
break;