MXS-1146: Fix command tracking for large packets
The current command was updated with invalid data when the packet size exceeded 2^24 bytes.
This commit is contained in:
@ -59,7 +59,7 @@
|
|||||||
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE1 0xff
|
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE1 0xff
|
||||||
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE2 0xf7
|
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE2 0xf7
|
||||||
#define GW_MYSQL_SERVER_LANGUAGE 0x08
|
#define GW_MYSQL_SERVER_LANGUAGE 0x08
|
||||||
#define GW_MYSQL_MAX_PACKET_LEN 0xffffffL;
|
#define GW_MYSQL_MAX_PACKET_LEN 0xffffffL
|
||||||
#define GW_MYSQL_SCRAMBLE_SIZE 20
|
#define GW_MYSQL_SCRAMBLE_SIZE 20
|
||||||
|
|
||||||
// debug for mysql_* functions
|
// debug for mysql_* functions
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE1 0xff
|
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE1 0xff
|
||||||
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE2 0xf7
|
#define GW_MYSQL_SERVER_CAPABILITIES_BYTE2 0xf7
|
||||||
#define GW_MYSQL_SERVER_LANGUAGE 0x08
|
#define GW_MYSQL_SERVER_LANGUAGE 0x08
|
||||||
#define GW_MYSQL_MAX_PACKET_LEN 0xffffffL;
|
#define GW_MYSQL_MAX_PACKET_LEN 0xffffffL
|
||||||
#define GW_MYSQL_SCRAMBLE_SIZE 20
|
#define GW_MYSQL_SCRAMBLE_SIZE 20
|
||||||
#define GW_SCRAMBLE_LENGTH_323 8
|
#define GW_SCRAMBLE_LENGTH_323 8
|
||||||
|
|
||||||
|
@ -766,7 +766,12 @@ static bool process_client_commands(DCB* dcb, int bytes_available, GWBUF** buffe
|
|||||||
}
|
}
|
||||||
|
|
||||||
MySQLProtocol *proto = (MySQLProtocol*)dcb->protocol;
|
MySQLProtocol *proto = (MySQLProtocol*)dcb->protocol;
|
||||||
proto->current_command = cmd;
|
if (dcb->protocol_packet_length - MYSQL_HEADER_LEN != GW_MYSQL_MAX_PACKET_LEN)
|
||||||
|
{
|
||||||
|
/** We're processing the first packet of a command */
|
||||||
|
proto->current_command = cmd;
|
||||||
|
}
|
||||||
|
|
||||||
dcb->protocol_packet_length = pktlen + MYSQL_HEADER_LEN;
|
dcb->protocol_packet_length = pktlen + MYSQL_HEADER_LEN;
|
||||||
dcb->protocol_bytes_processed = 0;
|
dcb->protocol_bytes_processed = 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user