diff options
author | Andrew Stitcher <astitcher@apache.org> | 2010-09-08 16:49:55 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2010-09-08 16:49:55 +0000 |
commit | c358479ca71b3cd2101ea6c39a4745221acf28aa (patch) | |
tree | a36d2aa107bcf1fffa866c13b53c78a2dd72ebd3 /cpp/src | |
parent | 90ed79ef1ea673df63e85adf9c355226f8bbc1df (diff) | |
download | qpid-python-c358479ca71b3cd2101ea6c39a4745221acf28aa.tar.gz |
Stop the client side Rdma code from receiving connection events before the data events
are stopped to avoid any events after the Rdma::Connector is deleted
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@995145 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/client/RdmaConnector.cpp | 1 | ||||
-rw-r--r-- | cpp/src/qpid/sys/rdma/RdmaIO.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qpid/sys/rdma/RdmaIO.h | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/cpp/src/qpid/client/RdmaConnector.cpp b/cpp/src/qpid/client/RdmaConnector.cpp index f8f38fb050..208d42f672 100644 --- a/cpp/src/qpid/client/RdmaConnector.cpp +++ b/cpp/src/qpid/client/RdmaConnector.cpp @@ -281,6 +281,7 @@ void RdmaConnector::stopped(Rdma::AsynchIO* a) { void RdmaConnector::drained() { QPID_LOG(debug, "RdmaConnector::drained " << identifier); assert(!polling); + acon->stop(); if (aio) { Rdma::AsynchIO* a = aio; aio = 0; diff --git a/cpp/src/qpid/sys/rdma/RdmaIO.cpp b/cpp/src/qpid/sys/rdma/RdmaIO.cpp index c89e0f2126..69776654ef 100644 --- a/cpp/src/qpid/sys/rdma/RdmaIO.cpp +++ b/cpp/src/qpid/sys/rdma/RdmaIO.cpp @@ -518,6 +518,10 @@ namespace Rdma { handle.startWatch(poller); } + void ConnectionManager::stop() { + handle.stopWatch(); + } + void ConnectionManager::event(DispatchHandle&) { connectionEvent(ci); } diff --git a/cpp/src/qpid/sys/rdma/RdmaIO.h b/cpp/src/qpid/sys/rdma/RdmaIO.h index 72cbac154b..55174ea8a1 100644 --- a/cpp/src/qpid/sys/rdma/RdmaIO.h +++ b/cpp/src/qpid/sys/rdma/RdmaIO.h @@ -179,6 +179,7 @@ namespace Rdma { virtual ~ConnectionManager(); void start(qpid::sys::Poller::shared_ptr poller, const qpid::sys::SocketAddress& addr); + void stop(); private: void event(qpid::sys::DispatchHandle& handle); |