From b0c152b55ca7bb4519b215d2e76ef8c4ce4085e9 Mon Sep 17 00:00:00 2001 From: VilhoRaatikka Date: Tue, 30 Dec 2014 10:55:53 +0200 Subject: [PATCH] Fixed debug assertion and protected read of client DCB's state and consistency. --- server/modules/routing/readconnroute.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/server/modules/routing/readconnroute.c b/server/modules/routing/readconnroute.c index 963fcfeda..add5217a6 100644 --- a/server/modules/routing/readconnroute.c +++ b/server/modules/routing/readconnroute.c @@ -848,18 +848,21 @@ static void handleError( else { backend_dcb->dcb_errhandle_called = true; - } + } spinlock_acquire(&session->ses_lock); sesstate = session->state; client_dcb = session->client; - spinlock_release(&session->ses_lock); - ss_dassert(client_dcb != NULL); if (sesstate == SESSION_STATE_ROUTER_READY) { CHK_DCB(client_dcb); + spinlock_release(&session->ses_lock); client_dcb->func.write(client_dcb, gwbuf_clone(errbuf)); } + else + { + spinlock_release(&session->ses_lock); + } /** false because connection is not available anymore */ *succp = false;