diff --git a/main/features.c b/main/features.c index a3bc2d5c3d..984e9610f9 100644 --- a/main/features.c +++ b/main/features.c @@ -2773,22 +2773,30 @@ static int park_call_exec(struct ast_channel *chan, void *data) if (!res) { struct ast_park_call_args args = { .orig_chan_name = orig_chan_name, + .extout = NULL, + .return_con = NULL, + .return_ext = NULL, }; struct ast_flags flags = { 0 }; - if (parse && !ast_strlen_zero(app_args.timeout)) { - if (sscanf(app_args.timeout, "%d", &args.timeout) != 1) { - ast_log(LOG_WARNING, "Invalid timeout '%s' provided\n", app_args.timeout); - args.timeout = 0; + if (parse) { + if (!ast_strlen_zero(app_args.timeout)) { + if (sscanf(app_args.timeout, "%d", &args.timeout) != 1) { + ast_log(LOG_WARNING, "Invalid timeout '%s' provided\n", app_args.timeout); + args.timeout = 0; + } } - } - - args.return_con = app_args.return_con; - args.return_ext = app_args.return_ext; - if (parse && !ast_strlen_zero(app_args.return_pri)) { - if (sscanf(app_args.return_pri, "%d", &args.return_pri) != 1) { - ast_log(LOG_WARNING, "Invalid priority '%s' specified\n", app_args.return_pri); - args.return_pri = 0; + if (!ast_strlen_zero(app_args.return_con)) { + args.return_con = app_args.return_con; + } + if (!ast_strlen_zero(app_args.return_ext)) { + args.return_ext = app_args.return_ext; + } + if (!ast_strlen_zero(app_args.return_pri)) { + if (sscanf(app_args.return_pri, "%d", &args.return_pri) != 1) { + ast_log(LOG_WARNING, "Invalid priority '%s' specified\n", app_args.return_pri); + args.return_pri = 0; + } } }