On 11/24/16 07:47 PM, Kevin Lo wrote:
Since the Linux implementation of sockaddr doesn't have sa_len as a member,
but the FreeBSD version does, introduce a get_sa_len() function that
determines the size based on the address family.

Signed-off-by: Kevin Lo <ke...@kevlo.org>
---

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index c6292c5..4c543ed 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -202,6 +202,19 @@ static int get_sockaddr(AVFormatContext *s,
      return 0;
  }

+static socklen_t
+get_sa_len(struct sockaddr *addr)
+{
+    switch (addr->sa_family) {
+    case AF_INET:
+       return (sizeof(struct sockaddr_in));
+    case AF_INET6:
+       return (sizeof(struct sockaddr_in6));
+    default:
+       return (sizeof(struct sockaddr));
+    }
+}
+
[...]

Fails here (OS/2),
...
CC      libavformat/rtspdec.o
K:/usr/local/src/ffmpeg/libavformat/rtsp.c: In function 'get_sa_len':
K:/usr/local/src/ffmpeg/libavformat/rtsp.c:212:17: error: invalid application of
 'sizeof' to incomplete type 'struct sockaddr_in6'
  return (sizeof(struct sockaddr_in6));
                 ^
make: *** [libavformat/rtsp.o] Error 1
...
Perhaps use
#if HAVE_STRUCT_SOCKADDR_IN6
    case AF_INET6:
        return (sizeof(struct sockaddr_in6));
#endif
or such.

Dave
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to