On Mar 1, 2012, at 6:26 AM, William Herrin wrote: > On Thu, Mar 1, 2012 at 7:20 AM, Owen DeLong <o...@delong.com> wrote: >> The simpler approach and perfectly viable without mucking >> up what is already implemented and working: >> >> Don't keep returns from GAI/GNI around longer than it takes >> to cycle through your connect() loop immediately after the GAI/GNI call. > > The even simpler approach: create an AF_NAME with a sockaddr struct > that contains a hostname instead of an IPvX address. Then let > connect() figure out the details of caching, TTLs, protocol and > address selection, etc. Such a connect() could even support a revised > TCP stack which is able to retry with the other addresses at the first > subsecond timeout rather than camping on each address in sequence for > the typical system default of two minutes. >
That's not simpler for the following reasons: 1. It takes away abilities to manage the connect() process that some applications want. 2. It requires a rewrite of a whole lot of software built on the current mechanisms. Most systems provide a mechanism for overriding the timeout for connect(). Further, there are lots of classes, libraries, etc. that you can already use if you want to abstract the gai/gni + connect functionality. What exists isn't broken at the API level. Please stop trying to fix what is not broken. Owen