func deletePolicy(c *config.Config, policyName string) error { defer ctxCancelFunc.Unlock() ctxCancelFunc.Lock() if _, ok := ctxCancelFunc.m[policyName]; !ok { return errors.New("policy not found") } log.Printf("deleting the policy %s...", policyName) delete(ctxCancelFunc.m, policyName) defer c.Unlock() c.Lock() for i, q := range c.PolicyConfig { if q.Name == policyName { c.PolicyConfig = append(c.PolicyConfig[:i], c.PolicyConfig[i+1:]...) } } if err := c.Save(); err != nil { return err } return nil }