dcb.b:dcb_final_free:replaced ((dcb->flags & DCBF_CLONE)==0) with macro !DCB_IS_CLONE(dcb)
readwritesplit.h:Removed invalid macros which assumed that ROUTER_CLIENT_SES->rses_backend_ref always pointed to valid and used backend reference and thus included potential risk of NULL-pointer refernce. mysql_backend.c and mysql_client.c:avoid executing CHK_PROTOCOL(p) after original DCB has been released the memory. readwritesplit.c:Replaced RSES_CLEINT_DCB macro with a function which returns client DCB for a given router client session.
This commit is contained in:
@ -151,38 +151,6 @@ retblock:
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* gw_mysql_close
|
||||
*
|
||||
* close a connection if opened
|
||||
* free data scructure for MySQLProtocol
|
||||
*
|
||||
* @param ptr The MySQLProtocol ** to close/free
|
||||
*
|
||||
*/
|
||||
void gw_mysql_close(MySQLProtocol **ptr) {
|
||||
MySQLProtocol *conn = *ptr;
|
||||
|
||||
ss_dassert(*ptr != NULL);
|
||||
|
||||
if (*ptr == NULL)
|
||||
return;
|
||||
|
||||
|
||||
if (conn->fd > 0) {
|
||||
/* COM_QUIT will not be sent here, but from the caller of this routine! */
|
||||
close(conn->fd);
|
||||
} else {
|
||||
// no socket here
|
||||
}
|
||||
|
||||
free(*ptr);
|
||||
|
||||
*ptr = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the backend server MySQL handshake
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user