@@ -3760,7 +3760,8 @@ static int _dns_server_process_answer_A_IP(struct dns_request *request, char *cn
3760
3760
3761
3761
/* add this ip to request */
3762
3762
if (_dns_ip_address_check_add (request , cname , paddr , DNS_T_A , 0 , NULL ) != 0 ) {
3763
- return -1 ;
3763
+ /* skip result */
3764
+ return -2 ;
3764
3765
}
3765
3766
3766
3767
snprintf (ip , sizeof (ip ), "%d.%d.%d.%d" , paddr [0 ], paddr [1 ], paddr [2 ], paddr [3 ]);
@@ -3829,7 +3830,8 @@ static int _dns_server_process_answer_AAAA_IP(struct dns_request *request, char
3829
3830
3830
3831
/* add this ip to request */
3831
3832
if (_dns_ip_address_check_add (request , cname , paddr , DNS_T_AAAA , 0 , NULL ) != 0 ) {
3832
- return -1 ;
3833
+ /* skip result */
3834
+ return -2 ;
3833
3835
}
3834
3836
3835
3837
snprintf (ip , sizeof (ip ), "[%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x]" , paddr [0 ],
@@ -4130,6 +4132,7 @@ static int _dns_server_process_answer(struct dns_request *request, const char *d
4130
4132
if (ret == -1 ) {
4131
4133
break ;
4132
4134
} else if (ret == -2 ) {
4135
+ is_skip = 1 ;
4133
4136
continue ;
4134
4137
}
4135
4138
request -> rcode = packet -> head .rcode ;
@@ -4181,13 +4184,15 @@ static int _dns_server_process_answer(struct dns_request *request, const char *d
4181
4184
request -> rcode = packet -> head .rcode ;
4182
4185
}
4183
4186
4184
- if (has_result == 0 && request -> rcode == DNS_RC_NOERROR && packet -> head .tc == 1 ) {
4187
+ if (has_result == 0 && request -> rcode == DNS_RC_NOERROR && packet -> head .tc == 1 && request -> has_ip == 0 &&
4188
+ request -> has_soa == 0 ) {
4185
4189
tlog (TLOG_DEBUG , "result is truncated, %s qtype: %d, rcode: %d, id: %d, retry." , domain , request -> qtype ,
4186
4190
packet -> head .rcode , packet -> head .id );
4187
4191
return DNS_CLIENT_ACTION_RETRY ;
4188
4192
}
4189
4193
4190
- if (is_rcode_set == 0 && has_result == 1 ) {
4194
+ if (is_rcode_set == 0 && has_result == 1 && is_skip == 0 ) {
4195
+ /* need retry for some server. */
4191
4196
return DNS_CLIENT_ACTION_MAY_RETRY ;
4192
4197
}
4193
4198
0 commit comments