summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--UPGRADE.txt5
-rw-r--r--funcs/func_enum.c6
-rw-r--r--main/enum.c3
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) {