From 2d3048e20af7d1b3def15cef56b96cc2a458129d Mon Sep 17 00:00:00 2001 From: zhupeipei <> Date: Mon, 17 Feb 2025 13:37:12 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E4=BF=AE=E5=A4=8Dipv6=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=88=9B=E5=BB=BA=E8=BF=9E=E6=8E=A5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thirdparty/FFmpeg-ff4.0/HPKBUILD | 1 + thirdparty/FFmpeg-ff4.0/ipv6.patch | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 thirdparty/FFmpeg-ff4.0/ipv6.patch diff --git a/thirdparty/FFmpeg-ff4.0/HPKBUILD b/thirdparty/FFmpeg-ff4.0/HPKBUILD index 1270eae4..ffed831f 100644 --- a/thirdparty/FFmpeg-ff4.0/HPKBUILD +++ b/thirdparty/FFmpeg-ff4.0/HPKBUILD @@ -28,6 +28,7 @@ prepare() { then cd $builddir # fix bug + patch -p1 < `pwd`/../ipv6.patch patch -p1 < `pwd`/../oh_ffmpeg-bug-fixed.patch patch -p1 < `pwd`/../oh_ffmpeg_hls_optimization.patch patchflag=false diff --git a/thirdparty/FFmpeg-ff4.0/ipv6.patch b/thirdparty/FFmpeg-ff4.0/ipv6.patch new file mode 100644 index 00000000..bf99d74f --- /dev/null +++ b/thirdparty/FFmpeg-ff4.0/ipv6.patch @@ -0,0 +1,27 @@ +--- FFmpeg-ff4.0--ijk0.8.8--20210426--001/libavutil/dns_cache.c 2021-04-23 14:35:31 ++++ FFmpeg-ff4.0--ijk0.8.8--20210426--001-fix/libavutil/dns_cache.c 2025-02-17 11:27:04 +@@ -95,14 +95,22 @@ + + memcpy(new_entry->res, cur_ai, sizeof(struct addrinfo)); + +- new_entry->res->ai_addr = (struct sockaddr *) av_mallocz(sizeof(struct sockaddr)); ++ if (cur_ai->ai_addr->sa_family == AF_INET) { ++ new_entry->res->ai_addr = (struct sockaddr *) av_mallocz(sizeof(struct sockaddr)); ++ } else { ++ new_entry->res->ai_addr = (struct sockaddr_in6 *) av_mallocz(sizeof(struct sockaddr_in6)); ++ } + if (!new_entry->res->ai_addr) { + av_freep(&new_entry->res); + av_freep(&new_entry); + goto fail; + } + +- memcpy(new_entry->res->ai_addr, cur_ai->ai_addr, sizeof(struct sockaddr)); ++ if (cur_ai->ai_addr->sa_family == AF_INET) { ++ memcpy(new_entry->res->ai_addr, cur_ai->ai_addr, sizeof(struct sockaddr)); ++ } else { ++ memcpy(new_entry->res->ai_addr, cur_ai->ai_addr, sizeof(struct sockaddr_in6)); ++ } + new_entry->res->ai_canonname = NULL; + new_entry->res->ai_next = NULL; + new_entry->ref_count = 0; -- Gitee