<div dir="ltr"><div dir="ltr">At Fri, 25 Jan 2019 21:49:24 +0100,<br>Fredrik Pettai <<a href="mailto:pettai@sunet.se">pettai@sunet.se</a>> wrote:<br><br>> Ah, my test was very brief and simple, and I didn't have prefetch enabled.<br>> But getting the full picture it makes sense on how it all fits together.<br>> <br>> Thanks for the explanation, I tested it again with all options enabled,<br>> and yes now it works better.<br><br>Good to know it now works, but if you had to explicitly enable<br>prefetch, that actually doesn't sound right.  In my<br>understanding, a prefetch should be attempted when you enable<br>serve-expired and use expired answer even if prefetch itself is<br>disabled in the configuration.  The most relevant part of the source<br>code suggests that's the case:<br><br>                if((worker->env.cfg->prefetch || worker->env.cfg->serve_expired)<br>                    && *worker->env.now >=<br>                    ((struct reply_info*)e->data)->prefetch_ttl) {<br>[...]<br>                    reply_and_prefetch(worker, lookup_qinfo,<br>                        sldns_buffer_read_u16_at(c->buffer, 2),<br>                        repinfo, leeway);<br><br>So if it really required to enable prefetch, that may actually be some<br>kind of bug.  But in any case...<br><br>> (perhaps that should be added to the man page under cachedb)<br><br>...it's more about how serve-expired works in general, rather than<br>how it should interact with cachedb.<br><br>--<br>JINMEI, Tatuya<br></div></div>