DISPATCH-990: Fix locks so hostname adds are atomic
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/2b0f3d06 Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/2b0f3d06 Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/2b0f3d06 Branch: refs/heads/master Commit: 2b0f3d066428f5c13eed83848f017c39ca56f565 Parents: 9c0a09d Author: Chuck Rolke <[email protected]> Authored: Mon May 14 12:57:20 2018 -0400 Committer: Chuck Rolke <[email protected]> Committed: Mon May 14 12:57:20 2018 -0400 ---------------------------------------------------------------------- src/policy.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/2b0f3d06/src/policy.c ---------------------------------------------------------------------- diff --git a/src/policy.c b/src/policy.c index dec645e..9c99c88 100644 --- a/src/policy.c +++ b/src/policy.c @@ -838,17 +838,16 @@ bool qd_policy_host_pattern_add(qd_policy_t *policy, char *hostPattern) { sys_mutex_lock(policy->tree_lock); void *oldp = qd_parse_tree_add_pattern_str(policy->hostname_tree, hostPattern, hostPattern); - sys_mutex_unlock(policy->tree_lock); if (oldp) { - qd_log(policy->log_source, - QD_LOG_WARNING, - "vhost hostname pattern '%s' failed to replace optimized pattern '%s'", - hostPattern, oldp); - sys_mutex_lock(policy->tree_lock); void *recovered = qd_parse_tree_add_pattern_str(policy->hostname_tree, (char *)oldp, oldp); - sys_mutex_unlock(policy->tree_lock); - assert (recovered && !strcmp((char *)recovered, hostPattern)); + assert (recovered); } + sys_mutex_unlock(policy->tree_lock); + if (oldp) + qd_log(policy->log_source, + QD_LOG_WARNING, + "vhost hostname pattern '%s' failed to replace optimized pattern '%s'", + hostPattern, oldp); return oldp == 0; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
