diff --git a/src/vnsw/agent/controller/controller_init.cc b/src/vnsw/agent/controller/controller_init.cc index f2d2d15fe6a..f47d232b475 100644 --- a/src/vnsw/agent/controller/controller_init.cc +++ b/src/vnsw/agent/controller/controller_init.cc @@ -310,9 +310,7 @@ void VNController::DeleteConnectionInfo(const std::string &addr, bool is_dns) void VNController::DisConnectControllerIfmapServer(uint8_t idx) { - DeleteConnectionInfo(agent_->controller_ifmap_xmpp_server(idx), false); - - // Managed Delete of XmppClient object, which deletes the + // Managed Delete of XmppClient object, which deletes the // dependent XmppClientConnection object and // scoped XmppChannel object XmppClient *xc = agent_->controller_ifmap_xmpp_client(idx); @@ -333,6 +331,7 @@ void VNController::DisConnectControllerIfmapServer(uint8_t idx) { delete agent_->controller_ifmap_xmpp_init(idx); agent_->set_controller_ifmap_xmpp_init(NULL, idx); + DeleteConnectionInfo(agent_->controller_ifmap_xmpp_server(idx), false); agent_->reset_controller_ifmap_xmpp_server(idx); } @@ -401,9 +400,7 @@ bool VNController::ApplyDiscoveryXmppServicesInternal(std::vector re agent_->set_controller_ifmap_xmpp_port(dr.ep.port(), xs_idx); break; - } else if (agent_->controller_xmpp_channel(xs_idx) && - (agent_->controller_xmpp_channel(xs_idx)->GetXmppChannel()-> - GetPeerState() == xmps::NOT_READY)) { + } else if (agent_->controller_xmpp_channel(xs_idx)) { if (AgentXmppServerExists( agent_->controller_ifmap_xmpp_server(xs_idx), resp)) { @@ -429,25 +426,6 @@ bool VNController::ApplyDiscoveryXmppServicesInternal(std::vector re } } - /* Remove stale Servers if DOWN */ - for (uint8_t idx = 0; idx < MAX_XMPP_SERVERS; idx++) { - if (agent_->controller_xmpp_channel(idx) != NULL) { - - if (!AgentXmppServerExists( - agent_->controller_ifmap_xmpp_server(idx), resp)) { - - if (agent_->controller_xmpp_channel(idx)->GetXmppChannel()-> - GetPeerState() == xmps::NOT_READY) { - - CONTROLLER_TRACE(DiscoveryConnection, "Cleanup Older Xmpp ", - idx, agent_->controller_ifmap_xmpp_server(idx), ""); - DisConnectControllerIfmapServer(idx); - agent_->reset_controller_ifmap_xmpp_server(idx); - } - } - } - } - XmppServerConnect(); return true; } @@ -469,8 +447,6 @@ AgentDnsXmppChannel *VNController::FindAgentDnsXmppChannel( void VNController::DisConnectDnsServer(uint8_t idx) { - DeleteConnectionInfo(agent_->dns_server(idx), true); - // Managed Delete of XmppClient object, which deletes the // dependent XmppClientConnection object and // scoped_ptr XmppChannel @@ -487,6 +463,7 @@ void VNController::DisConnectDnsServer(uint8_t idx) { delete agent_->dns_xmpp_init(idx); agent_->set_dns_xmpp_init(NULL, idx); + DeleteConnectionInfo(agent_->dns_server(idx), true); agent_->reset_dns_server(idx); } @@ -534,9 +511,7 @@ void VNController::ApplyDiscoveryDnsXmppServices(std::vector resp) { agent_->set_dns_server_port(dr.ep.port(), xs_idx); break; - } else if (agent_->dns_xmpp_channel(xs_idx) && - (agent_->dns_xmpp_channel(xs_idx)->GetXmppChannel()->GetPeerState() - == xmps::NOT_READY)) { + } else if (agent_->dns_xmpp_channel(xs_idx)) { if (AgentXmppServerExists( agent_->dns_server(xs_idx), resp)) { @@ -561,25 +536,6 @@ void VNController::ApplyDiscoveryDnsXmppServices(std::vector resp) { } } - /* Remove stale Servers if DOWN*/ - for (uint8_t idx = 0; idx < MAX_XMPP_SERVERS; idx++) { - if (agent_->dns_xmpp_channel(idx) != NULL) { - - if (!AgentXmppServerExists( - agent_->dns_server(idx), resp)) { - - if (agent_->dns_xmpp_channel(idx)->GetXmppChannel()-> - GetPeerState() == xmps::NOT_READY) { - - CONTROLLER_TRACE(DiscoveryConnection, "Cleanup Older Dns Xmpp", - idx, agent_->dns_server(idx), ""); - DisConnectDnsServer(idx); - agent_->reset_dns_server(idx); - } - } - } - } - DnsXmppServerConnect(); } diff --git a/src/vnsw/agent/test/test_xmpp_discovery.cc b/src/vnsw/agent/test/test_xmpp_discovery.cc index c1cc8f8fb23..ac72af56c18 100644 --- a/src/vnsw/agent/test/test_xmpp_discovery.cc +++ b/src/vnsw/agent/test/test_xmpp_discovery.cc @@ -477,7 +477,11 @@ TEST_F(AgentXmppUnitTest, XmppConnection_Discovery_TimedOut) { WAIT_FOR(1000, 10000, agent_->controller_xmpp_channel(0)->GetXmppChannel()->GetPeerState() == xmps::READY); - EXPECT_TRUE(agent_->controller_xmpp_channel(1) == NULL); + + ASSERT_STREQ(agent_->controller_ifmap_xmpp_server(1).c_str(), "127.0.0.3"); + WAIT_FOR(1000, 10000, + agent_->controller_xmpp_channel(1)->GetXmppChannel()->GetPeerState() + == xmps::NOT_READY); xs4->Shutdown(); client->WaitForIdle();