shunt-manager: Remove stored entries if installation fails

This commit is contained in:
Tobias Brunner
2015-07-27 13:51:07 +02:00
parent f3d39666e0
commit 616ff9a236
+11 -2
View File
@@ -122,7 +122,7 @@ METHOD(shunt_manager_t, install, bool,
{
enumerator_t *enumerator;
child_cfg_t *child_cfg;
bool found = FALSE;
bool found = FALSE, success;
/* check if not already installed */
this->lock->write_lock(this->lock);
@@ -146,7 +146,16 @@ METHOD(shunt_manager_t, install, bool,
this->shunts->insert_last(this->shunts, child->get_ref(child));
this->lock->unlock(this->lock);
return install_shunt_policy(child);
success = install_shunt_policy(child);
if (!success)
{
this->lock->write_lock(this->lock);
this->shunts->remove(this->shunts, child, NULL);
this->lock->unlock(this->lock);
child->destroy(child);
}
return success;
}
/**