[PR #1675] deprecate edns methods, add extensions #2506

Closed
opened 2026-03-16 09:32:44 +03:00 by kerem · 0 comments
Owner

Original Pull Request: https://github.com/hickory-dns/hickory-dns/pull/1675

State: closed
Merged: Yes


Assuming we're still good to go ahead with this modification, for reference the workaround for not being able to remove EDNS, as best I can work out is:

fn remove_edns(msg: Message) -> Message {
    let rcode = msg.response_code();
    let MessageParts {
        header,
        queries,
        answers,
        name_servers,
        additionals,
        sig0,
        edns,
    } = msg.into_parts();

    let mut ret = Message::new();
    ret.set_id(header.id())
        .set_message_type(header.message_type())
        .set_op_code(header.op_code())
        .set_authoritative(header.authoritative())
        .set_truncated(header.truncated())
        .set_recursion_desired(header.recursion_desired())
        .set_recursion_available(header.recursion_available())
        .set_authentic_data(header.authentic_data())
        .set_checking_disabled(header.checking_disabled())
        .set_response_code(rcode)
        .add_queries(queries)
        .add_answers(answers)
        .add_name_servers(name_servers);
    ret.insert_additionals(additionals);

    for sig in sig0 {
        ret.add_sig0(sig);
    }
    ret
}

Looking at all this, a MessageBuilder could probably help make constructing new Messages lot nicer, happy to sketch that out on an issue or something if you like. Let me know if you want to remove the MessageParts -> Message bit from this also... I included it here but if we pursue a builder maybe it's not as necessary.

**Original Pull Request:** https://github.com/hickory-dns/hickory-dns/pull/1675 **State:** closed **Merged:** Yes --- Assuming we're still good to go ahead with this modification, for reference the workaround for not being able to remove EDNS, as best I can work out is: ``` fn remove_edns(msg: Message) -> Message { let rcode = msg.response_code(); let MessageParts { header, queries, answers, name_servers, additionals, sig0, edns, } = msg.into_parts(); let mut ret = Message::new(); ret.set_id(header.id()) .set_message_type(header.message_type()) .set_op_code(header.op_code()) .set_authoritative(header.authoritative()) .set_truncated(header.truncated()) .set_recursion_desired(header.recursion_desired()) .set_recursion_available(header.recursion_available()) .set_authentic_data(header.authentic_data()) .set_checking_disabled(header.checking_disabled()) .set_response_code(rcode) .add_queries(queries) .add_answers(answers) .add_name_servers(name_servers); ret.insert_additionals(additionals); for sig in sig0 { ret.add_sig0(sig); } ret } ``` Looking at all this, a `MessageBuilder` could probably help make constructing new Messages lot nicer, happy to sketch that out on an issue or something if you like. Let me know if you want to remove the MessageParts -> Message bit from this also... I included it here but if we pursue a builder maybe it's not as necessary.
kerem 2026-03-16 09:32:44 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hickory-dns#2506
No description provided.