From 3a85348cdfd0fd7df63a2a150790722c2d294b36 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 25 Feb 2009 00:56:17 +0000 Subject: [PATCH] FSCORE-309 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12269 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_xml.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/switch_xml.c b/src/switch_xml.c index e5b77826fb..592cb7ff7f 100644 --- a/src/switch_xml.c +++ b/src/switch_xml.c @@ -142,6 +142,7 @@ static switch_memory_pool_t *XML_MEMORY_POOL = NULL; static switch_thread_rwlock_t *RWLOCK = NULL; static switch_thread_rwlock_t *B_RWLOCK = NULL; static switch_mutex_t *XML_LOCK = NULL; +static switch_mutex_t *XML_GEN_LOCK = NULL; struct xml_section_t { @@ -1553,12 +1554,12 @@ SWITCH_DECLARE(switch_status_t) switch_xml_locate(const char *section, if ((conf = switch_xml_find_child(xml, "section", "name", section)) && (tag = switch_xml_find_child(conf, tag_name, key_name, key_value))) { if (clone) { char *x; - switch_mutex_lock(XML_LOCK); + switch_mutex_lock(XML_GEN_LOCK); x = switch_xml_toxml(tag, SWITCH_FALSE); + switch_mutex_unlock(XML_GEN_LOCK); switch_assert(x); *root = switch_xml_parse_str(x, strlen(x)); *node = *root; - switch_mutex_unlock(XML_LOCK); switch_xml_free(xml); } else { *node = tag; @@ -1904,6 +1905,7 @@ SWITCH_DECLARE(switch_status_t) switch_xml_init(switch_memory_pool_t *pool, cons *err = "Success"; switch_mutex_init(&XML_LOCK, SWITCH_MUTEX_NESTED, XML_MEMORY_POOL); + switch_mutex_init(&XML_GEN_LOCK, SWITCH_MUTEX_NESTED, XML_MEMORY_POOL); switch_thread_rwlock_create(&RWLOCK, XML_MEMORY_POOL); switch_thread_rwlock_create(&B_RWLOCK, XML_MEMORY_POOL);