http://bugs.skysql.com/show_bug.cgi?id=665 http://bugs.skysql.com/show_bug.cgi?id=664 http://bugs.skysql.com/show_bug.cgi?id=649 dcb.c:dcb_final_free: (665):set dcb->session->client pointer to NULL so that it won't be read anymore and other threads won't try to close it. dcb_final_free:(664):don't free dcb->data, it is either freed in session_alloc if session creation fails or in session_free only. session.c:if session creation fails, free dcb->data and remove links between client DCB and session. mysql_backend.c:(665):gw_backend_close:check that session->client isn't NULL and that client DCB's state is still polling before calling dcb_close for it. mysql_client.c:gw_mysql_do_authentication:if anything fails, and session_alloc won't be called, free dcb->data. mysql_common.c:gw_send_authentication_to_backend:if session is already closing then return with error.
This commit is contained in:
@ -124,7 +124,8 @@ typedef enum skygw_chk_t {
|
||||
CHK_NUM_BACKEND,
|
||||
CHK_NUM_BACKEND_REF,
|
||||
CHK_NUM_PREP_STMT,
|
||||
CHK_NUM_PINFO
|
||||
CHK_NUM_PINFO,
|
||||
CHK_NUM_MYSQLSES
|
||||
} skygw_chk_t;
|
||||
|
||||
# define STRBOOL(b) ((b) ? "true" : "false")
|
||||
@ -542,6 +543,11 @@ typedef enum skygw_chk_t {
|
||||
"Parsing info struct has invalid check fields"); \
|
||||
}
|
||||
|
||||
#define CHK_MYSQL_SESSION(s) { \
|
||||
ss_info_dassert((s)->myses_chk_top == CHK_NUM_MYSQLSES && \
|
||||
(s)->myses_chk_tail == CHK_NUM_MYSQLSES, \
|
||||
"MYSQL session struct has invalid check fields"); \
|
||||
}
|
||||
|
||||
|
||||
#if defined(FAKE_CODE)
|
||||
|
Reference in New Issue
Block a user