Packet Api Rewrite
So, here it is #8 (closed) and more in the wiki page. It's a lot of code, but feel free to ask anything.
Here's the general overview of the state of things:
- Packet API
- Streamlined, compression reworked, checks in one place, ...
- Query processing
- Basically everything from the old name-server.c was remade so it stacks
-
name-server.h
and thens_proc_*
API, which is an API for a state machine that just accepts wireformat and does all the conversions between parsed packets and backwards. -
ns_proc_query.h
is the implementation of query processing and implements thens_proc_*
API
- It serves as a generic
query -> response
machine using solvers. - It also covers transaction security and stuff, so the solvers don't need to worry about this.
internet.h, chaos.h, axfr.h, ixfr.h, update.h, notify.h
- Solver implementations for various queries
- IN answers / DNSSEC proofs are now RFC compliant in several cases
- Transfers now also show message and byte counts
- Since all the bitpushing is done by the upper layers, they just do answer solving
- UDP & TCP handlers
- Simplified, using memory context for query processing
- TCP threads are now coherent, no through-the-pipe "fair" queueing
- XFR handler is simplified as well (all threads coherent)
- Basic unit tests for packet, query processing and stuff
- I don't know what else, just ask.
🎱
Pitfalls
- UPDATE forwarding is disabled until #189 (closed) is finished, as to not create more duplicated code and this is already complex enough.