From 6177985408063961bd0cc777b8182a59b4adf40c Mon Sep 17 00:00:00 2001 From: Nipa Kumar Date: Wed, 24 Feb 2016 14:27:35 -0800 Subject: [PATCH] Enqueued WriteReadyCb results in accessing a deleted AgentDnsXmppChannel object. We need to UnRegisterWriteReady when the object is deleted. ReEnable xmpp_pubsub_test, cause of failure for an expired ssl cert. Set the expiry to 20 years from now. Closes-Bug:1531556 Closes-Bug:1547735 Change-Id: I1f1f39635f792327f91426d728ab70665bcaec94 --- src/bgp/test/bgp_xmpp_channel_test.cc | 1 + src/bgp/test/bgp_xmpp_parse_test.cc | 1 + src/vnsw/agent/controller/controller_dns.cc | 1 + src/vnsw/agent/controller/controller_ifmap.cc | 1 + src/vnsw/agent/controller/controller_peer.cc | 1 + src/vnsw/agent/test/test_cmn_util.h | 1 + src/xmpp/testdata/server-build02.key | 26 +++++------ src/xmpp/testdata/server-build02.pem | 46 ++++++++++--------- src/xmpp/xmpp_channel.h | 1 + src/xmpp/xmpp_channel_mux.h | 2 +- 10 files changed, 45 insertions(+), 36 deletions(-) mode change 100755 => 100644 src/xmpp/testdata/server-build02.key mode change 100755 => 100644 src/xmpp/testdata/server-build02.pem diff --git a/src/bgp/test/bgp_xmpp_channel_test.cc b/src/bgp/test/bgp_xmpp_channel_test.cc index 081b2527ccc..c477470f587 100644 --- a/src/bgp/test/bgp_xmpp_channel_test.cc +++ b/src/bgp/test/bgp_xmpp_channel_test.cc @@ -51,6 +51,7 @@ class XmppChannelMock : public XmppChannel { } MOCK_METHOD2(RegisterReceive, void(xmps::PeerId, ReceiveCb)); MOCK_METHOD1(UnRegisterReceive, void(xmps::PeerId)); + MOCK_METHOD1(UnRegisterWriteReady, void(xmps::PeerId)); std::string ToString() const { return string("fake"); } std::string StateName() const { return string("Established"); } diff --git a/src/bgp/test/bgp_xmpp_parse_test.cc b/src/bgp/test/bgp_xmpp_parse_test.cc index 6b603344d79..7a243318213 100644 --- a/src/bgp/test/bgp_xmpp_parse_test.cc +++ b/src/bgp/test/bgp_xmpp_parse_test.cc @@ -32,6 +32,7 @@ class XmppChannelMock : public XmppChannel { } void RegisterReceive(xmps::PeerId id, ReceiveCb callback) { } void UnRegisterReceive(xmps::PeerId id) { } + void UnRegisterWriteReady(xmps::PeerId id) { } string ToString() const { return string("fake"); } string StateName() const { return string("Established"); } diff --git a/src/vnsw/agent/controller/controller_dns.cc b/src/vnsw/agent/controller/controller_dns.cc index e162e2f8b2a..4c0017ecdbf 100644 --- a/src/vnsw/agent/controller/controller_dns.cc +++ b/src/vnsw/agent/controller/controller_dns.cc @@ -30,6 +30,7 @@ AgentDnsXmppChannel::AgentDnsXmppChannel(Agent *agent, AgentDnsXmppChannel::~AgentDnsXmppChannel() { if (channel_) { channel_->UnRegisterReceive(xmps::DNS); + channel_->UnRegisterWriteReady(xmps::DNS); } } diff --git a/src/vnsw/agent/controller/controller_ifmap.cc b/src/vnsw/agent/controller/controller_ifmap.cc index 08e33cf3076..4a76f2742b2 100644 --- a/src/vnsw/agent/controller/controller_ifmap.cc +++ b/src/vnsw/agent/controller/controller_ifmap.cc @@ -36,6 +36,7 @@ AgentIfMapXmppChannel::AgentIfMapXmppChannel(Agent *agent, XmppChannel *channel, AgentIfMapXmppChannel::~AgentIfMapXmppChannel() { channel_->UnRegisterReceive(xmps::CONFIG); + channel_->UnRegisterWriteReady(xmps::CONFIG); } uint64_t AgentIfMapXmppChannel::NewSeqNumber() { diff --git a/src/vnsw/agent/controller/controller_peer.cc b/src/vnsw/agent/controller/controller_peer.cc index eec742674e8..6737eef9f2c 100644 --- a/src/vnsw/agent/controller/controller_peer.cc +++ b/src/vnsw/agent/controller/controller_peer.cc @@ -84,6 +84,7 @@ AgentXmppChannel::~AgentXmppChannel() { BgpPeer *bgp_peer = bgp_peer_id_.get(); assert(bgp_peer == NULL); channel_->UnRegisterReceive(xmps::BGP); + channel_->UnRegisterWriteReady(xmps::BGP); } void AgentXmppChannel::RegisterXmppChannel(XmppChannel *channel) { diff --git a/src/vnsw/agent/test/test_cmn_util.h b/src/vnsw/agent/test/test_cmn_util.h index 63b7b73b1fd..ef5d4da561d 100644 --- a/src/vnsw/agent/test/test_cmn_util.h +++ b/src/vnsw/agent/test/test_cmn_util.h @@ -391,6 +391,7 @@ class XmppChannelMock : public XmppChannel { void Close() { } MOCK_METHOD2(RegisterReceive, void(xmps::PeerId, ReceiveCb)); MOCK_METHOD1(UnRegisterReceive, void(xmps::PeerId)); + MOCK_METHOD1(UnRegisterWriteReady, void(xmps::PeerId)); std::string ToString() const { return string("fake"); } std::string StateName() const { return string("Established"); } diff --git a/src/xmpp/testdata/server-build02.key b/src/xmpp/testdata/server-build02.key old mode 100755 new mode 100644 index e19f1d70439..6aa6d4f42eb --- a/src/xmpp/testdata/server-build02.key +++ b/src/xmpp/testdata/server-build02.key @@ -1,15 +1,15 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQCqSSupa9ppGVHU8ZyART2UMaN+/8uOjbT8YYLDjgQadJObPxUQ -u7LjayLPAFpx0fjiahKbLt30E5v1Imu+X6yMQWbEzBxW9KYsL4zQHzwBZg1JMnMv -CqlzL7D/Xt16uHyrq6uZgWj79nbLnzsbW4IGfMTYHNgGZO+hTPkqHi02nQIDAQAB -AoGBAJ7PHqkirM7XjjnKGuqFqKhMou4OIQkRn3jAd/NovurtTbu7WSoB4xO1FwF2 -kuMTr8l4o2GWk+jNYOV89H7XO1MMRPN6LLR07QybfsGvOHAXF0wvTk7SItmQBYho -fbHELZJKqB2xVGmg3rqPQDFvUZpADns792NQSwbwtxakZr0BAkEA3/bvGRuwgGlO -XzrhWSFdm/y6e0ugfxQgieghJ7M9Vghab4MsYeYEbG5Tz+B6ZI8i4SlCGslBbfOO -Hnm1dK76iwJBAMKkpOpbVASVUh4Cu2Ga6ScNMWbkjIhtMs2Yg69/6O/cO0lRALgY -+B7F36Ayap3wb7sRjaeCLGelIBEE65EcQHcCQCj5bmjzjekQWwxFI3FBD3U4WY2x -Gl3lesaAN4Ch5DjXMmRwZTBL+sczsBW6Bepb3Y/AEp3/7/6Drp6Yub/tO10CQQC4 -kCQscQMfAXQHLvH9IEXamMDyXt7+8gSNPQQJItF+t6aj46I57rs/esOMhKHiNz3K -9V8LqfxvHv1kBfVU+KQLAkBO3VaeGako9AMqW2uXjgHVzY5xQqJ94A0G4aumiq1m -bTuJK5rM1Pwd+0728wBruSnXrO9nw9Q1cTZZrciieayI +MIICXQIBAAKBgQC+0+fnG1TCgWE52mUMuKtwsiy9IakTKIJ5Tf+aKrr7CWCJEoZr +Z3Lpk0lgqSZ78asLR2rg7TCyQgZySULcNDxti0SQeUzuAjqvqwPLj2uoo5AULPlf +zO5eux2HKOzerpbRNqtyJasn09f8bX8fjCMWDqyPO88q6g4FQzJsYC/H/wIDAQAB +AoGAcrSp9y9kma5vpPj0ONtgolNXtTBgk1WMaCJMfH0m+/M9BegOyMzcNC8GsoW6 +zlIMQLFjO2UYGm65tUT4XalAkIZBQzleiUGPrGe36fRwSHySlk/G/apZf6LUTtq8 +yzWN4gWM0K4b3Q8C26O2Ts2Qz/D3iWquDTzHnwVwC+PfhLECQQDpjF+Vws0sq4Wp +d+fN4ArcGNp1X6CfGQhp11GvL+PIcnK2zOTAh+EOxI/kYRMUyaVwO++e6nS4Zqfy +0MSmryJrAkEA0SwtwKGmCfGXAISCciijjqY3bWfhnLPOJZQ7OfOh5NkoqDF769WM +IOzvl7nqzhfcWgcSuZtljkbxGEr63cfdvQJAeaBC/ykt1L+WokTxkUPGJA1FZ67f +ZTuSKBycS5GzHGaN2yklUCbzS8+N6C+t0juZTrPH/Ii5NHcxq8CRSQUX9QJBAMkX +XODtRvAWV2JDAhl34k24lF7U2LxKzCuqhwnepEybTQ/tisIeKbpZrrlCHm+F1uyi +EiloMMkIgK4nH2hpxk0CQQCOXySFBSrIl2Lym9ShldGh2u4XLwQTCrD3iIJVGqbo +EnjT48m5lfhV6UMDaeESQWumSIQIyDl6Ox0o66OB93ug -----END RSA PRIVATE KEY----- diff --git a/src/xmpp/testdata/server-build02.pem b/src/xmpp/testdata/server-build02.pem old mode 100755 new mode 100644 index 7088247bc7e..a236b344897 --- a/src/xmpp/testdata/server-build02.pem +++ b/src/xmpp/testdata/server-build02.pem @@ -1,26 +1,28 @@ -----BEGIN CERTIFICATE----- -MIIBqzCCARQCCQDcNdwZyj+FpjANBgkqhkiG9w0BAQUFADAaMQswCQYDVQQGEwJV -UzELMAkGA1UECAwCQ0EwHhcNMTUwMzA1MjEyMjU1WhcNMTYwMzA0MjEyMjU1WjAa -MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0A -MIGJAoGBAKpJK6lr2mkZUdTxnIBFPZQxo37/y46NtPxhgsOOBBp0k5s/FRC7suNr -Is8AWnHR+OJqEpsu3fQTm/Uia75frIxBZsTMHFb0piwvjNAfPAFmDUkycy8KqXMv -sP9e3Xq4fKurq5mBaPv2dsufOxtbggZ8xNgc2AZk76FM+SoeLTadAgMBAAEwDQYJ -KoZIhvcNAQEFBQADgYEAi7/+X06NJ4lfwp2mQCASGhQKzxBZ33SSx/wsgT15ljlg -RcydHTwuZ7SHiS7X7FQoYwL5iXmYifAn4X4fmGZSzeBQCM4FRsvXR1egWkHcBvdw -R9l/L3Kux4salSKPhmSYQ/YYiyzscWxE4ZSsfdKraC92kCMeo1S6FdUPe3nu7vc= +MIIB8TCCAVoCCQC1yDDwZCr+NTANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQGEwJV +UzELMAkGA1UECAwCQ0ExITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 +ZDAeFw0xNjAzMDgyMjQ2NDJaFw0zNjAzMDMyMjQ2NDJaMD0xCzAJBgNVBAYTAlVT +MQswCQYDVQQIDAJDQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+0+fnG1TCgWE52mUMuKtwsiy9 +IakTKIJ5Tf+aKrr7CWCJEoZrZ3Lpk0lgqSZ78asLR2rg7TCyQgZySULcNDxti0SQ +eUzuAjqvqwPLj2uoo5AULPlfzO5eux2HKOzerpbRNqtyJasn09f8bX8fjCMWDqyP +O88q6g4FQzJsYC/H/wIDAQABMA0GCSqGSIb3DQEBCwUAA4GBALtPYLswOiK4DAXJ +9i1Zc3FJe+WFTM2JFgNIVUY5t8qhX1cHzan366P/mm49mhBUCTn0JJsFjiOCImhT +yqxRf2TExKG4XLPCCQP7xP5lLSt9UrqgzF4I079IGv8jjkg35QptAMutpd9jSFdJ +JpIK6fYU4D6uQmeU1i0n/aius0Ut -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQCqSSupa9ppGVHU8ZyART2UMaN+/8uOjbT8YYLDjgQadJObPxUQ -u7LjayLPAFpx0fjiahKbLt30E5v1Imu+X6yMQWbEzBxW9KYsL4zQHzwBZg1JMnMv -CqlzL7D/Xt16uHyrq6uZgWj79nbLnzsbW4IGfMTYHNgGZO+hTPkqHi02nQIDAQAB -AoGBAJ7PHqkirM7XjjnKGuqFqKhMou4OIQkRn3jAd/NovurtTbu7WSoB4xO1FwF2 -kuMTr8l4o2GWk+jNYOV89H7XO1MMRPN6LLR07QybfsGvOHAXF0wvTk7SItmQBYho -fbHELZJKqB2xVGmg3rqPQDFvUZpADns792NQSwbwtxakZr0BAkEA3/bvGRuwgGlO -XzrhWSFdm/y6e0ugfxQgieghJ7M9Vghab4MsYeYEbG5Tz+B6ZI8i4SlCGslBbfOO -Hnm1dK76iwJBAMKkpOpbVASVUh4Cu2Ga6ScNMWbkjIhtMs2Yg69/6O/cO0lRALgY -+B7F36Ayap3wb7sRjaeCLGelIBEE65EcQHcCQCj5bmjzjekQWwxFI3FBD3U4WY2x -Gl3lesaAN4Ch5DjXMmRwZTBL+sczsBW6Bepb3Y/AEp3/7/6Drp6Yub/tO10CQQC4 -kCQscQMfAXQHLvH9IEXamMDyXt7+8gSNPQQJItF+t6aj46I57rs/esOMhKHiNz3K -9V8LqfxvHv1kBfVU+KQLAkBO3VaeGako9AMqW2uXjgHVzY5xQqJ94A0G4aumiq1m -bTuJK5rM1Pwd+0728wBruSnXrO9nw9Q1cTZZrciieayI +MIICXQIBAAKBgQC+0+fnG1TCgWE52mUMuKtwsiy9IakTKIJ5Tf+aKrr7CWCJEoZr +Z3Lpk0lgqSZ78asLR2rg7TCyQgZySULcNDxti0SQeUzuAjqvqwPLj2uoo5AULPlf +zO5eux2HKOzerpbRNqtyJasn09f8bX8fjCMWDqyPO88q6g4FQzJsYC/H/wIDAQAB +AoGAcrSp9y9kma5vpPj0ONtgolNXtTBgk1WMaCJMfH0m+/M9BegOyMzcNC8GsoW6 +zlIMQLFjO2UYGm65tUT4XalAkIZBQzleiUGPrGe36fRwSHySlk/G/apZf6LUTtq8 +yzWN4gWM0K4b3Q8C26O2Ts2Qz/D3iWquDTzHnwVwC+PfhLECQQDpjF+Vws0sq4Wp +d+fN4ArcGNp1X6CfGQhp11GvL+PIcnK2zOTAh+EOxI/kYRMUyaVwO++e6nS4Zqfy +0MSmryJrAkEA0SwtwKGmCfGXAISCciijjqY3bWfhnLPOJZQ7OfOh5NkoqDF769WM +IOzvl7nqzhfcWgcSuZtljkbxGEr63cfdvQJAeaBC/ykt1L+WokTxkUPGJA1FZ67f +ZTuSKBycS5GzHGaN2yklUCbzS8+N6C+t0juZTrPH/Ii5NHcxq8CRSQUX9QJBAMkX +XODtRvAWV2JDAhl34k24lF7U2LxKzCuqhwnepEybTQ/tisIeKbpZrrlCHm+F1uyi +EiloMMkIgK4nH2hpxk0CQQCOXySFBSrIl2Lym9ShldGh2u4XLwQTCrD3iIJVGqbo +EnjT48m5lfhV6UMDaeESQWumSIQIyDl6Ox0o66OB93ug -----END RSA PRIVATE KEY----- diff --git a/src/xmpp/xmpp_channel.h b/src/xmpp/xmpp_channel.h index 4bc68e9eb21..3def693ba5c 100644 --- a/src/xmpp/xmpp_channel.h +++ b/src/xmpp/xmpp_channel.h @@ -48,6 +48,7 @@ class XmppChannel { virtual void RegisterReceive(xmps::PeerId, ReceiveCb) = 0; virtual void UnRegisterReceive(xmps::PeerId) = 0; virtual void RegisterRxMessageTraceCallback(RxMessageTraceCb cb) = 0; + virtual void UnRegisterWriteReady(xmps::PeerId id) = 0; virtual void Close() = 0; virtual std::string ToString() const = 0; virtual std::string StateName() const = 0; diff --git a/src/xmpp/xmpp_channel_mux.h b/src/xmpp/xmpp_channel_mux.h index 1fa8f07c386..b9188d4ab4a 100644 --- a/src/xmpp/xmpp_channel_mux.h +++ b/src/xmpp/xmpp_channel_mux.h @@ -47,6 +47,7 @@ class XmppChannelMux : public XmppChannel { virtual void ProcessXmppMessage(const XmppStanza::XmppMessage *msg); void WriteReady(const boost::system::error_code &ec); + virtual void UnRegisterWriteReady(xmps::PeerId id); void HandleStateEvent(xmsm::XmState state); @@ -61,7 +62,6 @@ class XmppChannelMux : public XmppChannel { private: void RegisterWriteReady(xmps::PeerId, SendReadyCb); - void UnRegisterWriteReady(xmps::PeerId id); typedef std::map WriteReadyCbMap; typedef std::map ReceiveCbMap;