unbound 1.9 respone wrong answer (from cache?) when dig +tcp used.

Wouter Wijngaards wouter at nlnetlabs.nl
Fri Feb 8 15:58:06 UTC 2019


Hi,

On 08/02/2019 16:35, A. Schulze via Unbound-users wrote:
>
> Am 08.02.19 um 04:36 schrieb Punk[D.M] via Unbound-users:
>> Let’s run `dig @127.0.0.1 <http://127.0.0.1> -p 5300 twitter.com <http://twitter.com> *+tcp*` repeat:
>>
>>  
>>
>> The first answer is ok, but left answer all “empty”


This seems to be bug#4225, for which there is a fix in the code
repository. It was just fixed an hour ago. The patch for it is this, I
think:


Index: services/listen_dnsport.c
===================================================================
--- services/listen_dnsport.c    (revision 5105)
+++ services/listen_dnsport.c    (working copy)
@@ -1779,6 +1779,12 @@
     /* If mesh failed(mallocfail) and called commpoint_send_reply with
      * something like servfail then we pick up that reply below. */
     if(req->is_reply) {
+        /* reply from mesh is in the spool_buffer */
+        sldns_buffer_clear(c->buffer);
+        sldns_buffer_write(c->buffer,
+            sldns_buffer_begin(req->spool_buffer),
+            sldns_buffer_limit(req->spool_buffer));
+        sldns_buffer_flip(c->buffer);
         goto send_it;
     }
 


Best regards, Wouter

>>
>>  
>>
>> dig say “WARNING: recursion requested but not available”, 
>>
>> kdig say “WARNING: response QR bit not set”
>>
>>  
>>
>> Back to 1.8.3, everthing work fine.
> can't reproduce:
>
> $ dig @::1 version.bind. txt ch +short
> "unbound 1.9.0"
>
> $ for i in 1 2 3 ; do dig @::1 twitter.com +tcp +short; done
> 104.244.42.193
> 104.244.42.65
> 104.244.42.193
> 104.244.42.65
> 104.244.42.65
> 104.244.42.193
>
> any special configuration / compile options?
>
> Andreas
>



More information about the Unbound-users mailing list