gw_client_hangup_event, didn't take into account the possibility that session_alloc had failed in which case the session pointer of client dcb is NULL.

This commit is contained in:
vraatikka 2013-10-31 22:57:04 +02:00
parent 3769a02957
commit 38b44a3a3a

View File

@ -1165,15 +1165,20 @@ gw_client_hangup_event(DCB *dcb)
if (dcb->state != DCB_STATE_POLLING) {
goto return_rc;
}
session = dcb->session;
CHK_SESSION(session);
ss_dassert(session->service != NULL);
router = session->service->router;
ss_dassert(router != NULL);
router_instance = session->service->router_instance;
rsession = session->router_session;
router->closeSession(router_instance, rsession);
session = dcb->session;
/**
* session may be NULL if session_alloc failed.
* In that case router session was not created.
*/
if (session != NULL) {
CHK_SESSION(session);
router = session->service->router;
router_instance = session->service->router_instance;
rsession = session->router_session;
router->closeSession(router_instance, rsession);
}
dcb_close(dcb);
return_rc: