diff options
Diffstat (limited to 'multimedia/mythtv/files/patch-external_FFmpeg_libavformat_rtsp.c')
-rw-r--r-- | multimedia/mythtv/files/patch-external_FFmpeg_libavformat_rtsp.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/multimedia/mythtv/files/patch-external_FFmpeg_libavformat_rtsp.c b/multimedia/mythtv/files/patch-external_FFmpeg_libavformat_rtsp.c new file mode 100644 index 000000000000..23139980105d --- /dev/null +++ b/multimedia/mythtv/files/patch-external_FFmpeg_libavformat_rtsp.c @@ -0,0 +1,48 @@ +Fix RTP stream; FreeBSD's socket calls require the sockaddr struct length +to agree with the address family. +PR: 214852 + +--- external/FFmpeg/libavformat/rtsp.c.orig 2018-02-01 11:15:37 UTC ++++ external/FFmpeg/libavformat/rtsp.c +@@ -1614,7 +1614,12 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, con + } + if (ttl > 0) + snprintf(optbuf, sizeof(optbuf), "?ttl=%d", ttl); +- getnameinfo((struct sockaddr*) &addr, sizeof(addr), ++ getnameinfo((struct sockaddr*) &addr, ++#if HAVE_STRUCT_SOCKADDR_SA_LEN ++ ((struct sockaddr*) &addr)->sa_len, ++#else ++ sizeof(addr), ++#endif + namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST); + ff_url_join(url, sizeof(url), "rtp", NULL, namebuf, + port, "%s", optbuf); +@@ -1830,8 +1835,13 @@ redirect: + goto fail; + } + if (!getpeername(tcp_fd, (struct sockaddr*) &peer, &peer_len)) { +- getnameinfo((struct sockaddr*) &peer, peer_len, host, sizeof(host), +- NULL, 0, NI_NUMERICHOST); ++ getnameinfo((struct sockaddr*) &peer, ++#if HAVE_STRUCT_SOCKADDR_SA_LEN ++ ((struct sockaddr*) &peer)->sa_len, ++#else ++ peer_len, ++#endif ++ host, sizeof(host), NULL, 0, NI_NUMERICHOST); + } + + /* request options supported by the server; this also detects server +@@ -2310,7 +2320,11 @@ static int sdp_read_header(AVFormatContext *s) + AVDictionary *opts = map_to_opts(rt); + + err = getnameinfo((struct sockaddr*) &rtsp_st->sdp_ip, ++#if HAVE_STRUCT_SOCKADDR_SA_LEN ++ ((struct sockaddr*) &rtsp_st->sdp_ip)->sa_len, ++#else + sizeof(rtsp_st->sdp_ip), ++#endif + namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST); + if (err) { + av_log(s, AV_LOG_ERROR, "getnameinfo: %s\n", gai_strerror(err)); |