From 1f741716cc163b44bfe5401a9b356a56f104efc4 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 16 Mar 2016 11:45:53 -0700 Subject: [PATCH] rgw: finalize reqs through a temporary set can't call _finish_request() on iter->second when iterating, it clobbers the map. Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_http_client.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rgw/rgw_http_client.cc b/src/rgw/rgw_http_client.cc index 22f0bf4224da3..b15ab666b6a35 100644 --- a/src/rgw/rgw_http_client.cc +++ b/src/rgw/rgw_http_client.cc @@ -632,9 +632,9 @@ void *RGWHTTPManager::reqs_thread_entry() } RWLock::WLocker rl(reqs_lock); - map::iterator iter = reqs.begin(); - for (; iter != reqs.end(); ++iter) { - _finish_request(iter->second, -ECANCELED); + auto all_reqs = std::move(reqs); + for (auto iter : all_reqs) { + _finish_request(iter.second, -ECANCELED); } reqs.clear(); -- 2.39.5