MXS-2562: Fix out-of-order error during COM_CHANGE_USER

If an error is generated while a COM_CHANGE_USER is being done, it would
always use the sequence number 1. To properly handle this case and send
the correct sequence number, the COM_CHANGE_USER progress needs to be
tracked at the session level.

The information needs to be shared between the backend and client
protocols as the final OK to the COM_CHANGE_USER, with the sequence number
3, is the one that the backend server returns. Only after this response
has been received and routed to the client can the COM_CHANGE_USER
processing stop.
This commit is contained in:
Markus Mäkelä
2019-06-27 23:28:46 +03:00
parent 3b6387c952
commit 40f35618ad
4 changed files with 26 additions and 10 deletions

View File

@ -38,7 +38,7 @@ uint8_t null_client_sha1[MYSQL_SCRAMBLE_LEN] = "";
MYSQL_session* mysql_session_alloc()
{
MYSQL_session* ses = (MYSQL_session*)MXS_CALLOC(1, sizeof(MYSQL_session));
ses->changing_user = false;
return ses;
}