]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Outgoing module options go to opt_list_modules_out
authorTom Carpay <tom@nlnetlabs.nl>
Wed, 27 Oct 2021 14:01:56 +0000 (14:01 +0000)
committerTom Carpay <tom@nlnetlabs.nl>
Wed, 27 Oct 2021 14:01:56 +0000 (14:01 +0000)
And opt_list_modules_out is reset in case of failure
BEWARE! No options from modules will be encoded in the responses now!

daemon/worker.c
services/authzone.c
services/localzone.c
services/mesh.c
util/data/msgreply.c

index dbb2da1fcbfb3e47e9ba29d9d89ab4e84152fd25..0d483de73150e3745bd1fc0f2728430e14081fba 100644 (file)
@@ -526,7 +526,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo,
                if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL,
                        LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
                        worker->env.now_tv))
-                               edns->opt_list = NULL;
+                               edns->opt_list_modules_out = NULL;
                error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, 
                        &msg->qinfo, id, flags, edns);
        }
@@ -730,7 +730,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo,
                if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL,
                        LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
                        worker->env.now_tv))
-                               edns->opt_list = NULL;
+                               edns->opt_list_modules_out = NULL;
                error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, 
                        qinfo, id, flags, edns);
        }
@@ -796,7 +796,7 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns,
        if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL,
                LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad,
                worker->env.now_tv))
-                       edns->opt_list = NULL;
+                       edns->opt_list_modules_out = NULL;
        sldns_buffer_clear(pkt);
        sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip id */
        sldns_buffer_write_u16(pkt, (uint16_t)(BIT_QR|BIT_RA));
index 38cc7ab213e7b33675ac1eb4dbaa8ddfa97b3261..58056a13bd09b7eb5ef055a9f1577ef2bda71b4f 100644 (file)
@@ -3518,7 +3518,7 @@ auth_error_encode(struct query_info* qinfo, struct module_env* env,
 
        if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL,
                rcode, edns, repinfo, temp, env->now_tv))
-               edns->opt_list = NULL;
+               edns->opt_list_modules_out = NULL;
        error_encode(buf, rcode|BIT_AA, qinfo,
                *(uint16_t*)sldns_buffer_begin(buf),
                sldns_buffer_read_u16_at(buf, 2), edns);
index 17dd46813839b32b2252756a26f6d01db784f887..03d16f965355f8f5bebb545e3e741b44b9630a78 100644 (file)
@@ -1299,7 +1299,7 @@ local_error_encode(struct query_info* qinfo, struct module_env* env,
 
        if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL,
                rcode, edns, repinfo, temp, env->now_tv))
-               edns->opt_list = NULL;
+               edns->opt_list_modules_out = NULL;
        error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf),
                sldns_buffer_read_u16_at(buf, 2), edns);
 }
index 200531903503237f76a3957e6f3958d42bc09a0f..be532610fcdc5d9fbb45870e1bd8c41d3e5e1064 100644 (file)
@@ -505,7 +505,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo,
                        log_err("mesh_state_create: out of memory; SERVFAIL");
                        if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL,
                                LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv))
-                                       edns->opt_list = NULL;
+                                       edns->opt_list_modules_out = NULL;
                        error_encode(r_buffer, LDNS_RCODE_SERVFAIL,
                                qinfo, qid, qflags, edns);
                        comm_point_send_reply(rep);
@@ -521,7 +521,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo,
                                log_err("mesh_state_create: out of memory; SERVFAIL");
                                if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL,
                                        NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv))
-                                               edns->opt_list = NULL;
+                                               edns->opt_list_modules_out = NULL;
                                error_encode(r_buffer, LDNS_RCODE_SERVFAIL,
                                        qinfo, qid, qflags, edns);
                                comm_point_send_reply(rep);
@@ -594,7 +594,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo,
 servfail_mem:
        if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s,
                NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv))
-                       edns->opt_list = NULL;
+                       edns->opt_list_modules_out = NULL;
        error_encode(r_buffer, LDNS_RCODE_SERVFAIL,
                qinfo, qid, qflags, edns);
        comm_point_send_reply(rep);
@@ -1145,11 +1145,11 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep,
                if(rcode == LDNS_RCODE_SERVFAIL) {
                        if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s,
                                rep, rcode, &r->edns, NULL, m->s.region, start_time))
-                                       r->edns.opt_list = NULL;
+                                       r->edns.opt_list_modules_out = NULL;
                } else {
                        if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode,
                                &r->edns, NULL, m->s.region, start_time))
-                                       r->edns.opt_list = NULL;
+                                       r->edns.opt_list_modules_out = NULL;
                }
                fptr_ok(fptr_whitelist_mesh_cb(r->cb));
                (*r->cb)(r->cb_arg, rcode, r->buf, sec_status_unchecked, NULL,
@@ -1286,11 +1286,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
                if(rcode == LDNS_RCODE_SERVFAIL) {
                        if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s,
                                rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time))
-                                       r->edns.opt_list = NULL;
+                                       r->edns.opt_list_modules_out = NULL;
                } else { 
                        if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode,
                                &r->edns, &r->query_reply, m->s.region, &r->start_time))
-                                       r->edns.opt_list = NULL;
+                                       r->edns.opt_list_modules_out = NULL;
                }
                error_encode(r_buffer, rcode, &m->s.qinfo, r->qid,
                        r->qflags, &r->edns);
@@ -1317,7 +1317,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
                {
                        if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s,
                        rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time))
-                               r->edns.opt_list = NULL;
+                               r->edns.opt_list_modules_out = NULL;
                        error_encode(r_buffer, LDNS_RCODE_SERVFAIL,
                                &m->s.qinfo, r->qid, r->qflags, &r->edns);
                }
index 16441a79de14ed99e6d40b73f60ca674a0a1fe7e..67a47a7b373b09de41f48f1900d1fc97f43e5c88 100644 (file)
@@ -1097,7 +1097,7 @@ static int inplace_cb_reply_call_generic(
                (void)(*(inplace_cb_reply_func_type*)cb->cb)(qinfo, qstate, rep,
                        rcode, edns, &opt_list_out, repinfo, region, start_time, cb->id, cb->cb_arg);
        }
-       edns->opt_list = opt_list_out;
+       edns->opt_list_modules_out = opt_list_out;
        return 1;
 }