struct work_query* w = e->qstate->work_info;
struct worker* worker = e->qstate->env->worker;
+ verbose(VERB_ALGO, "worker scvd callback for qstate %p", e->qstate);
e->qstate->reply = reply_info;
if(error != 0) {
worker_process_query(worker, w, e->qstate,
rem = rbtree_delete(sq->outnet->serviced, sq);
log_assert(rem); /* should have been present */
sq->to_be_deleted = 1;
- if(dobackup) {
+ verbose(VERB_ALGO, "svcd callbacks start");
+ if(dobackup && c) {
/* make a backup of the query, since the querystate processing
* may send outgoing queries that overwrite the buffer.
* use secondary buffer to store the query.
}
while(p) {
n = p->next;
- if(dobackup) {
+ if(dobackup && c) {
ldns_buffer_clear(c->buffer);
ldns_buffer_write(c->buffer,
ldns_buffer_begin(sq->outnet->udp_second),
(void)(*p->cb)(c, p->cb_arg, error, rep);
p = n;
}
+ verbose(VERB_ALGO, "svcd callbacks end");
log_assert(sq->cblist == NULL);
serviced_delete(sq);
}