[ 
https://issues.apache.org/jira/browse/THRIFT-2539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14015282#comment-14015282
 ] 

Randy Abernethy commented on THRIFT-2539:
-----------------------------------------

Hey Michal,

As Jens mentioned people use Apache Thrift all the time for local IPC and we 
certainly want it to work for your use case.

RFC 3493 states:
"  If the AI_ADDRCONFIG flag is specified, IPv4 addresses shall be
   returned only if an IPv4 address is configured on the local system,
   and IPv6 addresses shall be returned only if an IPv6 address is
   configured on the local system.  The loopback address is not
   considered for this case as valid as a configured address."

Some resolver implementations ignore the above guidance and return a local 
loopback addr anyway (like Windows XP). When referencing a network addr on a 
networked system, the AI_ADDRCONFIG flag keeps some resolver implementations 
from doing long (useless) remote getaddrinfo() lookups. 

So we only want to not use this flag in cases where there is actually no 
network to avoid impacting other environments which work just fine right now.

I haven't had time to try the change proposed in my last post but the idea is 
to let the networked users keep their current experience and yet, if the first 
request to getaddrinfo() fails, fall back to a call without AI_ADDRCONFIG for 
local loopback users. Maybe there's a better approach but whatever we do we 
need to preserve the functionality expected by the thousands of current network 
users when we make the change.

-Randy


> Tsocket.cpp addrinfo ai_flags = AI_ADDRCONFIG
> ---------------------------------------------
>
>                 Key: THRIFT-2539
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2539
>             Project: Thrift
>          Issue Type: Question
>    Affects Versions: 0.9.1
>            Reporter: MichaƂ Gazda
>            Assignee: Randy Abernethy
>         Attachments: THRIFT-2539-my-new-feature.patch, TSocket.cpp
>
>
> While creating and using thrift based app we have found some problem on 
> windows 7 which was not present on winxp. When  we try to open socket with 
> local_open() for the host name "localhost" getaddrinfo fails with 11004. What 
> is important we do not have any physical network address as all network cards 
> are disabled in the system. As I assume it is connected wit he flag 
> AI_ADDRCONFIG. Why it is set by default? I wonder if I do remove it can it 
> cause some problems? I would like our app to be able to communicate locally 
> even if there is no external network available.
> Hope to get quick reply, thank you.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to