Commit a8497048 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

- Support for glibc IDN

- Run-time check for IDN
parent f9d4021d
...@@ -484,12 +484,6 @@ struct addrinfo ...@@ -484,12 +484,6 @@ struct addrinfo
# define AI_NUMERICHOST 4 # define AI_NUMERICHOST 4
# endif /* if !HAVE_STRUCT_ADDRINFO */ # endif /* if !HAVE_STRUCT_ADDRINFO */
/*** libidn support ***/
# ifndef AI_IDN
# define AI_IDN 0
# define AI_CANONIDN 0
# endif
VLC_EXPORT( const char *, vlc_gai_strerror, ( int ) ); VLC_EXPORT( const char *, vlc_gai_strerror, ( int ) );
VLC_EXPORT( int, vlc_getnameinfo, ( const struct sockaddr *, int, char *, int, int *, int ) ); VLC_EXPORT( int, vlc_getnameinfo, ( const struct sockaddr *, int, char *, int, int *, int ) );
VLC_EXPORT( int, vlc_getaddrinfo, ( vlc_object_t *, const char *, int, const struct addrinfo *, struct addrinfo ** ) ); VLC_EXPORT( int, vlc_getaddrinfo, ( vlc_object_t *, const char *, int, const struct addrinfo *, struct addrinfo ** ) );
......
...@@ -638,7 +638,7 @@ int vlc_getaddrinfo( vlc_object_t *p_this, const char *node, ...@@ -638,7 +638,7 @@ int vlc_getaddrinfo( vlc_object_t *p_this, const char *node,
struct addrinfo ** ); struct addrinfo ** );
HINSTANCE wship6_module; HINSTANCE wship6_module;
GETADDRINFO ws2_getaddrinfo; GETADDRINFO ws2_getaddrinfo;
wship6_module = LoadLibrary( "wship6.dll" ); wship6_module = LoadLibrary( "wship6.dll" );
if( wship6_module != NULL ) if( wship6_module != NULL )
{ {
...@@ -659,6 +659,30 @@ int vlc_getaddrinfo( vlc_object_t *p_this, const char *node, ...@@ -659,6 +659,30 @@ int vlc_getaddrinfo( vlc_object_t *p_this, const char *node,
} }
#endif #endif
#if defined( HAVE_GETADDRINFO ) || defined( UNDER_CE ) #if defined( HAVE_GETADDRINFO ) || defined( UNDER_CE )
# ifdef AI_IDN
/* Run-time I18n Domain Names support */
{
static int i_idn = AI_IDN; /* beware of thread-safety */
if( i_idn )
{
int i_ret;
hints.ai_flags |= i_idn;
i_ret = getaddrinfo( psz_node, psz_service, &hints, res );
if( i_ret != EAI_BADFLAGS )
return i_ret;
/* libidn not available: disable and retry without it */
/* NOTE: Using i_idn here would not be thread-safe */
hints.ai_flags &= ~AI_IDN;
i_idn = 0;
msg_Dbg( p_this, "I18n Domain Names not supported - disabled" );
}
}
# endif
return getaddrinfo( psz_node, psz_service, &hints, res ); return getaddrinfo( psz_node, psz_service, &hints, res );
#else #else
{ {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment