From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Mon, 8 Nov 2021 10:02:54 +0000 (+0100) Subject: Apply suggestions from code review X-Git-Tag: release-1.14.0rc1~27^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa73142b7949849c9262ce533ed25753b5929e5f;p=thirdparty%2Funbound.git Apply suggestions from code review Co-authored-by: Willem Toorop --- diff --git a/daemon/worker.c b/daemon/worker.c index 6a13dbe29..b9103488f 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1003,9 +1003,6 @@ answer_notify(struct worker* w, struct query_info* qinfo, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; - edns->opt_list_in = NULL; - edns->opt_list_out = NULL; - edns->opt_list_modules_out = NULL; error_encode(pkt, rcode, qinfo, *(uint16_t*)(void *)sldns_buffer_begin(pkt), sldns_buffer_read_u16_at(pkt, 2), edns); diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 05c0d1a99..f0017089d 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -831,6 +831,10 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ for(opt=edns->opt_list_modules_out; opt; opt=opt->next) { + if (opt->opt_code == LDNS_EDNS_PADDING) { + padding_option = opt; + continue; + } sldns_buffer_write_u16(pkt, opt->opt_code); sldns_buffer_write_u16(pkt, opt->opt_len); if(opt->opt_len != 0) diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 35f58c2fe..3e6a0affa 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -968,7 +968,6 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, log_err("out of memory"); return LDNS_RCODE_SERVFAIL; } - c->tcp_keepalive = 1; } /* while still more options, and have code+len to read */ @@ -1031,17 +1030,17 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, break; default: - if(!edns_opt_list_append(&edns->opt_list_in, - opt_code, opt_len, rdata_ptr, region)) { - log_err("out of memory"); - return LDNS_RCODE_SERVFAIL; - } break; } + if(!edns_opt_list_append(&edns->opt_list_in, + opt_code, opt_len, rdata_ptr, region)) { + log_err("out of memory"); + return LDNS_RCODE_SERVFAIL; + } rdata_ptr += opt_len; rdata_len -= opt_len; } - return 0; + return LDNS_RCODE_NOERROR; } int @@ -1109,7 +1108,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, rdata_len = found->rr_first->size-2; rdata_ptr = found->rr_first->ttl_data+6; if(parse_edns_options(rdata_ptr, rdata_len, edns, NULL, NULL, region)) - return 0; + return LDNS_RCODE_NOERROR; /* ignore rrsigs */ @@ -1187,12 +1186,8 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, if(sldns_buffer_remaining(pkt) < rdata_len) return LDNS_RCODE_FORMERR; rdata_ptr = sldns_buffer_current(pkt); - rcode = parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); - if(rcode) - return rcode; - /* ignore rrsigs */ - + return parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); return 0; } diff --git a/util/data/msgparse.h b/util/data/msgparse.h index 518161760..0c70d3b15 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -235,7 +235,7 @@ struct edns_data { struct edns_option* opt_list_out; /** rdata element list of outgoing edns options from modules * or NULL if none */ - struct edns_option* opt_list_modules_out; + struct edns_option* opt_list_inplace_cb_out; /** block size to pad */ uint16_t padding_block_size; };