Address JSON thread safety issues.

In tracking down some unit tests failures, I ended up reading the fine
print[1] regarding Jansson's thread safety.

In short:
 1. Ref-counting is non-atomic.
 2. json_dumps() and friends are not thread safe.

This patch adds locking where necessary to our ast_json_* wrapper API,
with documentation in json.h describing the thread safety limitations of
the API.

 [1]: http://www.digip.org/jansson/doc/2.4/portability.html#thread-safety

Review: https://reviewboard.asterisk.org/r/2716/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396119 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
David M. Lee
2013-08-02 14:27:35 +00:00
parent 328e99f41d
commit 10c91bc96e
6 changed files with 238 additions and 19 deletions

View File

@@ -55,7 +55,7 @@ static size_t alloc_count;
*/
static void *json_debug_malloc(size_t size)
{
void *p = ast_malloc(size);
void *p = ast_json_malloc(size);
if (p) {
++alloc_count;
}
@@ -67,7 +67,7 @@ static void json_debug_free(void *p)
if (p) {
--alloc_count;
}
ast_free(p);
ast_json_free(p);
}
static int json_test_init(struct ast_test_info *info, struct ast_test *test)