From 3532c2fbb7f3b127dccf35451389c042a981f167 Mon Sep 17 00:00:00 2001 From: Nipa Kumar Date: Tue, 10 May 2016 16:01:32 -0700 Subject: [PATCH] Add mutual exclusion on Agent between xmpp::StateMachine and io::ReaderTask. TCP close event on a session is handled by xmpp::StateMachine task and reads handled by io::ReaderTask, hence both tasks can be accessing the same session at the same time and xmpp::StateMachine destroying the session while io::ReaderTask reading it. Change-Id: I09fbdf9b9ea6c31fb6072e7e2f8d40510f32dc03 Closes-Bug:1560242 --- src/vnsw/agent/cmn/agent.cc | 6 ++++++ src/xmpp/xmpp_session.cc | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vnsw/agent/cmn/agent.cc b/src/vnsw/agent/cmn/agent.cc index e689d64f5ee..66e9de65faa 100644 --- a/src/vnsw/agent/cmn/agent.cc +++ b/src/vnsw/agent/cmn/agent.cc @@ -250,6 +250,12 @@ void Agent::SetAgentTaskPolicy() { SetTaskPolicyOne("http client", metadata_exclude_list, sizeof(metadata_exclude_list) / sizeof(char *)); + const char *xmpp_state_machine_exclude_list[] = { + "io::ReaderTask" + }; + SetTaskPolicyOne("xmpp::StateMachine", xmpp_state_machine_exclude_list, + sizeof(xmpp_state_machine_exclude_list) / sizeof(char *)); + const char *agent_init_exclude_list[] = { "xmpp::StateMachine", "http client", diff --git a/src/xmpp/xmpp_session.cc b/src/xmpp/xmpp_session.cc index b49db9c12a5..e65d86c76cc 100644 --- a/src/xmpp/xmpp_session.cc +++ b/src/xmpp/xmpp_session.cc @@ -298,10 +298,6 @@ void XmppSession::OnRead(Buffer buffer) { break; } - // - // XXX Connection gone ? - // - if (!connection_) break; connection_->ReceiveMsg(this, xml); } else {