LinkTed / dns-message-parser

Rust libary to encode and decode DNS packets
BSD 3-Clause "New" or "Revised" License
24 stars 8 forks source link

Support mDNS #8

Open iankressin opened 3 years ago

iankressin commented 3 years ago

I'm currently using this lib to discovery peers in the local network using mDNS, and the queries are basically DNS queries.

But every now and then the following error shows up in the console:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: QClass(32769)', src/udp_server.rs:60:57
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

which is probably due to QClass(32769):

As noted in [RFC6762], Multicast DNS can only carry DNS records with classes in the range 0-32767. Classes in the range 32768 to 65535 are incompatible with Multicast DNS.

This error could be handled internally, but I wonder if it's possible and makes sense to the project to add the support for mDNS within dns_message_parser. If it do, I'll be glad to help.

LinkTed commented 3 years ago

This is because, each QClass number is mapped to a specific variant in the enum QClass. If there is no mapping for the number then an error is returned. I have to think how to handle it better if there is no mapping for the number.

iankressin commented 3 years ago

@LinkTed thanks for the quick response.

Let me know if you need any help with code or testing.

LinkTed commented 3 years ago

@iankressin could you print the DNS message, where you get this error message?

iankressin commented 3 years ago

@LinkTed actually, this is the only info that I've got. I'm not the one sending this message, is some other device in my network