]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Fixup tests.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 May 2007 14:33:38 +0000 (14:33 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 May 2007 14:33:38 +0000 (14:33 +0000)
git-svn-id: file:///svn/unbound/trunk@312 be551aaa-1e26-0410-a405-d3ace91eadb9

daemon/worker.c
doc/Changelog
iterator/iterator.c
services/outside_network.c
testcode/fake_event.c

index 0382197c3a3e0a2821ab238e7baa003b54d5c7ee..d5e3c46445d82a61a0d21863844bbc449c425fa7 100644 (file)
@@ -178,6 +178,7 @@ worker_handle_reply(struct comm_point* c, void* arg, int error,
        w->state.reply = reply_info;
        if(error != 0) {
                worker_process_query(worker, w, module_event_timeout);
+               w->state.reply = NULL;
                return 0;
        }
        /* sanity check. */
@@ -188,9 +189,11 @@ worker_handle_reply(struct comm_point* c, void* arg, int error,
                /* error becomes timeout for the module as if this reply
                 * never arrived. */
                worker_process_query(worker, w, module_event_timeout);
+               w->state.reply = NULL;
                return 0;
        }
        worker_process_query(worker, w, module_event_reply);
+       w->state.reply = NULL;
        return 0;
 }
 
index 91a6f8303689182c9ac5a729e93b64432c79e2ea..fe0bb47fda4f03fed985639cf9b21de51b30b787 100644 (file)
@@ -1,5 +1,6 @@
 11 May 2007: Wouter
        - iterator/iterator.c module.
+       - fixup to pass reply_info in testcode and in netevent.
 
 10 May 2007: Wouter
        - created release-0.3 svn tag.
index 2853eb8faaa8b596d00e8d190078f014ef7ec9b7..a5e8b05d45023a98111fc547679081e7820b4dac 100644 (file)
@@ -234,12 +234,14 @@ iter_operate(struct module_qstate* qstate, enum module_ev event, int id)
        }
        if(event == module_event_timeout) {
                /* try TCP if UDP fails */
+               /* TODO: disabled now, make better retry with EDNS.
                if(qstate->reply->c->type == comm_udp) {
                        qinfo_query_encode(qstate->buf, &qstate->qinfo);
                        (*env->send_query)(qstate->buf, &ie->fwd_addr, 
                                ie->fwd_addrlen, TCP_QUERY_TIMEOUT, qstate, 1);
                        return;
                }
+               */
                qstate->ext_state[id] = module_error;
                return;
        }
index e43d74ca0775c79e18fd7cd2b92f9ef09a279c50..1eccd6d21e0076e9f230802359df02a46c1fde18 100644 (file)
@@ -255,7 +255,7 @@ outnet_udp_cb(struct comm_point* c, void* arg, int error,
        }
        comm_timer_disable(p->timer);
        verbose(VERB_ALGO, "outnet handle udp reply");
-       (void)(*p->cb)(p->c, p->cb_arg, NETEVENT_NOERROR, NULL);
+       (void)(*p->cb)(p->c, p->cb_arg, NETEVENT_NOERROR, reply_info);
        pending_delete(outnet, p);
        return 0;
 }
index ca545078d5c73f2052ac4483a6d3b48955426644..ad358b6178fdbcdd888537cf2222d40b920f7dcb 100644 (file)
@@ -262,6 +262,7 @@ answer_callback_from_entry(struct replay_runtime* runtime,
         struct entry* entry, struct fake_pending* pend)
 {
        struct comm_point c;
+       struct comm_reply repinfo;
        memset(&c, 0, sizeof(c));
        c.fd = -1;
        c.buffer = ldns_buffer_new(runtime->bufsize);
@@ -269,7 +270,10 @@ answer_callback_from_entry(struct replay_runtime* runtime,
        if(pend->transport == transport_tcp)
                c.type = comm_tcp;
        fill_buffer_with_reply(c.buffer, entry, pend->pkt);
-       if((*pend->callback)(&c, pend->cb_arg, NETEVENT_NOERROR, NULL)) {
+       repinfo.c = &c;
+       repinfo.addrlen = pend->addrlen;
+       memcpy(&repinfo.addr, &pend->addr, pend->addrlen);
+       if((*pend->callback)(&c, pend->cb_arg, NETEVENT_NOERROR, &repinfo)) {
                fatal_exit("testbound: unexpected: callback returned 1");
        }
        ldns_buffer_free(c.buffer);
@@ -347,6 +351,7 @@ fake_pending_callback(struct replay_runtime* runtime,
        struct replay_moment* todo, int error)
 {
        struct fake_pending* p = runtime->pending_list;
+       struct comm_reply repinfo;
        struct comm_point c;
        memset(&c, 0, sizeof(c));
        if(!p) fatal_exit("No pending queries.");
@@ -357,8 +362,11 @@ fake_pending_callback(struct replay_runtime* runtime,
                c.type = comm_tcp;
        if(todo->evt_type == repevt_back_reply && todo->match) {
                fill_buffer_with_reply(c.buffer, todo->match, p->pkt);
-       }       
-       if((*p->callback)(&c, p->cb_arg, error, NULL)) {
+       }
+       repinfo.c = &c;
+       repinfo.addrlen = p->addrlen;
+       memcpy(&repinfo.addr, &p->addr, p->addrlen);
+       if((*p->callback)(&c, p->cb_arg, error, &repinfo)) {
                fatal_exit("unexpected: pending callback returned 1");
        }
        /* delete the pending item. */