I got some interesting results on some tests. I added a delay at the end of new_dns_packet in DnsResolver.pm to test the theory that the problem is related to all the reply packets showing up at once. I don't know if the results support that specific theory, but it did make a difference.
Before I made the change, only one reply was received, for the first backgrounded query of the 76 that are sent out during the t/dnsbl.t test. When I introduced a delay by adding select(undef, undef, undef, 0.1) in new_dns_packet, more replies were received until the delay was up to 1.1 seconds, at which point I got between 53 to 56 replies received out of 76. There was no further improvement when I continued to increase the delay. I went up to 5 seconds. These tests were run under Cygwin. I don't see a difference between running und win32 and cygwin on the same virtual machine. Running on the same real machine under MacOS X doesn't have these problems, so it is not solely caused by strange characteristics of my satellite Internet connection. -- sidney