From 672f21d6c15e5443b2dc37d52eb6de78bf210f04 Mon Sep 17 00:00:00 2001 From: Pavel Boldin Date: Wed, 11 Sep 2013 19:47:03 +0400 Subject: [PATCH] bind-add-zone: lock reworked. caller of createDomain have to take lock --- pdns/backends/bind/bindbackend2.cc | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/pdns/backends/bind/bindbackend2.cc b/pdns/backends/bind/bindbackend2.cc index c6cd303ff9..1152cc2c9f 100644 --- a/pdns/backends/bind/bindbackend2.cc +++ b/pdns/backends/bind/bindbackend2.cc @@ -542,6 +542,9 @@ string Bind2Backend::DLAddDomainHandler(const vector&parts, Utility::pid if(getState()->name_id_map.count(domainname)) return "Already loaded"; + // Interference with loadConfig() and createSlaveDomain(), use locking + Lock l(&s_state_lock); + Bind2Backend bb2; BB2DomainInfo& bbd = bb2.createDomain(domainname, filename); @@ -551,10 +554,7 @@ string Bind2Backend::DLAddDomainHandler(const vector&parts, Utility::pid bbd.d_lastcheck=0; bbd.d_status="parsing into memory"; - { - Lock l(&s_state_lock); - s_state->name_id_map[bbd.d_name]=bbd.d_id; - } + s_state->name_id_map[bbd.d_name]=bbd.d_id; L<name_id_map[bbd.d_name] = bbd.d_id; - } + s_state->name_id_map[bbd.d_name] = bbd.d_id; return true; } -- 2.47.2