From bb76b88bafebd69bba31d85acd24fa5d46f3d59a Mon Sep 17 00:00:00 2001 From: Matt Jordan Date: Wed, 8 Jul 2015 16:28:13 -0500 Subject: main/sorcery: Don't fail object set creation from JSON if field fails Some individual fields may fail their conversion due to their default values being invalid for their custom handlers. In particular, configuration values that depend on others being enabled (and thus have an empty default value) are notorious for tripping this routine up. An example of this are any of the DTLS options for endpoints. Any of the DTLS options will fail to be applied (as DTLS is not enabled), causing the entire object set to be aborted. This patch makes it so that we log a debug message when skipping a field, and rumble on anyway. ASTERISK-25238 Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76 --- main/sorcery.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'main/sorcery.c') diff --git a/main/sorcery.c b/main/sorcery.c index 8e48403d9..7a4a7f324 100644 --- a/main/sorcery.c +++ b/main/sorcery.c @@ -1597,10 +1597,13 @@ struct ast_json *ast_sorcery_objectset_json_create(const struct ast_sorcery *sor char *buf = NULL; struct ast_json *value = NULL; - if ((res = object_field->handler(object, object_field->args, &buf)) + if (object_field->handler(object, object_field->args, &buf) || !(value = ast_json_string_create(buf)) || ast_json_object_set(json, object_field->name, value)) { - res = -1; + ast_free(buf); + ast_debug(5, "Skipping field '%s' for object type '%s'\n", + object_field->name, object_type->name); + continue; } ast_free(buf); -- cgit v1.2.3