summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2017-01-23 01:34:12 +0000
committerRiza Sulistyo <riza@teluu.com>2017-01-23 01:34:12 +0000
commita07aa383b4c1ecd13a06df348cc6b3796dae2a14 (patch)
treefa95e22041c2fc1f7bf521c752c65aa992950b6d
parentfacf42790301a8a51d5652b3047854ccb4411150 (diff)
Re #1945 (misc): Don't trigger SRV complete callback when there is a parse error.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5536 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjlib-util/src/pjlib-util/srv_resolver.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/pjlib-util/src/pjlib-util/srv_resolver.c b/pjlib-util/src/pjlib-util/srv_resolver.c
index 8a4a599e..8a2f7e1b 100644
--- a/pjlib-util/src/pjlib-util/srv_resolver.c
+++ b/pjlib-util/src/pjlib-util/srv_resolver.c
@@ -652,6 +652,7 @@ static void dns_callback(void *user_data,
} else if (query_job->dns_state == PJ_DNS_TYPE_A) {
pj_bool_t is_type_a, srv_completed;
+ pj_dns_addr_record rec;
/* Clear outstanding job */
if (common->type == PJ_DNS_TYPE_A) {
@@ -668,15 +669,26 @@ static void dns_callback(void *user_data,
is_type_a = (common->type == PJ_DNS_TYPE_A);
+ /* Parse response */
+ if (status==PJ_SUCCESS && pkt->hdr.anscount != 0) {
+ status = pj_dns_parse_addr_response(pkt, &rec);
+ if (status!=PJ_SUCCESS) {
+ char errmsg[PJ_ERR_MSG_SIZE];
+
+ PJ_LOG(4,(query_job->objname,
+ "DNS %s record parse error for '%.*s'."
+ " Err=%d (%s)",
+ (is_type_a ? "A" : "AAAA"),
+ (int)query_job->domain_part.slen,
+ query_job->domain_part.ptr,
+ status,
+ pj_strerror(status,errmsg,sizeof(errmsg)).ptr));
+ }
+ }
+
/* Check that we really have answer */
if (status==PJ_SUCCESS && pkt->hdr.anscount != 0) {
char addr[PJ_INET6_ADDRSTRLEN];
- pj_dns_addr_record rec;
-
- /* Parse response */
- status = pj_dns_parse_addr_response(pkt, &rec);
- if (status != PJ_SUCCESS)
- goto on_error;
pj_assert(rec.addr_count != 0);