From 54d242758f3f8d55532dc383a57fd3b2c0077ab6 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Mon, 23 Mar 2015 11:55:03 +0200 Subject: [PATCH] Revert "Removed walking of packets from mysql_backend and moved storing of partial packets to session command handling section." This reverts commit 9e1dc40bb549fdaf05fb4f8c12dc159c30ad4c41. --- server/modules/protocol/mysql_backend.c | 41 +++++++++++++++---------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/server/modules/protocol/mysql_backend.c b/server/modules/protocol/mysql_backend.c index 3048c3d4a..ba5786851 100644 --- a/server/modules/protocol/mysql_backend.c +++ b/server/modules/protocol/mysql_backend.c @@ -492,19 +492,35 @@ static int gw_read_backend_event(DCB *dcb) { { ss_dassert(read_buffer != NULL || dcb->dcb_readqueue != NULL); } + + if(dcb->dcb_readqueue) + { + read_buffer = gwbuf_append(dcb->dcb_readqueue,read_buffer); + } + + nbytes_read = gwbuf_length(read_buffer); + + if (nbytes_read < 3) + { + dcb->dcb_readqueue = read_buffer; + rc = 0; + goto return_rc; + } - if (dcb->dcb_readqueue) { - if (read_buffer != NULL) + GWBUF *tmp = modutil_get_complete_packets(&read_buffer); + + if(tmp == NULL) { - read_buffer = gwbuf_append(dcb->dcb_readqueue, read_buffer); + /** No complete packets */ + dcb->dcb_readqueue = read_buffer; + rc = 0; + goto return_rc; + } - else - { - read_buffer = dcb->dcb_readqueue; - } - - nbytes_read = gwbuf_length(read_buffer); + + dcb->dcb_readqueue = read_buffer; + read_buffer = tmp; } /** @@ -514,13 +530,6 @@ static int gw_read_backend_event(DCB *dcb) { if (protocol_get_srv_command((MySQLProtocol *)dcb->protocol, false) != MYSQL_COM_UNDEFINED) { - if(nbytes_read < 5) - { - dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, read_buffer); - rc = 0; - goto return_rc; - } - read_buffer = process_response_data(dcb, read_buffer, nbytes_read); /** * Received incomplete response to session command.