Boost logo

Boost Users :

Subject: Re: [Boost-users] [asio] negating address_configured
From: Alexander Lamaison (awl03_at_[hidden])
Date: 2011-03-06 15:59:33


On Sun, 06 Mar 2011 00:15:46 +0100, Juraj Ivanèiæ wrote:

> On 4.3.2011 14:52, Alexander Lamaison wrote:
>> On Fri, 04 Mar 2011 14:30:36 +0100, Juraj Ivanèiæ wrote:
>>> On 4.3.2011 11:48, Alexander Lamaison wrote:
>>>> What is the correct way to negate the (default) resolver flag,
>>>> address_configured?
>>>>
>>>> On Windows, at least, specifying address_configured (which translates to
>>>> AI_ADDRCONFIG) has a nasty side effect. If the 'external' network is down,
>>>> the resolver can no longer resolve the "localhost" address. More here
>>>> http://src.chromium.org/viewvc/chrome/trunk/src/net/base/host_resolver.cc?r1=16212&r2=16211
>>>>
>>>> address_configured is the default flag for ip::basic_resolver_query so I
>>>> need to specify a flag that turns it off. In the underlying addrinfo
>>>> struct this would just mean specifying 0 as the flag but that isn't an
>>>> option with ASIO as far as I can tell. How would I do this?
>>>
>>> I ran into this problem, and came up with the following workaround:
>>>
>>> boost::asio::ip::tcp::resolver::query query(
>>> hostname,
>>> port,
>>> boost::asio::ip::tcp::resolver::query::all_matching
>>> );
>>
>> Doesn't all_matching have it's own meaning? In other words, doesn't
>> getaddrinfo behave differently when given 0 as its flags rather than
>> AI_ALL?
>
> Not 100% sure anymore, but I think that I just wanted to avoid
> AI_ADDRCONFIG flag for the same reason as you, and this did
> the trick. Of course, if you prefer, you can always pass 0 statically
> cast to boost::asio::ip::tcp::resolver::query::flags.

As all_matching has worked for you, I'll stick with that for the moment.
Thanks for the advice :)

Alex

-- 
Easy SFTP for Windows Explorer (http://www.swish-sftp.org)

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net