Commit a9f5da3f authored by Christophe Massiot's avatar Christophe Massiot

* Removed the ugly dependancy on glibc in the ipv6 module.

* po/fr.po: French translation courtesy of Jean-Pierre Kuypers.
* Miscellaneous clean-ups.
parent e3c43feb
$Id: NEWS,v 1.48 2003/06/11 18:45:41 gbazin Exp $ $Id: NEWS,v 1.49 2003/06/15 01:23:31 massiot Exp $
Changes between 0.5.3 and 0.6.0: Changes between 0.5.3 and 0.6.0:
--------------------------------- ---------------------------------
...@@ -11,7 +11,7 @@ Input access: ...@@ -11,7 +11,7 @@ Input access:
* fixed large file support on Windows * fixed large file support on Windows
* Video 4 Linux support * Video 4 Linux support
* CD Digital Audio support * CD Digital Audio support
* Fixed an ipv6 link-local multicasting bug. * Fixed an ipv6 link-local multicasting bug affecting all platforms but GNU/Linux
Input demux: Input demux:
* Better detection of AAC and mp3 files * Better detection of AAC and mp3 files
......
...@@ -272,7 +272,7 @@ CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcd ...@@ -272,7 +272,7 @@ CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcd
dnl Check for system libs needed dnl Check for system libs needed
need_libc=false need_libc=false
AC_CHECK_FUNCS(gettimeofday select strerror strtod strtol isatty vasprintf swab sigrelse getpwuid memalign posix_memalign gethostbyname2 atoll getenv putenv setenv) AC_CHECK_FUNCS(gettimeofday select strerror strtod strtol isatty vasprintf swab sigrelse getpwuid memalign posix_memalign gethostbyname2 if_nametoindex atoll getenv putenv setenv)
dnl Check for usual libc functions dnl Check for usual libc functions
AC_CHECK_FUNCS(strdup strndup atof lseek) AC_CHECK_FUNCS(strdup strndup atof lseek)
......
...@@ -391,7 +391,7 @@ create_familiar (void) ...@@ -391,7 +391,7 @@ create_familiar (void)
gtk_widget_show (vbox3); gtk_widget_show (vbox3);
gtk_container_add (GTK_CONTAINER (mediabook), vbox3); gtk_container_add (GTK_CONTAINER (mediabook), vbox3);
network_multicast = gtk_radio_button_new_with_label (network_group, _("UDP/RTP (Adress when Multicast)")); network_multicast = gtk_radio_button_new_with_label (network_group, _("UDP/RTP (Address when Multicast)"));
network_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_multicast)); network_group = gtk_radio_button_group (GTK_RADIO_BUTTON (network_multicast));
gtk_widget_set_name (network_multicast, "network_multicast"); gtk_widget_set_name (network_multicast, "network_multicast");
gtk_widget_ref (network_multicast); gtk_widget_ref (network_multicast);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* ipv4.c: IPv4 network abstraction layer * ipv4.c: IPv4 network abstraction layer
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2001, 2002 VideoLAN
* $Id: ipv4.c,v 1.18 2003/04/21 16:22:43 gbazin Exp $ * $Id: ipv4.c,v 1.19 2003/06/15 01:23:31 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Mathias Kretschmer <mathias@research.att.com> * Mathias Kretschmer <mathias@research.att.com>
...@@ -157,9 +157,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -157,9 +157,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
if( (i_handle = socket( AF_INET, SOCK_DGRAM, 0 )) == -1 ) if( (i_handle = socket( AF_INET, SOCK_DGRAM, 0 )) == -1 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Err( p_this, "cannot create socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot create socket (%s)", strerror(errno) );
#else #else
msg_Err( p_this, "cannot create socket" ); msg_Warn( p_this, "cannot create socket" );
#endif #endif
return( -1 ); return( -1 );
} }
...@@ -170,10 +170,10 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -170,10 +170,10 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
(void *) &i_opt, sizeof( i_opt ) ) == -1 ) (void *) &i_opt, sizeof( i_opt ) ) == -1 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Err( p_this, "cannot configure socket (SO_REUSEADDR: %s)", msg_Warn( p_this, "cannot configure socket (SO_REUSEADDR: %s)",
strerror(errno)); strerror(errno));
#else #else
msg_Err( p_this, "cannot configure socket (SO_REUSEADDR)" ); msg_Warn( p_this, "cannot configure socket (SO_REUSEADDR)" );
#endif #endif
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
...@@ -243,9 +243,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -243,9 +243,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
if( bind( i_handle, (struct sockaddr *)&sock, sizeof( sock ) ) < 0 ) if( bind( i_handle, (struct sockaddr *)&sock, sizeof( sock ) ) < 0 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Err( p_this, "cannot bind socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
#else #else
msg_Err( p_this, "cannot bind socket" ); msg_Warn( p_this, "cannot bind socket" );
#endif #endif
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
...@@ -309,10 +309,10 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -309,10 +309,10 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
(char*)&imr, sizeof(struct ip_mreq) ) == -1 ) (char*)&imr, sizeof(struct ip_mreq) ) == -1 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Warn( p_this, "failed to join IP multicast group (%s)", msg_Err( p_this, "failed to join IP multicast group (%s)",
strerror(errno) ); strerror(errno) );
#else #else
msg_Warn( p_this, "failed to join IP multicast group" ); msg_Err( p_this, "failed to join IP multicast group" );
#endif #endif
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
...@@ -325,7 +325,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -325,7 +325,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
/* Build socket for remote connection */ /* Build socket for remote connection */
if ( BuildAddr( &sock, psz_server_addr, i_server_port ) == -1 ) if ( BuildAddr( &sock, psz_server_addr, i_server_port ) == -1 )
{ {
msg_Err( p_this, "cannot build remote address" ); msg_Warn( p_this, "cannot build remote address" );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
} }
...@@ -335,9 +335,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -335,9 +335,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
sizeof( sock ) ) == (-1) ) sizeof( sock ) ) == (-1) )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Err( p_this, "cannot connect socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot connect socket (%s)", strerror(errno) );
#else #else
msg_Err( p_this, "cannot connect socket" ); msg_Warn( p_this, "cannot connect socket" );
#endif #endif
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
...@@ -354,9 +354,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -354,9 +354,9 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
(void *) &ttl, sizeof( ttl ) ) < 0 ) (void *) &ttl, sizeof( ttl ) ) < 0 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Warn( p_this, "failed to set ttl (%s)", strerror(errno) ); msg_Err( p_this, "failed to set ttl (%s)", strerror(errno) );
#else #else
msg_Warn( p_this, "failed to set ttl" ); msg_Err( p_this, "failed to set ttl" );
#endif #endif
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
...@@ -396,9 +396,9 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -396,9 +396,9 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket )
if( (i_handle = socket( AF_INET, SOCK_STREAM, 0 )) == -1 ) if( (i_handle = socket( AF_INET, SOCK_STREAM, 0 )) == -1 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Err( p_this, "cannot create socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot create socket (%s)", strerror(errno) );
#else #else
msg_Err( p_this, "cannot create socket" ); msg_Warn( p_this, "cannot create socket" );
#endif #endif
return( -1 ); return( -1 );
} }
...@@ -416,9 +416,9 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -416,9 +416,9 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket )
sizeof( sock ) ) == (-1) ) sizeof( sock ) ) == (-1) )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Err( p_this, "cannot connect socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot connect socket (%s)", strerror(errno) );
#else #else
msg_Err( p_this, "cannot connect socket" ); msg_Warn( p_this, "cannot connect socket" );
#endif #endif
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* ipv6.c: IPv6 network abstraction layer * ipv6.c: IPv6 network abstraction layer
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * Copyright (C) 2002 VideoLAN
* $Id: ipv6.c,v 1.12 2003/06/13 12:08:13 gbazin Exp $ * $Id: ipv6.c,v 1.13 2003/06/15 01:23:31 massiot Exp $
* *
* Authors: Alexis Guillard <alexis.guillard@bt.com> * Authors: Alexis Guillard <alexis.guillard@bt.com>
* Christophe Massiot <massiot@via.ecp.fr> * Christophe Massiot <massiot@via.ecp.fr>
...@@ -120,7 +120,7 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket, ...@@ -120,7 +120,7 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket,
} }
if( !_getaddrinfo || !_freeaddrinfo ) if( !_getaddrinfo || !_freeaddrinfo )
{ {
msg_Err( p_this, "no IPv6 stack installed" ); msg_Warn( p_this, "no IPv6 stack installed" );
if( wship6_dll ) FreeLibrary( wship6_dll ); if( wship6_dll ) FreeLibrary( wship6_dll );
free( psz_backup ); free( psz_backup );
return( -1 ); return( -1 );
...@@ -150,11 +150,11 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket, ...@@ -150,11 +150,11 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket,
psz_multicast_interface ); psz_multicast_interface );
/* now convert that interface name to an index */ /* now convert that interface name to an index */
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) #if defined( WIN32 )
p_socket->sin6_scope_id = if_nametoindex(psz_multicast_interface);
#elif defined( WIN32 )
/* FIXME ?? */ /* FIXME ?? */
p_socket->sin6_scope_id = atol(psz_multicast_interface); p_socket->sin6_scope_id = atol(psz_multicast_interface);
#elif defined( HAVE_IF_NAMETOINDEX )
p_socket->sin6_scope_id = if_nametoindex(psz_multicast_interface);
#endif #endif
msg_Dbg( p_this, " = #%i", p_socket->sin6_scope_id ); msg_Dbg( p_this, " = #%i", p_socket->sin6_scope_id );
} }
...@@ -188,7 +188,7 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket, ...@@ -188,7 +188,7 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket,
/* We have a fqdn, try to find its address */ /* We have a fqdn, try to find its address */
if ( (p_hostent = gethostbyname2( psz_address, AF_INET6 )) == NULL ) if ( (p_hostent = gethostbyname2( psz_address, AF_INET6 )) == NULL )
{ {
msg_Err( p_this, "ipv6 error: unknown host %s", psz_address ); msg_Warn( p_this, "ipv6 error: unknown host %s", psz_address );
free( psz_backup ); free( psz_backup );
return( -1 ); return( -1 );
} }
...@@ -210,7 +210,7 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket, ...@@ -210,7 +210,7 @@ static int BuildAddr( vlc_object_t * p_this, struct sockaddr_in6 * p_socket,
_freeaddrinfo( res ); _freeaddrinfo( res );
#else #else
msg_Err( p_this, "ipv6 error: IPv6 address %s is invalid", msg_Warn( p_this, "ipv6 error: IPv6 address %s is invalid",
psz_address ); psz_address );
free( psz_backup ); free( psz_backup );
return( -1 ); return( -1 );
...@@ -253,7 +253,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -253,7 +253,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
* protocol */ * protocol */
if( (i_handle = socket( AF_INET6, SOCK_DGRAM, 0 )) == -1 ) if( (i_handle = socket( AF_INET6, SOCK_DGRAM, 0 )) == -1 )
{ {
msg_Err( p_this, "cannot create socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot create socket (%s)", strerror(errno) );
return( -1 ); return( -1 );
} }
...@@ -262,7 +262,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -262,7 +262,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
if( setsockopt( i_handle, SOL_SOCKET, SO_REUSEADDR, if( setsockopt( i_handle, SOL_SOCKET, SO_REUSEADDR,
(void *) &i_opt, sizeof( i_opt ) ) == -1 ) (void *) &i_opt, sizeof( i_opt ) ) == -1 )
{ {
msg_Err( p_this, "cannot configure socket (SO_REUSEADDR: %s)", msg_Warn( p_this, "cannot configure socket (SO_REUSEADDR: %s)",
strerror(errno) ); strerror(errno) );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
...@@ -313,7 +313,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -313,7 +313,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
/* Bind it */ /* Bind it */
if( bind( i_handle, (struct sockaddr *)&sockany, sizeof( sock ) ) < 0 ) if( bind( i_handle, (struct sockaddr *)&sockany, sizeof( sock ) ) < 0 )
{ {
msg_Err( p_this, "cannot bind socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
} }
...@@ -322,7 +322,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -322,7 +322,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
/* Bind it */ /* Bind it */
if( bind( i_handle, (struct sockaddr *)&sock, sizeof( sock ) ) < 0 ) if( bind( i_handle, (struct sockaddr *)&sock, sizeof( sock ) ) < 0 )
{ {
msg_Err( p_this, "cannot bind socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot bind socket (%s)", strerror(errno) );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
} }
...@@ -340,7 +340,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -340,7 +340,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
} }
/* Join the multicast group if the socket is a multicast address */ /* Join the multicast group if the socket is a multicast address */
#if defined(WIN32) || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) #if defined( WIN32 ) || defined( HAVE_IF_NAMETOINDEX )
if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) ) if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) )
{ {
struct ipv6_mreq imr; struct ipv6_mreq imr;
...@@ -357,11 +357,11 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -357,11 +357,11 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
if( res == -1 ) if( res == -1 )
{ {
msg_Err( p_this, "setsockopt JOIN_GROUP failed" ); msg_Err( p_this, "cannot join multicast group" );
} }
} }
#else #else
msg_Warn( p_this, "setsockopt JOIN_GROUP not supported with glibc < 2.2" ); msg_Warn( p_this, "Multicast IPv6 is not supported on your OS" );
#endif #endif
...@@ -373,7 +373,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -373,7 +373,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
/* Build socket for remote connection */ /* Build socket for remote connection */
if ( BuildAddr( p_this, &sock, psz_server_addr, i_server_port ) == -1 ) if ( BuildAddr( p_this, &sock, psz_server_addr, i_server_port ) == -1 )
{ {
msg_Err( p_this, "cannot build remote address" ); msg_Warn( p_this, "cannot build remote address" );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
} }
...@@ -382,7 +382,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -382,7 +382,7 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
if( connect( i_handle, (struct sockaddr *) &sock, if( connect( i_handle, (struct sockaddr *) &sock,
sizeof( sock ) ) == (-1) ) sizeof( sock ) ) == (-1) )
{ {
msg_Err( p_this, "cannot connect socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot connect socket (%s)", strerror(errno) );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
} }
...@@ -390,34 +390,34 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -390,34 +390,34 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
/* Set the time-to-live */ /* Set the time-to-live */
if( ttl > 1 ) if( ttl > 1 )
{ {
#if defined(WIN32) || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) #if defined( WIN32 ) || defined( HAVE_IF_NAMETOINDEX )
if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) ) if( IN6_IS_ADDR_MULTICAST(&sock.sin6_addr) )
{ {
if( setsockopt( i_handle, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, if( setsockopt( i_handle, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
(void *)&ttl, sizeof( ttl ) ) < 0 ) (void *)&ttl, sizeof( ttl ) ) < 0 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Warn( p_this, "failed to set multicast ttl (%s)", msg_Err( p_this, "failed to set multicast ttl (%s)",
strerror(errno) ); strerror(errno) );
#else #else
msg_Warn( p_this, "failed to set multicast ttl" ); msg_Err( p_this, "failed to set multicast ttl" );
#endif #endif
} }
} }
else else
#endif
{ {
if( setsockopt( i_handle, IPPROTO_IPV6, IPV6_UNICAST_HOPS, if( setsockopt( i_handle, IPPROTO_IPV6, IPV6_UNICAST_HOPS,
(void *)&ttl, sizeof( ttl ) ) < 0 ) (void *)&ttl, sizeof( ttl ) ) < 0 )
{ {
#ifdef HAVE_ERRNO_H #ifdef HAVE_ERRNO_H
msg_Warn( p_this, "failed to set unicast ttl (%s)", msg_Err( p_this, "failed to set unicast ttl (%s)",
strerror(errno) ); strerror(errno) );
#else #else
msg_Warn( p_this, "failed to set unicast ttl" ); msg_Err( p_this, "failed to set unicast ttl" );
#endif #endif
} }
} }
#endif
} }
} }
...@@ -452,7 +452,7 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -452,7 +452,7 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket )
* protocol */ * protocol */
if( (i_handle = socket( AF_INET6, SOCK_STREAM, 0 )) == -1 ) if( (i_handle = socket( AF_INET6, SOCK_STREAM, 0 )) == -1 )
{ {
msg_Err( p_this, "cannot create socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot create socket (%s)", strerror(errno) );
return( -1 ); return( -1 );
} }
...@@ -467,7 +467,7 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket ) ...@@ -467,7 +467,7 @@ static int OpenTCP( vlc_object_t * p_this, network_socket_t * p_socket )
if( connect( i_handle, (struct sockaddr *) &sock, if( connect( i_handle, (struct sockaddr *) &sock,
sizeof( sock ) ) == (-1) ) sizeof( sock ) ) == (-1) )
{ {
msg_Err( p_this, "cannot connect socket (%s)", strerror(errno) ); msg_Warn( p_this, "cannot connect socket (%s)", strerror(errno) );
close( i_handle ); close( i_handle );
return( -1 ); return( -1 );
} }
......
This diff is collapsed.
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