Comments (14)
Hey @bluejekyll! I'd love to help out with this if I can. If you have any questions about futures/etc feel free to ask me any time :)
We've already got an issue about asynchronous DNS resolution, although I'm not entirely sure where we're going to end up on that. In any case just wanted to say hi and offer help if needed!
from trust-dns.
It was a lot of work, but ClientFuture (with associated SecureClientHandle for DNSSec) just landed as 0.8.0 Published on crates.io as well.
from trust-dns.
Thanks @alexcrichton ! I'll definitely be pinging you when I get started on this. I'm still groking the futures library and trying to think through converting from MIO to futures. From what I can tell it will probably reduce my async io code by a few hundred lines of at least.
When you announced this, I actually stopped working on DNSCrypt support (and now might actually just implement TLSDNS), because I starting thinking about how I could be chaining the futures together to create layered abstractions around the IO code.
Shiny new things distract me too much sometimes ;)
from trust-dns.
@alexcrichton I've got the initial UdpClient stream impl done (I think, I haven't written any tests yet, need the server side for that first).
I had a QQ that maybe you can answer, I noticed in your impl you had a dequeue you were using to cache queries, I didn't do that but am realizing that the message once popped off the Receiver, it may not be available on the next iteration (probably the only way it can work).
If you have a minute can you look at:
https://github.com/bluejekyll/trust-dns/blob/bfry/futures/src/udp/udp_client_stream.rs#L89
and confirm this? basically I'm guessing that if this line blocks:
https://github.com/bluejekyll/trust-dns/blob/bfry/futures/src/udp/udp_client_stream.rs#L95
then I will lose the message off L89 for the next time the poll()
is run.
from trust-dns.
Ah yes, I believe you're correct! You'll probably want to call poll_write
first or otherwise handle the case where "would block" is returned (e.g. cache the buffer to get written later)
from trust-dns.
Cool! Thanks for the validation.
from trust-dns.
FYI: latest commit has what I consider to be the final version of the future impl.
@alexcrichton, this includes your suggestions for the return from the client_future::poll()
thanks for you input on that. I'll be moving on to TCP next.
from trust-dns.
IPv6 tests failing in travis due to this:
from trust-dns.
🎊
from trust-dns.
Current Future progress, for those following:
The bfry/futures-state-machine branch has the current HEAD which will eventually be merged in. The other futures branches were some various other attempts and directions. The current HEAD has generic support for UDP and TCP clients, but only for querying at the moment. I'm working on what I hope to be a better abstraction for ClientFuture than what I had with Client.
from trust-dns.
With the latest commit to bluejekyll/trust-dns@bb2ff3b
There is now full validation of RRSETs back to the trust_anchor (custom and public).
from trust-dns.
FYI, the current bfry/future_dnssec branch is very close to complete. I need to add a select_all and remove invalid rrsets from the response.
Also, need to upgrade to the current futures version.
from trust-dns.
This client side validator is nearly complete. There is currently a race condition in the evaluation logic, where it seems to enter a recursive lookup chain. It's not 100% reproducible. I would like to track this down before landing the secure_client_future impl in master.
from trust-dns.
I'm splitting this issue between server and client impls. I'm going to push the client in a release soon, the server will come one after I think.
from trust-dns.
Related Issues (20)
- Resolver couldn't handle response that have lots of records HOT 13
- tokio::JoinSet and hickory_resolver::Resolver causes "Cannot start a runtime from within a runtime" HOT 2
- Forwarder seems to not use /etc/hosts despite `use_hosts_file == true` HOT 3
- Presence of a faulty nameserver in system config causes client side lookups to take forever HOT 1
- Reverse lookup fails when there are multiple PTR records HOT 1
- www.hickory-dns.org does not work - 404 HOT 6
- SIG(0) RFC2931 is not listed as supported HOT 1
- Missing point of contact for security issues HOT 3
- `IN` keyword is not accepted HOT 2
- Request for a wildcard with ANY returns nothing HOT 2
- Handle sockets that have been shut down HOT 5
- Make ```hickory_proto::quic::QuicClientStream``` clonable
- why hickory-proto 0.24.1 ring dependencies is still 0.16.20 HOT 4
- Not convenient to call bind_with_addr to make a AsyncResolver HOT 6
- Bind address in ResolverConfig does not take effort for AsyncResolver HOT 10
- `hickory-dns` responds to `dig A doesnotexist.fqdn.com.` with NOERROR instead of with NXDOMAIN HOT 6
- `hickory-dns` resolver does not honor the DO bit in client's queries HOT 2
- [RFC] DNSSEC validation: configuration syntax HOT 11
- [RFC] re-structure `named.toml` syntax to reject invalid configurations HOT 3
- TCP fallback is not always used and forcing it is not ergonomic HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from trust-dns.