mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
Fixup assertion that no longer holds (since the new DoS prevention code jostles out old queries).
git-svn-id: file:///svn/unbound/trunk@1623 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
578c1632ce
commit
daf63c7e89
3 changed files with 13 additions and 6 deletions
|
|
@ -1,3 +1,7 @@
|
||||||
|
26 May 2009: Wouter
|
||||||
|
- Thanks again to Brett Carr, found an assertion that was not true.
|
||||||
|
Assertion checked if recursion parent query still existed.
|
||||||
|
|
||||||
29 April 2009: Wouter
|
29 April 2009: Wouter
|
||||||
- Thanks to Brett Carr, caught windows resource leak, use
|
- Thanks to Brett Carr, caught windows resource leak, use
|
||||||
closesocket() and not close() on sockets or else the network stack
|
closesocket() and not close() on sockets or else the network stack
|
||||||
|
|
|
||||||
|
|
@ -1707,6 +1707,9 @@ processPrimeResponse(struct module_qstate* qstate, int id)
|
||||||
struct iter_qstate* iq = (struct iter_qstate*)qstate->minfo[id];
|
struct iter_qstate* iq = (struct iter_qstate*)qstate->minfo[id];
|
||||||
enum response_type type = response_type_from_server(0, iq->response,
|
enum response_type type = response_type_from_server(0, iq->response,
|
||||||
&iq->qchase, iq->dp);
|
&iq->qchase, iq->dp);
|
||||||
|
/* @@@ DEBUG - fail to prime roots often */
|
||||||
|
/* if((ub_random(qstate->env->rnd) & 0x7) != 0)
|
||||||
|
type = RESPONSE_TYPE_ANSWER+1; */
|
||||||
if(type == RESPONSE_TYPE_ANSWER) {
|
if(type == RESPONSE_TYPE_ANSWER) {
|
||||||
qstate->return_rcode = LDNS_RCODE_NOERROR;
|
qstate->return_rcode = LDNS_RCODE_NOERROR;
|
||||||
qstate->return_msg = iq->response;
|
qstate->return_msg = iq->response;
|
||||||
|
|
@ -1766,16 +1769,15 @@ processTargetResponse(struct module_qstate* qstate, int id,
|
||||||
log_query_info(VERB_ALGO, "processTargetResponse super", &forq->qinfo);
|
log_query_info(VERB_ALGO, "processTargetResponse super", &forq->qinfo);
|
||||||
|
|
||||||
/* check to see if parent event is still interested (in orig name). */
|
/* check to see if parent event is still interested (in orig name). */
|
||||||
|
if(!foriq->dp)
|
||||||
|
return; /* not interested anymore */
|
||||||
dpns = delegpt_find_ns(foriq->dp, qstate->qinfo.qname,
|
dpns = delegpt_find_ns(foriq->dp, qstate->qinfo.qname,
|
||||||
qstate->qinfo.qname_len);
|
qstate->qinfo.qname_len);
|
||||||
if(!dpns) {
|
if(!dpns) {
|
||||||
/* FIXME: maybe store this nameserver address in the cache
|
/* If not interested, just stop processing this event */
|
||||||
* anyways? */
|
|
||||||
/* If not, just stop processing this event */
|
|
||||||
verbose(VERB_ALGO, "subq: parent not interested anymore");
|
verbose(VERB_ALGO, "subq: parent not interested anymore");
|
||||||
/* this is an error, and will cause parent to be reactivated
|
/* could be because parent was jostled out of the cache,
|
||||||
* even though nothing has happened */
|
and a new identical query arrived, that does not want it*/
|
||||||
log_assert(0);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -422,6 +422,7 @@ void
|
||||||
worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev), void* arg)
|
worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev), void* arg)
|
||||||
{
|
{
|
||||||
struct worker* worker = (struct worker*)arg;
|
struct worker* worker = (struct worker*)arg;
|
||||||
|
verbosity = 5; /* @@@ DEBUG */
|
||||||
verbose(VERB_QUERY, "caught stop signal (wsaevent)");
|
verbose(VERB_QUERY, "caught stop signal (wsaevent)");
|
||||||
worker->need_to_exit = 1;
|
worker->need_to_exit = 1;
|
||||||
comm_base_exit(worker->base);
|
comm_base_exit(worker->base);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue