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 | d40812f3b539240b114586db9a35afdc8af74cdf (patch) | |
| tree | 9820679728498204d53f0a55c961317e220f3833 /qpid/cpp/src | |
| parent | 9d1513709729ffc1396ce6639279ece78ac84b2a (diff) | |
| download | qpid-python-d40812f3b539240b114586db9a35afdc8af74cdf.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@995145 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/client/RdmaConnector.cpp | 1 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp | 4 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/sys/rdma/RdmaIO.h | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/client/RdmaConnector.cpp b/qpid/cpp/src/qpid/client/RdmaConnector.cpp index f8f38fb050..208d42f672 100644 --- a/qpid/cpp/src/qpid/client/RdmaConnector.cpp +++ b/qpid/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/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp b/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp index c89e0f2126..69776654ef 100644 --- a/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp +++ b/qpid/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/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h b/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h index 72cbac154b..55174ea8a1 100644 --- a/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h +++ b/qpid/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); |
