Doing work on being able to merge multiple in-flight requests together. As I looked over the code, I realized some things didn't work with DNS-over-TCP (resurrections, blacklist_ip), which I think I have fixed (but I'm not going to test this; DNS-over-TCP is a bad hack).
In addition, the code that resent queries when we didn't hear from upstream has been revamped to create a new query ID number every time we resend the query, instead of echoing the local query ID. This is something I have also fixed in the Deadwood 2.3 codebase.
One issue is that, sometimes we will need to keep the DNS-over-TCP connections around while the DNS-over-UDP connections have died. I've redone forward_remote_reply() so that, once this routine sends a UDP reply, it resets that particular local UDP connection so it won't send a reply again. This will hopefully solve the multiple DNS-over-TCP issue.
I think I will have it so DNS-over-TCP connections simply don't look for in-flight requests, but always open up a new request. I'll do this, but put some things in place so we could have both UDP and TCP on the same connection number if this is desirable in the future.
The work can be seen here:
The deadwood-H releases are releases for the next 2.4 release of Deadwood (the "Head" branch); the deadwood-S releases will become the next 2.3 release of Deadwood (the "Stable" branch). I have run all tests in 32-bit CentOS for the next stable release; all I have to do before Deadwood 2.3.05 is to test it in 64-bit CentOS, make a new random prime for both the source code and the Windows compile, make a Windows compile, then Deadwood 2.3.05 will be ready.