diff --git a/modules/cookies/cookiemonster.c b/modules/cookies/cookiemonster.c index e2739224ac7dd96753c4c2cb0690150e049c163d..fd9c35e054d714813ddf2f249c2773545bcba076 100644 --- a/modules/cookies/cookiemonster.c +++ b/modules/cookies/cookiemonster.c @@ -356,6 +356,8 @@ int check_request(knot_layer_t *ctx, void *module_param) struct kr_request *req = ctx->data; struct kr_cookie_settings *srvr_sett = &req->ctx->cookie_ctx.srvr; + knot_pkt_t *answer = req->answer; + if (!srvr_sett->enabled) { /* TODO -- IS there a way how to determine whether the original * request came via TCP? */ @@ -372,7 +374,7 @@ int check_request(knot_layer_t *ctx, void *module_param) if (ret != kr_ok()) { /* FORMERR -- malformed cookies. */ DEBUG_MSG(NULL, "%s\n", "request with malformed cookie"); - knot_wire_set_rcode(req->answer->wire, KNOT_RCODE_FORMERR); + knot_wire_set_rcode(answer->wire, KNOT_RCODE_FORMERR); return KNOT_STATE_FAIL | KNOT_STATE_DONE; } @@ -408,13 +410,12 @@ int check_request(knot_layer_t *ctx, void *module_param) /* Generate BADCOOKIE response. */ DEBUG_MSG(NULL, "%s\n", "request is missing server cookie"); - if (!knot_pkt_has_edns(req->answer)) { + if (!knot_pkt_has_edns(answer)) { DEBUG_MSG(NULL, "%s\n", "missing EDNS section in prepared answer"); return KNOT_STATE_FAIL; } - kr_pkt_set_ext_rcode(req->answer, - KNOT_RCODE_BADCOOKIE); + kr_pkt_set_ext_rcode(answer, KNOT_RCODE_BADCOOKIE); return_state = KNOT_STATE_FAIL | KNOT_STATE_DONE; } goto answer_add_cookies; @@ -439,7 +440,7 @@ int check_request(knot_layer_t *ctx, void *module_param) /* Invalid server cookie. */ if (qry->qdcount == 0) { /* RFC7873 5.4 */ - kr_pkt_set_ext_rcode(req->answer, KNOT_RCODE_BADCOOKIE); + kr_pkt_set_ext_rcode(answer, KNOT_RCODE_BADCOOKIE); return_state = KNOT_STATE_DONE | KNOT_STATE_FAIL; } else if (!ignore_badcookie) { /* TODO -- Silently discard? */ /* Generate BADCOOKIE response. */ @@ -450,8 +451,7 @@ int check_request(knot_layer_t *ctx, void *module_param) "missing EDNS section in prepared answer"); return KNOT_STATE_FAIL; } - kr_pkt_set_ext_rcode(req->answer, - KNOT_RCODE_BADCOOKIE); + kr_pkt_set_ext_rcode(answer, KNOT_RCODE_BADCOOKIE); return_state = KNOT_STATE_FAIL | KNOT_STATE_DONE; } goto answer_add_cookies; @@ -464,7 +464,7 @@ answer_add_cookies: ret = kr_answer_write_cookie(&srvr_data, cookies.cc, cookies.cc_len, &nonce, kr_sc_algs[srvr_sett->current.alg_id], - req->answer); + answer); if (ret != kr_ok()) { return_state = KNOT_STATE_FAIL; }