From 6d3c60eb286f175bd762690e62a99b98eb52126c Mon Sep 17 00:00:00 2001 From: Dapeng Huang <7xerocha@gmail.com> Date: Mon, 15 Jan 2018 21:38:20 +0800 Subject: [PATCH] remove noneed protocol and the comparison corrent --- include/maxscale/dcb.h | 1 - .../protocol/MySQL/mariadbclient/mysql_client.cc | 11 ++++------- server/modules/protocol/MySQL/mysql_common.cc | 4 ++-- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/include/maxscale/dcb.h b/include/maxscale/dcb.h index 1c44cc949..7260f9191 100644 --- a/include/maxscale/dcb.h +++ b/include/maxscale/dcb.h @@ -199,7 +199,6 @@ typedef enum } DCB_USAGE; /* A few useful macros */ -#define DCB_SERVICE(x, type) (type *)((x)->service) #define DCB_SESSION(x) (x)->session #define DCB_PROTOCOL(x, type) (type *)((x)->protocol) #define DCB_WRITEQLEN(x) (x)->writeqlen diff --git a/server/modules/protocol/MySQL/mariadbclient/mysql_client.cc b/server/modules/protocol/MySQL/mariadbclient/mysql_client.cc index 6026aff1b..9a24d64e0 100644 --- a/server/modules/protocol/MySQL/mariadbclient/mysql_client.cc +++ b/server/modules/protocol/MySQL/mariadbclient/mysql_client.cc @@ -410,10 +410,8 @@ int MySQLSendHandshake(DCB* dcb) * @param queue Queue of buffers to write */ int gw_MySQLWrite_client(DCB *dcb, GWBUF *queue) -{ - MySQLProtocol *protocol = DCB_PROTOCOL(dcb, MySQLProtocol); - SERVICE *service = DCB_SERVICE(dcb, SERVICE); - if (GWBUF_IS_REPLY_OK(queue) && service->session_track_trx_state) +{ + if (GWBUF_IS_REPLY_OK(queue) && dcb->service->session_track_trx_state) { parse_and_set_trx_state(dcb->session, queue); } @@ -1514,9 +1512,8 @@ static int route_by_statement(MXS_SESSION* session, uint64_t capabilities, GWBUF goto return_rc; } } - - SERVICE *service = DCB_SERVICE(session->client_dcb, SERVICE); - if (rcap_type_required(capabilities, RCAP_TYPE_TRANSACTION_TRACKING) && service->session_track_trx_state) + SERVICE *service = session->client_dcb->service; + if (rcap_type_required(capabilities, RCAP_TYPE_TRANSACTION_TRACKING) && !service->session_track_trx_state) { if (session_trx_is_ending(session)) { diff --git a/server/modules/protocol/MySQL/mysql_common.cc b/server/modules/protocol/MySQL/mysql_common.cc index 922c5635e..ea6298384 100644 --- a/server/modules/protocol/MySQL/mysql_common.cc +++ b/server/modules/protocol/MySQL/mysql_common.cc @@ -1798,13 +1798,13 @@ void mxs_mysql_get_session_track_info(GWBUF *buff, uint32_t server_capabilities) if (server_capabilities & GW_MYSQL_CAPABILITIES_SESSION_TRACK) { - if (ptr < buff->end) + if (ptr < (local_buf+len)) { ptr += mxs_leint_consume(&ptr); // info if (server_status & SERVER_SESSION_STATE_CHANGED) { mxs_leint_consume(&ptr); // total SERVER_SESSION_STATE_CHANGED length - while (ptr < buff->end) + while (ptr < (local_buf+len)) { enum_session_state_type type = (enum enum_session_state_type)mxs_leint_consume(&ptr); switch (type)