]> git.sesse.net Git - vlc/commitdiff
- Fix segfault when doing RTSP DESCRIBE (trunk-only bug from [11811])
authorRémi Denis-Courmont <rem@videolan.org>
Wed, 27 Jul 2005 19:05:21 +0000 (19:05 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Wed, 27 Jul 2005 19:05:21 +0000 (19:05 +0000)
- cleanup net_AddressIsMulticast

include/network.h
modules/misc/rtsp.c

index 4bdbea16f00837fe358ad67d33cf098959ce6c65..ce65fb434e6a174f334d25ec644a8bb21125d1fa 100644 (file)
@@ -469,41 +469,32 @@ static inline vlc_bool_t net_AddressIsMulticast( vlc_object_t *p_object, char *p
     vlc_bool_t b_multicast = VLC_FALSE;
     int i;
 
-    if( psz_addr == NULL )
-    {
-        msg_Err( p_object, "*FIXME* Unexpected NULL URI for net_AddressIsMulticast" );
-        msg_Err( p_object, "This should not happen. VLC needs fixing." );
-        return VLC_FALSE;
-    }
-    
     memset( &hints, 0, sizeof( hints ) );
     hints.ai_socktype = SOCK_DGRAM; /* UDP */
     hints.ai_flags = AI_NUMERICHOST;
 
     i = vlc_getaddrinfo( p_object, psz_addr, 0,
                          &hints, &res );
-    /*if( i == 0 )
-        i = vlc_getnameinfo( res->ai_addr, res->ai_addrlen, psz_buf,
-                             sizeof( psz_buf ), NULL, NI_NUMERICHOST );*/
     if( i )
     {
         msg_Err( p_object, "Invalid node for net_AddressIsMulticast: %s : %s",
                  psz_addr, vlc_gai_strerror( i ) );
-        return b_multicast;
+        return VLC_FALSE;
     }
     
     if( res->ai_family == AF_INET )
     {
 #if !defined( SYS_BEOS )
         struct sockaddr_in *v4 = (struct sockaddr_in *) res->ai_addr;
-        b_multicast = ( ntohl( v4->sin_addr.s_addr ) >= 0xe0000000 && ntohl( v4->sin_addr.s_addr ) <= 0xefffffff );
+        b_multicast = ( ntohl( v4->sin_addr.s_addr ) >= 0xe0000000 )
+                   && ( ntohl( v4->sin_addr.s_addr ) <= 0xefffffff );
 #endif
     }
     else if( res->ai_family == AF_INET6 )
     {
-#if defined( WIN32 ) || defined( HAVE_IF_NAMETOINDEX )
-        struct sockaddr_in6 *v6 = (struct sockaddr_in6 *) res->ai_addr;
-        b_multicast = IN6_IS_ADDR_MULTICAST( &v6->sin6_addr);
+#if defined( WIN32 ) || defined( HAVE_GETADDRINFO )
+        struct sockaddr_in6 *v6 = (struct sockaddr_in6 *)res->ai_addr;
+        b_multicast = IN6_IS_ADDR_MULTICAST( &v6->sin6_addr );
 #endif
     }
     
index ba9998693379ff6790e8e7ff22adabd507465c2c..5eebec6851331082b88d4f6fe1c96e1c8707e312 100644 (file)
@@ -1018,10 +1018,11 @@ static char *SDPGenerate( vod_media_t *p_media, char *psz_destination )
 
     p += sprintf( p, "c=IN IP4 %s", psz_destination ?  psz_destination : "0.0.0.0" );
 
-    if( net_AddressIsMulticast( p_media, psz_destination ?  psz_destination : "0.0.0.0" ) )
+    if( ( psz_destination != NULL )
+     && net_AddressIsMulticast( p_media->p_vod, psz_destination ) )
     {
         /* Add the ttl if it is a multicast address */
-       p += sprintf( p, "/%d\r\n", p_media->i_ttl );
+        p += sprintf( p, "/%d\r\n", p_media->i_ttl );
     }
     else
     {