From: Simon Morlat Date: Fri, 22 Mar 2013 09:56:44 +0000 (+0100) Subject: change the way local interface is searched. X-Git-Url: http://sjero.net/git/?p=linphone;a=commitdiff_plain;h=1521d1f7f05f2e764ca936685878c65658dacdbd change the way local interface is searched. --- diff --git a/coreapi/misc.c b/coreapi/misc.c index 35a58e20..158ab0ad 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -1110,7 +1110,18 @@ static int get_local_ip_for_with_connect(int type, const char *dest, char *resul } int linphone_core_get_local_ip_for(int type, const char *dest, char *result){ + int err; strcpy(result,type==AF_INET ? "127.0.0.1" : "::1"); + + if (type==AF_INET) + dest="87.98.157.38"; /*a public IP address*/ + else dest="2a00:1450:8002::68"; + err=get_local_ip_for_with_connect(type,dest,result); + if (err==0) return 0; + + /* if the connect method failed, which happens when no default route is set, + * try to find 'the' running interface with getifaddrs*/ + #ifdef HAVE_GETIFADDRS if (dest==NULL) { /*we use getifaddrs for lookup of default interface */ @@ -1125,11 +1136,7 @@ int linphone_core_get_local_ip_for(int type, const char *dest, char *result){ } } #endif - /*else use connect to find the best local ip address */ - if (type==AF_INET) - dest="87.98.157.38"; /*a public IP address*/ - else dest="2a00:1450:8002::68"; - return get_local_ip_for_with_connect(type,dest,result); + return 0; } #ifndef WIN32