]> git.sesse.net Git - vlc/commitdiff
Fix link-scoped IPv6 addresses
authorRémi Denis-Courmont <rem@videolan.org>
Sun, 11 Feb 2007 09:32:56 +0000 (09:32 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sun, 11 Feb 2007 09:32:56 +0000 (09:32 +0000)
src/stream_output/sdp.c

index d49a92afb0519fb6d394830a125a566cb84ab889..4da57100316efc8326bc56841cf3f3d37e0ef2c5 100644 (file)
@@ -38,36 +38,37 @@ char *AddressToSDP (const struct sockaddr *addr, socklen_t addrlen, char *buf)
                  + sizeof (addr->sa_family))
         return NULL;
 
-    const char *ttl = NULL;
     strcpy (buf, "IN IP* ");
 
+    if (vlc_getnameinfo (addr, addrlen, buf + 7, MAXSDPADDRESS - 7, NULL,
+                         NI_NUMERICHOST))
+        return NULL;
+
     switch (addr->sa_family)
     {
         case AF_INET:
         {
             if (net_SockAddrIsMulticast (addr, addrlen))
-                ttl = "/255"; // obsolete in RFC4566, dummy value
+                strcat (buf, "/255"); // obsolete in RFC4566, dummy value
             buf[5] = '4';
             break;
         }
 
 #ifdef AF_INET6
         case AF_INET6:
+        {
+            char *ptr = strchr (buf, '%');
+            if (ptr != NULL)
+                *ptr = '\0'; // remove scope ID
             buf[5] = '6';
             break;
+        }
 #endif
 
         default:
             return NULL;
     }
 
-    if (vlc_getnameinfo (addr, addrlen, buf + 7, MAXSDPADDRESS - 7, NULL,
-                         NI_NUMERICHOST))
-        return NULL;
-
-    if (ttl != NULL)
-        strcat (buf, ttl);
-
     return buf;
 }