mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-19 11:42:27 +00:00
jansson: json_pack with new format to verify required runtime version.
Add a json_pack at startup that will fail if runtime links against a library older than jansson-2.11. Change-Id: I101aebafe0f9407650206f7c552dad3d69377b5a
This commit is contained in:
@@ -89,7 +89,7 @@ typedef AST_JSON_INT_T ast_json_int_t;
|
|||||||
/*!
|
/*!
|
||||||
* \brief Initialize the JSON library.
|
* \brief Initialize the JSON library.
|
||||||
*/
|
*/
|
||||||
void ast_json_init(void);
|
int ast_json_init(void);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set custom allocators instead of the standard ast_malloc() and ast_free().
|
* \brief Set custom allocators instead of the standard ast_malloc() and ast_free().
|
||||||
|
@@ -4059,7 +4059,7 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
|
|||||||
}
|
}
|
||||||
ast_verb(0, "PBX UUID: %s\n", pbx_uuid);
|
ast_verb(0, "PBX UUID: %s\n", pbx_uuid);
|
||||||
|
|
||||||
ast_json_init();
|
check_init(ast_json_init(), "libjansson");
|
||||||
ast_ulaw_init();
|
ast_ulaw_init();
|
||||||
ast_alaw_init();
|
ast_alaw_init();
|
||||||
tdd_init();
|
tdd_init();
|
||||||
|
20
main/json.c
20
main/json.c
@@ -693,10 +693,28 @@ struct ast_json *ast_json_ipaddr(const struct ast_sockaddr *addr, enum ast_trans
|
|||||||
return ast_json_string_create(ast_str_buffer(string));
|
return ast_json_string_create(ast_str_buffer(string));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ast_json_init(void)
|
int ast_json_init(void)
|
||||||
{
|
{
|
||||||
|
json_t *version_check;
|
||||||
|
|
||||||
/* Setup to use Asterisk custom allocators */
|
/* Setup to use Asterisk custom allocators */
|
||||||
ast_json_reset_alloc_funcs();
|
ast_json_reset_alloc_funcs();
|
||||||
|
|
||||||
|
/* We depend on functionality of jansson-2.11 but don't actually use
|
||||||
|
* any symbols. If we link at runtime to less than 2.11 this json_pack
|
||||||
|
* will return NULL. */
|
||||||
|
version_check = json_pack("{s: o?, s: o*}",
|
||||||
|
"JSON", NULL,
|
||||||
|
"Bourne", NULL);
|
||||||
|
if (!version_check) {
|
||||||
|
ast_log(LOG_ERROR, "There was a problem finding jansson 2.11 runtime libraries.\n"
|
||||||
|
"Please rebuild Asterisk using ./configure --with-jansson-bundled.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
json_decref(version_check);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void json_payload_destructor(void *obj)
|
static void json_payload_destructor(void *obj)
|
||||||
|
Reference in New Issue
Block a user