Merge "dns_core: Allow zero-length DNS responses."
This commit is contained in:
commit
d61ea4bcc2
|
@ -90,6 +90,10 @@ void *ast_dns_resolver_get_data(const struct ast_dns_query *query);
|
|||
* \param answer The raw DNS answer
|
||||
* \param answer_size The size of the raw DNS answer
|
||||
*
|
||||
* Zero-sized and NULL answers are permitted by this function. This may be
|
||||
* necessary if the query fails at an early stage and no actual DNS response
|
||||
* has been received from a DNS server.
|
||||
*
|
||||
* \retval 0 success
|
||||
* \retval -1 failure
|
||||
*/
|
||||
|
|
|
@ -559,6 +559,7 @@ enum ast_dns_search_result ast_search_dns_ex(void *context, const char *dname, i
|
|||
|
||||
if (dns_response_len < 0) {
|
||||
ast_log(LOG_ERROR, "DNS search failed for %s\n", dname);
|
||||
response_handler(context, (unsigned char *)"", 0, ns_r_nxdomain);
|
||||
return AST_DNS_SEARCH_FAILURE;
|
||||
}
|
||||
|
||||
|
|
|
@ -399,10 +399,10 @@ int ast_dns_resolver_set_result(struct ast_dns_query *query, unsigned int secure
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (!answer || answer_size == 0) {
|
||||
ast_debug(2, "Query '%p': Could not set result information since no DNS answer was provided\n",
|
||||
query);
|
||||
return -1;
|
||||
if (!answer) {
|
||||
answer = "";
|
||||
answer_size = 0;
|
||||
ast_debug(2, "Query '%p': Assuming zero-sized answer on NULL input\n", query);
|
||||
}
|
||||
|
||||
ast_dns_result_free(query->result);
|
||||
|
|
|
@ -365,9 +365,7 @@ AST_TEST_DEFINE(resolver_set_result_off_nominal)
|
|||
info->description =
|
||||
"This test performs the following:\n"
|
||||
"\t* Attempt to add a DNS result that is both bogus and secure\n"
|
||||
"\t* Attempt to add a DNS result that has no canonical name\n"
|
||||
"\t* Attempt to add a DNS result that has no answer\n"
|
||||
"\t* Attempt to add a DNS result with a zero answer size";
|
||||
"\t* Attempt to add a DNS result that has no canonical name";
|
||||
return AST_TEST_NOT_RUN;
|
||||
case TEST_EXECUTE:
|
||||
break;
|
||||
|
@ -391,22 +389,6 @@ AST_TEST_DEFINE(resolver_set_result_off_nominal)
|
|||
return AST_TEST_FAIL;
|
||||
}
|
||||
|
||||
if (!ast_dns_resolver_set_result(&some_query, 0, 0, ns_r_noerror, NULL,
|
||||
NULL, DNS_ANSWER_SIZE)) {
|
||||
ast_test_status_update(test, "Successfully added result with no answer\n");
|
||||
result = ast_dns_query_get_result(&some_query);
|
||||
ast_dns_result_free(result);
|
||||
return AST_TEST_FAIL;
|
||||
}
|
||||
|
||||
if (!ast_dns_resolver_set_result(&some_query, 0, 0, ns_r_noerror, NULL,
|
||||
DNS_ANSWER, 0)) {
|
||||
ast_test_status_update(test, "Successfully added result with answer size of zero\n");
|
||||
result = ast_dns_query_get_result(&some_query);
|
||||
ast_dns_result_free(result);
|
||||
return AST_TEST_FAIL;
|
||||
}
|
||||
|
||||
return AST_TEST_PASS;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue