From 2f88b8a1136d2ab63cc090bc57dc829b2e6321dd Mon Sep 17 00:00:00 2001 From: Adir Lev Date: Sun, 28 May 2017 13:11:54 +0000 Subject: [PATCH] msg/async/rdma: avoid adding worker twice to pending_workers Change-Id: I4dda9040a055bdb8787ffd23a6928925d0a69d83 Signed-off-by: Adir Lev --- src/msg/async/rdma/RDMAStack.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/msg/async/rdma/RDMAStack.h b/src/msg/async/rdma/RDMAStack.h index fdd21761d32..27373fb6487 100644 --- a/src/msg/async/rdma/RDMAStack.h +++ b/src/msg/async/rdma/RDMAStack.h @@ -127,10 +127,11 @@ class RDMADispatcher { int register_qp(QueuePair *qp, RDMAConnectedSocketImpl* csi); void make_pending_worker(RDMAWorker* w) { Mutex::Locker l(w_lock); - if (pending_workers.back() != w) { - pending_workers.push_back(w); - ++num_pending_workers; - } + auto it = std::find(pending_workers.begin(), pending_workers.end(), w); + if (it != pending_workers.end()) + return; + pending_workers.push_back(w); + ++num_pending_workers; } RDMAStack* get_stack() { return stack; } RDMAConnectedSocketImpl* get_conn_lockless(uint32_t qp); -- 2.39.5