Parse arguments passed to the CDR_PROP function correctly

I can only blame this on a bad merge, because this in no way worked properly
the way it was written. Mea culpa. The function should now parse its arguments
correctly and function properly. (Note that the API used by the CDR_PROP
function has working unit tests... this was merely bad coding of the actual
registered function)

(closes issue ASTERISK-22613)
Reported by: Private Name



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Jordan
2013-09-30 19:57:36 +00:00
parent fa0d221bd3
commit dafa9e4e72

View File

@@ -349,12 +349,23 @@ static int cdr_prop_write(struct ast_channel *chan, const char *cmd, char *parse
{
enum ast_cdr_options option;
if (!strcasecmp("party_a", cmd)) {
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(variable);
AST_APP_ARG(options);
);
if (ast_strlen_zero(parse) || !value || !chan) {
return -1;
}
AST_STANDARD_APP_ARGS(args, parse);
if (!strcasecmp("party_a", args.variable)) {
option = AST_CDR_FLAG_PARTY_A;
} else if (!strcasecmp("disable", cmd)) {
} else if (!strcasecmp("disable", args.variable)) {
option = AST_CDR_FLAG_DISABLE_ALL;
} else {
ast_log(AST_LOG_WARNING, "Unknown option %s used with CDR_PROP\n", cmd);
ast_log(AST_LOG_WARNING, "Unknown option %s used with CDR_PROP\n", args.variable);
return 0;
}