Only close valid sessions
When a session is being closed, the state needs to be checked. If the session creation failed, the session need to be only freed.
This commit is contained in:
		@ -1295,11 +1295,22 @@ static int gw_client_close(DCB *dcb)
 | 
			
		||||
{
 | 
			
		||||
    CHK_DCB(dcb);
 | 
			
		||||
    ss_dassert(dcb->protocol);
 | 
			
		||||
    mysql_protocol_done(dcb);
 | 
			
		||||
    MXS_SESSION* target = dcb->session;
 | 
			
		||||
    ss_debug(MXS_SESSION* removed = ) mxs_worker_deregister_session(target->ses_id);
 | 
			
		||||
    ss_dassert(removed == target);
 | 
			
		||||
    session_close(target);
 | 
			
		||||
 | 
			
		||||
    if (mysql_protocol_done(dcb))
 | 
			
		||||
    {
 | 
			
		||||
        MXS_SESSION* target = dcb->session;
 | 
			
		||||
 | 
			
		||||
        if (target->state != SESSION_STATE_TO_BE_FREED &&
 | 
			
		||||
            target->state != SESSION_STATE_DUMMY)
 | 
			
		||||
        {
 | 
			
		||||
            ss_dassert(target->state == SESSION_STATE_ROUTER_READY ||
 | 
			
		||||
                       target->state == SESSION_STATE_STOPPING);
 | 
			
		||||
            ss_debug(MXS_SESSION* removed =) mxs_worker_deregister_session(target->ses_id);
 | 
			
		||||
            ss_dassert(removed == target);
 | 
			
		||||
            session_close(target);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user