From 7a689266b2bd7c332a36a95c6125102b4e1f1fa3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <rem@videolan.org>
Date: Fri, 24 Nov 2006 20:33:26 +0000
Subject: [PATCH] Darwin compile fix

---
 src/network/udp.c | 51 +++++++++++++++++++++++------------------------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/src/network/udp.c b/src/network/udp.c
index abdc011319b0..c63520a60cb1 100644
--- a/src/network/udp.c
+++ b/src/network/udp.c
@@ -316,21 +316,7 @@ net_SourceSubscribe (vlc_object_t *obj, int fd,
                      const struct sockaddr *src, socklen_t srclen,
                      const struct sockaddr *grp, socklen_t grplen)
 {
-    /* Agnostic ASM/SSM multicast join */
-#ifdef MCAST_JOIN_SOURCE_GROUP
-    union
-    {
-        struct group_req gr;
-        struct group_source_req gsr;
-    } opt;
-    socklen_t optlen;
     int level, iid = 0;
-    vlc_bool_t ssm = VLC_TRUE;
-
-    if (src == NULL)
-        ssm = VLC_FALSE;
-
-    memset (&opt, 0, sizeof (opt));
 
     char *iface = var_CreateGetString (obj, "miface");
     if (iface != NULL)
@@ -350,23 +336,25 @@ net_SourceSubscribe (vlc_object_t *obj, int fd,
 
     switch (grp->sa_family)
     {
+#ifdef AF_INET6
         case AF_INET6:
             level = SOL_IPV6;
-            if (ssm
+            if ((src != NULL)
              && memcmp (&((const struct sockaddr_in6 *)src)->sin6_addr,
                         &in6addr_any, sizeof (in6addr_any)) == 0)
-                ssm = VLC_FALSE;
+                src = NULL;
 
             if (((const struct sockaddr_in6 *)src)->sin6_scope_id)
                 iid = ((const struct sockaddr_in6 *)src)->sin6_scope_id;
             break;
+#endif
 
         case AF_INET:
             level = SOL_IP;
-            if (ssm
+            if ((src != NULL)
              && ((const struct sockaddr_in *)src)->sin_addr.s_addr
                   == INADDR_ANY)
-                ssm = VLC_FALSE;
+                src = NULL;
             break;
 
         default:
@@ -374,7 +362,18 @@ net_SourceSubscribe (vlc_object_t *obj, int fd,
             return -1;
     }
 
-    if (ssm)
+    /* Agnostic ASM/SSM multicast join */
+#ifdef MCAST_JOIN_SOURCE_GROUP
+    union
+    {
+        struct group_req gr;
+        struct group_source_req gsr;
+    } opt;
+    socklen_t optlen;
+
+    memset (&opt, 0, sizeof (opt));
+
+    if (src != NULL)
     {
         if ((grplen > sizeof (opt.gsr.gsr_group))
          || (srclen > sizeof (opt.gsr.gsr_source)))
@@ -395,23 +394,23 @@ net_SourceSubscribe (vlc_object_t *obj, int fd,
         optlen = sizeof (opt.gr);
     }
 
-    msg_Dbg (obj, "Multicast %sgroup join request", ssm ? "source " : "");
+    msg_Dbg (obj, "Multicast %sgroup join request", src ? "source " : "");
 
-    if (setsockopt (fd, level,
-                    ssm ? MCAST_JOIN_SOURCE_GROUP : MCAST_JOIN_GROUP,
+    if (setsockopt (fd, level, 
+                    src ? MCAST_JOIN_SOURCE_GROUP : MCAST_JOIN_GROUP,
                     (void *)&opt, optlen) == 0)
         return 0;
 #endif
 
     /* Fallback to IPv-specific APIs */
-    if (ssm && (src->sa_family != grp->sa_family))
+    if ((src != NULL) && (src->sa_family != grp->sa_family))
         return -1;
 
     switch (grp->sa_family)
     {
         case AF_INET:
             if ((grplen < sizeof (struct sockaddr_in))
-             || (ssm && (srclen < sizeof (struct sockaddr_in))))
+             || ((src != NULL) && (srclen < sizeof (struct sockaddr_in))))
                 return -1;
 
             if (net_IPv4Join (obj, fd, (const struct sockaddr_in *)src,
@@ -422,7 +421,7 @@ net_SourceSubscribe (vlc_object_t *obj, int fd,
 #ifdef AF_INET6
         case AF_INET6:
             if ((grplen < sizeof (struct sockaddr_in6))
-             || (ssm && (srclen < sizeof (struct sockaddr_in6))))
+             || ((src != NULL) && (srclen < sizeof (struct sockaddr_in6))))
                 return -1;
 
             /* We don't provide IPv6-specific SSM at the moment.
@@ -437,7 +436,7 @@ net_SourceSubscribe (vlc_object_t *obj, int fd,
     msg_Err (obj, "Multicast group join error (%s)",
              net_strerror (net_errno));
 
-    if (ssm)
+    if (src != NULL)
     {
         msg_Warn (obj, "Trying ASM instead of SSM...");
         return net_Subscribe (obj, fd, grp, grplen);
-- 
GitLab