summaryrefslogtreecommitdiff
path: root/third-party/pjproject/patches/0012-Re-1945-misc-Don-t-trigger-SRV-complete-callback-whe.patch
blob: e65556f22bd4c9ce214e5dbab96145a22d507dfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
From 783de8956190c47a70ffefed56a1a2b21a62b235 Mon Sep 17 00:00:00 2001
From: Riza Sulistyo <riza@teluu.com>
Date: Mon, 23 Jan 2017 01:34:12 +0000
Subject: [PATCH 2/5] Re #1945 (misc): Don't trigger SRV complete callback when
 there is a parse error.

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5536 74dad513-b988-da41-8d7b-12977e46ad98
---
 pjlib-util/src/pjlib-util/srv_resolver.c | 24 ++++++++++++++++++------
 1 file 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 8a4a599..8a2f7e1 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);
 
-- 
2.7.4