Fix debug assertion in modutil_count_signal_packets
The original offset needs to be separately tracked to assert that an OK packet is not the first packet in the buffer. The functional offset into the buffer is modified to reduce the need to iterate over buffers that have already been processed.
This commit is contained in:
@ -631,6 +631,7 @@ GWBUF* modutil_get_complete_packets(GWBUF **p_readbuf)
|
||||
int modutil_count_signal_packets(GWBUF *reply, int n_found, bool* more_dest, modutil_state* state)
|
||||
{
|
||||
unsigned int len = gwbuf_length(reply);
|
||||
ss_debug(int real_offset = 0);
|
||||
int eof = 0;
|
||||
int err = 0;
|
||||
size_t offset = 0;
|
||||
@ -669,7 +670,8 @@ int modutil_count_signal_packets(GWBUF *reply, int n_found, bool* more_dest, mod
|
||||
else if (more && command == MYSQL_REPLY_OK)
|
||||
{
|
||||
// This should not be the first packet
|
||||
ss_dassert(pktlen >= MYSQL_OK_PACKET_MIN_LEN && offset > 0);
|
||||
ss_dassert(pktlen >= MYSQL_OK_PACKET_MIN_LEN);
|
||||
ss_dassert(real_offset > 0);
|
||||
|
||||
uint8_t data[payloadlen - 1];
|
||||
gwbuf_copy_data(reply, offset + MYSQL_HEADER_LEN + 1, sizeof(data), data);
|
||||
@ -691,6 +693,8 @@ int modutil_count_signal_packets(GWBUF *reply, int n_found, bool* more_dest, mod
|
||||
}
|
||||
|
||||
offset += pktlen;
|
||||
ss_debug(real_offset += pktlen);
|
||||
|
||||
if (offset >= GWBUF_LENGTH(reply) && reply->next)
|
||||
{
|
||||
offset -= GWBUF_LENGTH(reply);
|
||||
|
Reference in New Issue
Block a user