diff options
-rw-r--r-- | UPGRADE.txt | 5 | ||||
-rw-r--r-- | funcs/func_enum.c | 6 | ||||
-rw-r--r-- | main/enum.c | 3 |
3 files changed, 9 insertions, 5 deletions
diff --git a/UPGRADE.txt b/UPGRADE.txt index 2a56216b5..bd6a63ede 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -22,7 +22,10 @@ From 10 to 12: -* No significant changes as of yet. +func_enum: + - ENUM query functions now return a count of -1 on lookup error to + differentiate between a failed query and a successful query with 0 results + matching the specified type. From 1.8 to 10: diff --git a/funcs/func_enum.c b/funcs/func_enum.c index cc4d47a78..4b5fb9f7b 100644 --- a/funcs/func_enum.c +++ b/funcs/func_enum.c @@ -82,7 +82,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") <para>The number of the result that you want to retrieve.</para> <para>Results start at <literal>1</literal>. If this argument is specified as <literal>getnum</literal>, then it will return the total number of results - that are available.</para> + that are available or -1 on error.</para> </parameter> </syntax> <description> @@ -105,7 +105,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") <option name="c"> <para>Returns an integer count of the number of NAPTRs of a certain RR type.</para> <para>Combination of <literal>c</literal> and Method-type of <literal>ALL</literal> will - return a count of all NAPTRs for the record.</para> + return a count of all NAPTRs for the record or -1 on error.</para> </option> <option name="u"> <para>Returns the full URI and does not strip off the URI-scheme.</para> @@ -363,7 +363,7 @@ static int enum_result_read(struct ast_channel *chan, const char *cmd, char *dat erds = datastore->data; if (!strcasecmp(args.resultnum, "getnum")) { - snprintf(buf, len, "%u", erds->context->naptr_rrs_count); + snprintf(buf, len, "%d", erds->context->naptr_rrs_count); res = 0; goto finish; } diff --git a/main/enum.c b/main/enum.c index 92f185c60..aace1fce0 100644 --- a/main/enum.c +++ b/main/enum.c @@ -856,6 +856,7 @@ int ast_get_enum(struct ast_channel *chan, const char *number, char *dst, int ds if (ret < 0) { ast_debug(1, "No such number found: %s (%s)\n", tmp, strerror(errno)); + context->naptr_rrs_count = -1; strcpy(dst, "0"); ret = 0; } @@ -896,7 +897,7 @@ int ast_get_enum(struct ast_channel *chan, const char *number, char *dst, int ds } else if (!(context->options & ENUMLOOKUP_OPTIONS_COUNT)) { context->dst[0] = 0; } else if ((context->options & ENUMLOOKUP_OPTIONS_COUNT)) { - snprintf(context->dst, context->dstlen, "%d", context->count); + snprintf(context->dst, context->dstlen, "%d", context->naptr_rrs_count + context->count); } if (chan) { |