[PR #1675] [MERGED] deprecate edns methods, add extensions #2498

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

📋 Pull Request Information

Original PR: https://github.com/hickory-dns/hickory-dns/pull/1675
Author: @leshow
Created: 4/4/2022
Status: Merged
Merged: 4/8/2022
Merged by: @bluejekyll

Base: mainHead: msg_modifiers


📝 Commits (3)

  • a0ccd04 Message edns_mut/set_header
  • 71892c0 fix tests for edns_mut change
  • ad5b0c4 deprecate edns methods, add extensions

📊 Changes

10 files changed (+157 additions, -65 deletions)

View changed files

📝 bin/tests/server_harness/mut_message_client.rs (+2 -2)
📝 crates/client/src/client/async_client.rs (+6 -3)
📝 crates/client/src/op/update_message.rs (+37 -21)
📝 crates/proto/src/op/message.rs (+76 -21)
📝 crates/proto/src/xfer/dns_handle.rs (+3 -2)
📝 crates/proto/src/xfer/dnssec_dns_handle.rs (+2 -3)
📝 crates/resolver/src/name_server/name_server.rs (+1 -1)
📝 tests/integration-tests/tests/client_future_tests.rs (+10 -5)
📝 tests/integration-tests/tests/client_tests.rs (+15 -6)
📝 tests/integration-tests/tests/dnssec_client_handle_tests.rs (+5 -1)

📄 Description

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.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/hickory-dns/hickory-dns/pull/1675 **Author:** [@leshow](https://github.com/leshow) **Created:** 4/4/2022 **Status:** ✅ Merged **Merged:** 4/8/2022 **Merged by:** [@bluejekyll](https://github.com/bluejekyll) **Base:** `main` ← **Head:** `msg_modifiers` --- ### 📝 Commits (3) - [`a0ccd04`](https://github.com/hickory-dns/hickory-dns/commit/a0ccd04beed01e2dec37c693361f03b92d420a15) Message edns_mut/set_header - [`71892c0`](https://github.com/hickory-dns/hickory-dns/commit/71892c0e9c4905e079d08249a652642bec3e31ca) fix tests for edns_mut change - [`ad5b0c4`](https://github.com/hickory-dns/hickory-dns/commit/ad5b0c463c57fabc25fff6f413cefd13390cef0c) deprecate edns methods, add extensions ### 📊 Changes **10 files changed** (+157 additions, -65 deletions) <details> <summary>View changed files</summary> 📝 `bin/tests/server_harness/mut_message_client.rs` (+2 -2) 📝 `crates/client/src/client/async_client.rs` (+6 -3) 📝 `crates/client/src/op/update_message.rs` (+37 -21) 📝 `crates/proto/src/op/message.rs` (+76 -21) 📝 `crates/proto/src/xfer/dns_handle.rs` (+3 -2) 📝 `crates/proto/src/xfer/dnssec_dns_handle.rs` (+2 -3) 📝 `crates/resolver/src/name_server/name_server.rs` (+1 -1) 📝 `tests/integration-tests/tests/client_future_tests.rs` (+10 -5) 📝 `tests/integration-tests/tests/client_tests.rs` (+15 -6) 📝 `tests/integration-tests/tests/dnssec_client_handle_tests.rs` (+5 -1) </details> ### 📄 Description 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. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-16 09:05:18 +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#2498
No description provided.