[FFmpeg-cvslog] r25388 - in trunk/libavformat: network.h udp.c

mstorsjo subversion
Thu Oct 7 09:58:56 CEST 2010


Author: mstorsjo
Date: Thu Oct  7 09:58:56 2010
New Revision: 25388

Log:
Convert ff_is_multicast_address to take a struct sockaddr parameter

Not all users of this function will have a full struct sockaddr_storage
available, and casting other sockaddrs to sockaddr_storage is wrong,
while any sockaddr can be cast to a base sockaddr.

Modified:
   trunk/libavformat/network.h
   trunk/libavformat/udp.c

Modified: trunk/libavformat/network.h
==============================================================================
--- trunk/libavformat/network.h	Thu Oct  7 09:54:52 2010	(r25387)
+++ trunk/libavformat/network.h	Thu Oct  7 09:58:56 2010	(r25388)
@@ -162,13 +162,13 @@ const char *ff_gai_strerror(int ecode);
 #define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)
 #endif
 
-static inline int ff_is_multicast_address(struct sockaddr_storage *addr)
+static inline int ff_is_multicast_address(struct sockaddr *addr)
 {
-    if (addr->ss_family == AF_INET) {
+    if (addr->sa_family == AF_INET) {
         return IN_MULTICAST(ntohl(((struct sockaddr_in *)addr)->sin_addr.s_addr));
     }
 #if HAVE_STRUCT_SOCKADDR_IN6
-    if (addr->ss_family == AF_INET6) {
+    if (addr->sa_family == AF_INET6) {
         return IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6 *)addr)->sin6_addr);
     }
 #endif

Modified: trunk/libavformat/udp.c
==============================================================================
--- trunk/libavformat/udp.c	Thu Oct  7 09:54:52 2010	(r25387)
+++ trunk/libavformat/udp.c	Thu Oct  7 09:58:56 2010	(r25388)
@@ -254,7 +254,7 @@ int udp_set_remote_url(URLContext *h, co
     if (s->dest_addr_len < 0) {
         return AVERROR(EIO);
     }
-    s->is_multicast = ff_is_multicast_address(&s->dest_addr);
+    s->is_multicast = ff_is_multicast_address((struct sockaddr*) &s->dest_addr);
 
     return 0;
 }



More information about the ffmpeg-cvslog mailing list