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:
Wouter Wijngaards 2009-05-26 14:42:14 +00:00
parent 578c1632ce
commit daf63c7e89
3 changed files with 13 additions and 6 deletions

View file

@ -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

View file

@ -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;
} }

View file

@ -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);