Andreas Plesner Jacobsen wrote:
I've recently been introduced to the caching behaviour of InetAddress, and I think it may be improved.

The javadoc reads:
The InetAddress class has a cache to store successful as well as unsuccessful host name resolutions. The positive caching is there to guard against DNS spoofing attacks; while the negative caching is used to improve performance.

And that is all fine and well, but for multihomed hosts, I believe the current behaviour is

1) Not documented properly
2) Not correct

Coming from a unix-world, I'm used to the resolver handing out RR-replies in random order, and thus I would expect InetAddress to do the same,
The specification could be improved but changing InetAddress.getByName to return a random address is a significant change that could break existing applications. It might be better to define a new method, perhaps "getAnyByName", that randomly chooses one of the cached addresses for the host (or does a lookup if not in the cache). That would be a convenience to applications to avoid needing to invoke getAllByName and choose an address themselves.

-Alan.

Reply via email to