From 35e392d16be692edf2aa0bf3856b411990b3269a Mon Sep 17 00:00:00 2001 From: Hari Date: Tue, 6 Dec 2016 17:28:42 +0530 Subject: [PATCH] Validate the channel before sending update. In case the DNS channel is changing, check the intended channel is the same before sending DNS data. Change-Id: I94672d784da95ffa74aff73faa38860d2f5dcaa3 closes-bug: #1647257 --- src/vnsw/agent/cmn/agent.h | 5 +++++ src/vnsw/agent/services/dns_handler.cc | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vnsw/agent/cmn/agent.h b/src/vnsw/agent/cmn/agent.h index 1e73f0c20de..58bef53265f 100644 --- a/src/vnsw/agent/cmn/agent.h +++ b/src/vnsw/agent/cmn/agent.h @@ -674,6 +674,11 @@ class Agent { void set_dns_xmpp_channel(AgentDnsXmppChannel *chnl, uint8_t idx) { dns_xmpp_channel_[idx] = chnl; } + bool is_dns_xmpp_channel(AgentDnsXmppChannel *channel) { + if (channel == dns_xmpp_channel_[0] || channel == dns_xmpp_channel_[1]) + return true;; + return false; + } // DNS Server and port const std::string &dns_server(uint8_t idx) const {return dns_addr_[idx];} diff --git a/src/vnsw/agent/services/dns_handler.cc b/src/vnsw/agent/services/dns_handler.cc index 7f38ee434a7..dccae5683ef 100644 --- a/src/vnsw/agent/services/dns_handler.cc +++ b/src/vnsw/agent/services/dns_handler.cc @@ -779,7 +779,7 @@ bool DnsHandler::UpdateAll() { void DnsHandler::SendXmppUpdate(AgentDnsXmppChannel *channel, DnsUpdateData *xmpp_data) { - if (channel) { + if (channel && agent_->is_dns_xmpp_channel(channel)) { // Split the request in case we have more data items DnsItems done, store; DnsItems::iterator first, last;