diff --git a/server/modules/protocol/MySQL/MySQLBackend/mysql_backend.c b/server/modules/protocol/MySQL/MySQLBackend/mysql_backend.c index 97ab8c433..67d50a4f3 100644 --- a/server/modules/protocol/MySQL/MySQLBackend/mysql_backend.c +++ b/server/modules/protocol/MySQL/MySQLBackend/mysql_backend.c @@ -707,7 +707,7 @@ gw_read_and_write(DCB *dcb) GWBUF *tmp = modutil_get_complete_packets(&read_buffer); /* Put any residue into the read queue */ - dcb->dcb_readqueue = read_buffer; + dcb_readq_set(dcb, read_buffer); if (tmp == NULL) { @@ -742,7 +742,7 @@ gw_read_and_write(DCB *dcb) bool more = false; if (modutil_count_signal_packets(read_buffer, 0, &more, NULL) != 2) { - dcb->dcb_readqueue = gwbuf_append(read_buffer, dcb->dcb_readqueue); + dcb_readq_prepend(dcb, read_buffer); return 0; } @@ -755,7 +755,7 @@ gw_read_and_write(DCB *dcb) { if (!complete_ps_response(read_buffer)) { - dcb->dcb_readqueue = gwbuf_append(read_buffer, dcb->dcb_readqueue); + dcb_readq_prepend(dcb, read_buffer); return 0; } @@ -829,7 +829,7 @@ gw_read_and_write(DCB *dcb) if (!sescmd_response_complete(dcb)) { stmt = gwbuf_append(stmt, read_buffer); - dcb->dcb_readqueue = gwbuf_append(stmt, dcb->dcb_readqueue); + dcb_readq_prepend(dcb, stmt); return 0; } } @@ -1586,7 +1586,7 @@ static GWBUF* process_response_data(DCB* dcb, /** Store the already read data into the readqueue of the DCB * and restore the response status to the initial number of packets */ - dcb->dcb_readqueue = gwbuf_append(outbuf, dcb->dcb_readqueue); + dcb_readq_prepend(dcb, outbuf); protocol_set_response_status(p, initial_packets, initial_bytes); return NULL; diff --git a/server/modules/protocol/MySQL/MySQLClient/mysql_client.cc b/server/modules/protocol/MySQL/MySQLClient/mysql_client.cc index a987ba75c..3da850b15 100644 --- a/server/modules/protocol/MySQL/MySQLClient/mysql_client.cc +++ b/server/modules/protocol/MySQL/MySQLClient/mysql_client.cc @@ -499,7 +499,7 @@ int gw_read_client_event(DCB* dcb) (0 != max_bytes && nbytes_read < max_bytes)) { - dcb->dcb_readqueue = read_buffer; + dcb_readq_set(dcb, read_buffer); return 0; } @@ -747,7 +747,7 @@ gw_read_do_authentication(DCB *dcb, GWBUF *read_buffer, int nbytes_read) static GWBUF* split_and_store(DCB *client_dcb, GWBUF* queue, int offset) { GWBUF* newbuf = gwbuf_split(&queue, offset); - dcb_append_readqueue(client_dcb, queue); + dcb_readq_append(client_dcb, queue); return newbuf; } @@ -794,7 +794,7 @@ static bool process_client_commands(DCB* dcb, int bytes_available, GWBUF** buffe /** Make sure we have enough data if the client is sending a new command */ if (protocol_is_idle(dcb) && bytes_available < MYSQL_HEADER_LEN) { - dcb_append_readqueue(dcb, queue); + dcb_readq_append(dcb, queue); return false; } @@ -982,7 +982,7 @@ gw_read_normal_data(DCB *dcb, GWBUF *read_buffer, int nbytes_read) if (nbytes_read < 3 || nbytes_read < (int)(MYSQL_GET_PAYLOAD_LEN((uint8_t *) GWBUF_DATA(read_buffer)) + 4)) { - dcb->dcb_readqueue = read_buffer; + dcb_readq_set(dcb, read_buffer); return 0; } @@ -998,7 +998,7 @@ gw_read_normal_data(DCB *dcb, GWBUF *read_buffer, int nbytes_read) switch (res) { case RES_MORE_DATA: - dcb->dcb_readqueue = read_buffer; + dcb_readq_set(dcb, read_buffer); rval = 0; break; @@ -1052,7 +1052,7 @@ gw_read_finish_processing(DCB *dcb, GWBUF *read_buffer, uint64_t capabilities) /* Must have been data left over */ /* Add incomplete mysql packet to read queue */ - dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, read_buffer); + dcb_readq_append(dcb, read_buffer); } } @@ -1557,11 +1557,11 @@ return_rc: */ static bool ensure_complete_packet(DCB *dcb, GWBUF **read_buffer, int nbytes_read) { - if (dcb->dcb_readqueue) + if (dcb_readq_has(dcb)) { - dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, *read_buffer); - nbytes_read = gwbuf_length(dcb->dcb_readqueue); - int plen = MYSQL_GET_PAYLOAD_LEN((uint8_t *) GWBUF_DATA(dcb->dcb_readqueue)); + dcb_readq_append(dcb, *read_buffer); + nbytes_read = dcb_readq_length(dcb); + int plen = MYSQL_GET_PAYLOAD_LEN((uint8_t *) GWBUF_DATA(dcb_readq_get(dcb))); if (nbytes_read < 3 || nbytes_read < plen + 4) { @@ -1573,8 +1573,7 @@ static bool ensure_complete_packet(DCB *dcb, GWBUF **read_buffer, int nbytes_rea * There is at least one complete mysql packet in * read_buffer. */ - *read_buffer = dcb->dcb_readqueue; - dcb->dcb_readqueue = NULL; + *read_buffer = dcb_readq_release(dcb); } } else @@ -1583,7 +1582,7 @@ static bool ensure_complete_packet(DCB *dcb, GWBUF **read_buffer, int nbytes_rea if (nbytes_read < 3 || nbytes_read < (int)MYSQL_GET_PAYLOAD_LEN(data) + 4) { - dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, *read_buffer); + dcb_readq_append(dcb, *read_buffer); return false; } } diff --git a/server/modules/protocol/MySQL/mysql_common.c b/server/modules/protocol/MySQL/mysql_common.c index ace0ad370..ab03a6447 100644 --- a/server/modules/protocol/MySQL/mysql_common.c +++ b/server/modules/protocol/MySQL/mysql_common.c @@ -981,8 +981,7 @@ bool read_complete_packet(DCB *dcb, GWBUF **readbuf) { /** Store any extra data in the DCB's readqueue */ - dcb->dcb_readqueue = gwbuf_append(dcb->dcb_readqueue, localbuf); - + dcb_readq_append(dcb, localbuf); } }