diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2010-09-08 16:49:06 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2010-09-08 16:49:06 +0000 |
| commit | cec4f54d2ad78420ee72f4e4a6f109eeff1768f6 (patch) | |
| tree | d51c987d1097c43c30d799dc8d92615e42a9bbb0 /qpid/cpp/src | |
| parent | 6a68e98b48de5fed2c76287ee1678b9078dbd4d0 (diff) | |
| download | qpid-python-cec4f54d2ad78420ee72f4e4a6f109eeff1768f6.tar.gz | |
Dispose the queue pair before acknowledging channel events when destroying
Rdma::QueuePair to stop any events being processed during destruction
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@995133 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/sys/rdma/rdma_wrap.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.cpp b/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.cpp index 4883f0ce14..510291f9b3 100644 --- a/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.cpp +++ b/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.cpp @@ -139,14 +139,17 @@ namespace Rdma { } QueuePair::~QueuePair() { + // Reset back pointer in case someone else has the qp + qp->qp_context = 0; + + // Dispose queue pair before we ack events + qp.reset(); + if (outstandingSendEvents > 0) ::ibv_ack_cq_events(scq.get(), outstandingSendEvents); if (outstandingRecvEvents > 0) ::ibv_ack_cq_events(rcq.get(), outstandingRecvEvents); - // Reset back pointer in case someone else has the qp - qp->qp_context = 0; - // Deallocate recv buffer memory if (rmr) delete [] static_cast<char*>(rmr->addr); |
