X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fnetwork%2Fudp.c;h=d0938b9a9cc070118f26fdd3024299644177174d;hb=4e21e41ac9381e7d24f3a0ace8870ae0532d2cd7;hp=05fdf3c9f48c40f7fb27ff235b13adaee8798b05;hpb=8e6fac327d945cd626a8a6bed9fb73fc010caffb;p=vlc diff --git a/src/network/udp.c b/src/network/udp.c index 05fdf3c9f4..d0938b9a9c 100644 --- a/src/network/udp.c +++ b/src/network/udp.c @@ -27,7 +27,11 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include #include @@ -53,6 +57,13 @@ # endif #endif +#ifdef HAVE_LINUX_DCCP_H +# include +# ifndef SOCK_DCCP /* provisional API */ +# define SOCK_DCCP 6 +# endif +#endif + #ifndef SOL_IP # define SOL_IP IPPROTO_IP #endif @@ -75,13 +86,6 @@ # define IPPROTO_UDPLITE 136 /* IANA */ #endif -#ifdef HAVE_LINUX_DCCP_H -# include -# ifndef SOCK_DCCP /* provisional API */ -# define SOCK_DCCP 6 -# endif -#endif - #if defined (HAVE_NETINET_UDPLITE_H) # include #elif defined (__linux__) @@ -124,7 +128,7 @@ static int net_ListenSingle (vlc_object_t *obj, const char *host, int port, protocol ?: ptr->ai_protocol); if (fd == -1) { - msg_Dbg (obj, "socket error: %s", net_strerror (net_errno)); + msg_Dbg (obj, "socket error: %m"); continue; } @@ -157,7 +161,7 @@ static int net_ListenSingle (vlc_object_t *obj, const char *host, int port, #endif if (bind (fd, ptr->ai_addr, ptr->ai_addrlen)) { - msg_Err (obj, "socket bind error (%s)", net_strerror (net_errno)); + msg_Err (obj, "socket bind error (%m)"); net_Close (fd); continue; } @@ -204,7 +208,8 @@ static int net_SetMcastHopLimit( vlc_object_t *p_this, #endif default: - msg_Warn( p_this, "%s", strerror( EAFNOSUPPORT ) ); + errno = EAFNOSUPPORT; + msg_Warn( p_this, "%m" ); return VLC_EGENERIC; } @@ -274,7 +279,7 @@ static int net_SetMcastOut (vlc_object_t *p_this, int fd, int family, if (net_SetMcastOutIface (fd, family, scope) == 0) return 0; - msg_Err (p_this, "%s: %s", iface, net_strerror (net_errno)); + msg_Err (p_this, "%s: %m", iface); } if (addr != NULL) @@ -292,7 +297,7 @@ static int net_SetMcastOut (vlc_object_t *p_this, int fd, int family, if (net_SetMcastOutIPv4 (fd, ipv4) == 0) return 0; - msg_Err (p_this, "%s: %s", addr, net_strerror (net_errno)); + msg_Err (p_this, "%s: %m", addr); } } @@ -321,17 +326,15 @@ net_IPv4Join (vlc_object_t *obj, int fd, socklen_t optlen; /* Multicast interface IPv4 address */ - char *iface = var_CreateGetString (obj, "miface-addr"); - if (iface != NULL) + char *iface = var_CreateGetNonEmptyString (obj, "miface-addr"); + if ((iface != NULL) + && (inet_pton (AF_INET, iface, &id) <= 0)) { - if ((*iface) - && (inet_pton (AF_INET, iface, &id) <= 0)) - { - msg_Err (obj, "invalid multicast interface address %s", iface); - free (iface); - goto error; - } + msg_Err (obj, "invalid multicast interface address %s", iface); + free (iface); + goto error; } + free (iface); memset (&opt, 0, sizeof (opt)); if (src != NULL) @@ -364,8 +367,7 @@ net_IPv4Join (vlc_object_t *obj, int fd, error: #endif - msg_Err (obj, "cannot join IPv4 multicast group (%s)", - net_strerror (net_errno)); + msg_Err (obj, "cannot join IPv4 multicast group (%m)"); return -1; } @@ -381,14 +383,13 @@ net_IPv6Join (vlc_object_t *obj, int fd, const struct sockaddr_in6 *src) msg_Dbg (obj, "IPV6_JOIN_GROUP multicast request"); - if (!setsockopt (fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &gr6, sizeof (gr6))) + if (!setsockopt (fd, SOL_IPV6, IPV6_JOIN_GROUP, &gr6, sizeof (gr6))) return 0; #else errno = ENOSYS; #endif - msg_Err (obj, "cannot join IPv6 any-source multicast group (%s)", - net_strerror (net_errno)); + msg_Err (obj, "cannot join IPv6 any-source multicast group (%m)"); return -1; } @@ -428,18 +429,15 @@ net_SourceSubscribe (vlc_object_t *obj, int fd, { int level, iid = 0; - char *iface = var_CreateGetString (obj, "miface"); + char *iface = var_CreateGetNonEmptyString (obj, "miface"); if (iface != NULL) { - if (*iface) + iid = if_nametoindex (iface); + if (iid == 0) { - iid = if_nametoindex (iface); - if (iid == 0) - { - msg_Err (obj, "invalid multicast interface: %s", iface); - free (iface); - return -1; - } + msg_Err (obj, "invalid multicast interface: %s", iface); + free (iface); + return -1; } free (iface); } @@ -554,8 +552,7 @@ net_SourceSubscribe (vlc_object_t *obj, int fd, #endif } - msg_Err (obj, "Multicast group join error (%s)", - net_strerror (net_errno)); + msg_Err (obj, "Multicast group join error (%m)"); if (src != NULL) { @@ -619,10 +616,7 @@ int __net_ConnectDgram( vlc_object_t *p_this, const char *psz_host, int i_port, { struct addrinfo hints, *res, *ptr; int i_val, i_handle = -1; - vlc_bool_t b_unreach = VLC_FALSE; - - if( i_port == 0 ) - i_port = 1234; /* historical VLC thing */ + bool b_unreach = false; if( i_hlim < 1 ) i_hlim = var_CreateGetInteger( p_this, "ttl" ); @@ -630,12 +624,12 @@ int __net_ConnectDgram( vlc_object_t *p_this, const char *psz_host, int i_port, memset( &hints, 0, sizeof( hints ) ); hints.ai_socktype = SOCK_DGRAM; - msg_Dbg( p_this, "net: connecting to %s port %d", psz_host, i_port ); + msg_Dbg( p_this, "net: connecting to [%s]:%d", psz_host, i_port ); i_val = vlc_getaddrinfo( p_this, psz_host, i_port, &hints, &res ); if( i_val ) { - msg_Err( p_this, "cannot resolve %s port %d : %s", psz_host, i_port, + msg_Err( p_this, "cannot resolve [%s]:%d : %s", psz_host, i_port, vlc_gai_strerror( i_val ) ); return -1; } @@ -661,19 +655,17 @@ int __net_ConnectDgram( vlc_object_t *p_this, const char *psz_host, int i_port, if( i_hlim > 0 ) net_SetMcastHopLimit( p_this, fd, ptr->ai_family, i_hlim ); - str = var_CreateGetString (p_this, "miface"); + str = var_CreateGetNonEmptyString (p_this, "miface"); if (str != NULL) { - if (*str) - net_SetMcastOut (p_this, fd, ptr->ai_family, str, NULL); + net_SetMcastOut (p_this, fd, ptr->ai_family, str, NULL); free (str); } - str = var_CreateGetString (p_this, "miface-addr"); + str = var_CreateGetNonEmptyString (p_this, "miface-addr"); if (str != NULL) { - if (*str) - net_SetMcastOut (p_this, fd, ptr->ai_family, NULL, str); + net_SetMcastOut (p_this, fd, ptr->ai_family, NULL, str); free (str); } @@ -691,11 +683,10 @@ int __net_ConnectDgram( vlc_object_t *p_this, const char *psz_host, int i_port, #else if( errno == ENETUNREACH ) #endif - b_unreach = VLC_TRUE; + b_unreach = true; else { - msg_Warn( p_this, "%s port %d : %s", psz_host, i_port, - strerror( errno ) ); + msg_Warn( p_this, "%s port %d : %m", psz_host, i_port); net_Close( fd ); continue; } @@ -810,8 +801,8 @@ int __net_OpenDgram( vlc_object_t *obj, const char *psz_bind, int i_bind, ptr->ai_addr, ptr->ai_addrlen) : connect (fd, ptr2->ai_addr, ptr2->ai_addrlen)) { - msg_Err (obj, "cannot connect to %s port %d: %s", - psz_server, i_server, net_strerror (net_errno)); + msg_Err (obj, "cannot connect to %s port %d: %m", + psz_server, i_server); continue; } val = fd; @@ -888,6 +879,10 @@ int net_SetCSCov (int fd, int sendcov, int recvcov) return VLC_SUCCESS; #endif } +#if !defined( UDPLITE_RECV_CSCOV ) && !defined( DCCP_SOCKOPT_SEND_CSCOV ) + VLC_UNUSED(sendcov); + VLC_UNUSED(recvcov); +#endif return VLC_EGENERIC; }