From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 290D94E3A6 for ; Mon, 9 Jun 2025 11:18:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 13A0268CBB5; Mon, 9 Jun 2025 14:18:46 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Mon, 9 Jun 2025 19:18:33 +0800 MIME-Version: 1.0 Message-ID: List-Id: FFmpeg development discussions and patches List-Post: From: Jack Lau via ffmpeg-devel Precedence: list Cc: Jack Lau X-Mailman-Version: 2.1.29 X-BeenThere: ffmpeg-devel@ffmpeg.org List-Subscribe: , List-Unsubscribe: , List-Archive: Reply-To: FFmpeg development discussions and patches List-Help: Subject: [FFmpeg-devel] [PATCH 2/3] avformat/whip: add whip_flags ignore_ipv6 to skip IPv6 candidates Content-Type: multipart/mixed; boundary="===============2695905032223920353==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --===============2695905032223920353== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-49.mail.qq.com (out162-62-57-49.mail.qq.com [162.62.57.49]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 3107B68CABE for ; Mon, 9 Jun 2025 14:18:38 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1749467916; bh=Nu32RiYMHjJ8lvV0CSgVDNvq3EFH9KoLa98N8apC4b8=; h=From:To:Cc:Subject:Date; b=BL39fpBNKk4irAoKTRkztCrjobkPJu8vMpuz/5ihfGfQku34rCuOdnWjTIV7SOWfK TXDXmbeC/hIIdt1FzQqR+8v/H5nPXwmH0JUyCWIdAC1xnkTOf+63xXiUT3Ked11hbD 3NC4XMH9KZYzRzCrE/UndqK57jw/yOmMXD+BBnpc= Received: from localhost.localdomain ([111.33.195.123]) by newxmesmtplogicsvrszc13-0.qq.com (NewEsmtp) with SMTP id 4A2A00E1; Mon, 09 Jun 2025 19:18:34 +0800 X-QQ-mid: xmsmtpt1749467914tgvsvngw4 Message-ID: X-QQ-XMAILINFO: Nx5J06Esz7r7ddhhsX0nDu61PLnT8ekicWnHtLZ9RgGYvSWvIoB7WNtY85XbZS QlbC/GFHJys127MiRt6NypEXQ1kibOV2iPZC5r8ZRq0JvCuwSJPQBwa0S7tT/YKO+5wJ8XH6mkgX JtSGdn+q/Efk6Pdom6IoeFg7NJZdd+YFRNPeyDvH/BWxMo2kKOu7JWlPla0eMVBcY46IzeShCYPS UOsRNhJPDQTM49XjiD5kNDvIfSlcooQfNZ/omYkyTLnLLjD8H1Vc2X36ZQpwHgWRRWT3jkreVvqC Lx4YOBGQexOnPXE0QbRuUz/QT5qLvcZWsBg44zynfSlZun+Ey5WcBS56nkhZ0s3WfoC09xu6tNRP RUxMws290+ldCn8DNukpvtdOmxzNgZQX5/et+uDgvccRCdjkKVS4KjXd19VoRMZ6g/WExwy3Zl7u XGyNqzAVN9QiUWG4sRdK7G9f7wptnLZVBLcCx/gap5AIHzoYZGXx0YWLt6k/vG2kMfpk/I8xB6UT G/Zb28E9ywWOmzPgZAYmUtVXMPgn9wVACRN9fnmWhCmzvLmtWPyeZLt+2lBCHMjtInSNVq3YNr56 yuu+3bANqE32QJTAYfFBag3TJgYwW5K5wPAWqAcqBr/amJmlNgeGmpenPS8SxlvQfZf7WIpXyVJz 0GrpES35W88j0tVS0xyJkd2flZvWt9/FSa/VQWxtofVbp1RM5En7+fxU7fvVptHfHSMcu2/r5Gmb ntydZ0tuzD8Y6pv7ZgdjfFNg5aRFDmgDXsV2IIIX0uIovekflZH8nIRmVqJHZ3oV/UBqISaEVR3o jVyW4Y7zw8hDHu1GHQpqgEFHBwaakdTnlN9lHweWSUESu6kamJDkXCjN6Up/IAILA5HzGfsIcELt jr7eqOOxrVsonp/BFgN+xaYWOK8jwFLIA0K+1voA19h4Ij4v/ade+VotzUvZZsX4dQXlj71OZQ8q QzFNyuqjhznz+vB8+MlAxB+40oYRywifXvuzAD2RXD8nzFggnyVp2UkLL6UROu X-QQ-XMRINFO: M/715EihBoGSf6IYSX1iLFg= From: Jack Lau To: ffmpeg-devel@ffmpeg.org Cc: Jack Lau Subject: [PATCH 2/3] avformat/whip: add whip_flags ignore_ipv6 to skip IPv6 candidates Date: Mon, 9 Jun 2025 19:18:33 +0800 X-OQ-MSGID: <20250609111833.21169-1-jacklau1222@qq.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Unsent: 1 Content-Transfer-Encoding: 8bit mark this ignore_ipv6 flag could ignore any ipv6 ICE candidate, preventing “No route to host” errors on devices without IPv6 connectivity. Signed-off-by: Jack Lau --- libavformat/whip.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libavformat/whip.c b/libavformat/whip.c index a6827d3478..ed007255ce 100644 --- a/libavformat/whip.c +++ b/libavformat/whip.c @@ -193,9 +193,14 @@ enum WHIPState { WHIP_STATE_FAILED, }; +typedef enum WHIPFlags { + WHIP_FLAG_IGNORE_IPV6 = (1 << 0) // Ignore ipv6 candidate +} WHIPFlags; + typedef struct WHIPContext { AVClass *av_class; + uint32_t flags; // enum WHIPFlags /* The state of the RTC connection. */ enum WHIPState state; /* The callback return value for DTLS. */ @@ -871,6 +876,7 @@ static int parse_answer(AVFormatContext *s) if (ptr && av_stristr(ptr, "host")) { char protocol[17], host[129]; int priority, port; + struct in6_addr addr6; ret = sscanf(ptr, "%16s %d %128s %d typ host", protocol, &priority, host, &port); if (ret != 4) { av_log(whip, AV_LOG_ERROR, "WHIP: Failed %d to parse line %d %s from %s\n", @@ -879,6 +885,11 @@ static int parse_answer(AVFormatContext *s) goto end; } + if (whip->flags & WHIP_FLAG_IGNORE_IPV6 && inet_pton(AF_INET6, host, &addr6) == 1) { + av_log(whip, AV_LOG_DEBUG, "WHIP: Ignore ipv6 %s, line %d %s \n", host, i, line); + continue; + } + if (av_strcasecmp(protocol, "udp")) { av_log(whip, AV_LOG_ERROR, "WHIP: Protocol %s is not supported by RTC, choose udp, line %d %s of %s\n", protocol, i, line, whip->sdp_answer); @@ -1892,6 +1903,8 @@ static const AVOption options[] = { { "authorization", "The optional Bearer token for WHIP Authorization", OFFSET(authorization), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, ENC }, { "cert_file", "The optional certificate file path for DTLS", OFFSET(cert_file), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, ENC }, { "key_file", "The optional private key file path for DTLS", OFFSET(key_file), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, ENC }, + { "whip_flags", "set flags affecting WHIP connection behavior", OFFSET(flags), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, 0, UINT_MAX, ENC, .unit = "flags" }, + { "ignore_ipv6", "ignore any IPv6 ICE candidate", 0, AV_OPT_TYPE_CONST, { .i64 = WHIP_FLAG_IGNORE_IPV6 }, 0, UINT_MAX, ENC, .unit = "flags" }, { NULL }, }; -- 2.49.0 --===============2695905032223920353== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --===============2695905032223920353==--