Monday, June 16, 2008

Deadwood 2.00 released

Deadwood (I chose this name because it's a term in one of my favorite games, Gin Rummy, for cards that don't yet help you win) is the code that will eventually become MaraDNS' next-generation recursive resolver.

Basically, I wrote MaraDNS' recursive resolver back in 2001, and learned a lot about how DNS and recursive resolution works. This recursive resolver was never meant to be permanent; even when I was designing it, I made some decisions based on me rewriting the resolver once I understood how DNS recursive resolution really works.

For example, I chose to use threads to make implementation of the resolver easier. In addition, CNAME support is, at best, a hack in the recursive resolver.

Well, by early 2002 the resolver was working and I knew I was going to have to rewrite it. I even had plans to rewrite the recursive resolver as far back as 2002.

Well, MaraDNS being an open source project and all, things took longer than planned. I went back to college, put MaraDNS on the back burner, graduated from college; updated and released MaraDNS 1.2 (with the same old hackey recursive resolver) in late 2005 after graduating from college and before getting steady employment. Then I got employed again and MaraDNS went on the back burner again.

In the meantime, last fall I hadn't had steady employment, so I started work on the new recursive resolver. Since I enjoyed playing gin rummy, I named the new resolver "Deadwood". After three months of work, I had a fully functioning non-recursive non-threaded caching nameserver, with far cleaner code and some features MaraDNS doesn't have, such ipv6 support (Thanks to Sarton) and as the ability to write the cache to disk.

Well, this was essentially ready to go in December, then life came back and I was so busy with work (and developing a friendship with my neighbor who is now a very close platonic friend) I didn't have time to answer MaraDNS support mail, much less get Deadwood polished up.

Well, I finally took care of the support mail problem by just cutting off all email support for MaraDNS, so I can concentrate what little energy I have these days for MaraDNS development on polishing up Deadwood.

This weekend, I fixed a bug in Deadwood that made writing the cache to a file difficult, and also got the code to compile in MinGW (Windows without Cygwin) again. I have verified that Deadwood 2 works both in Windows using Cygwin, and in Linux as a native binary. Deadwood should also work as a native Windows binary, but without the ability to read and write the cache to a file (I need to figure out how to do signals in Windows).

I have made a tarball of Deadwood 2.00, which has full documentation and can be downloaded here:

Now that I've done that, I'm going on an official break with MaraDNS. I hope to return soon to continue work on Deadwood. Please don't bug me with MaraDNS issues unless you have found a security bug in MaraDNS