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 5AD9C4FBAB for ; Sat, 28 Jun 2025 02:04:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 5541768E250; Sat, 28 Jun 2025 05:04:27 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Sat, 28 Jun 2025 10:04:09 +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 1/3] avformat/whip: add whip_flags ignore_ipv6 to skip IPv6 ICE candidates Content-Type: multipart/mixed; boundary="===============2063678109382308194==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --===============2063678109382308194== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from xmbghk7.mail.qq.com (xmbghk7.mail.qq.com [43.163.128.53]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id E07F268E086 for ; Sat, 28 Jun 2025 05:04:19 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1751076255; bh=T9bwGUBhN8Dvs2K5a0nb/B3tHnZsGUl/50JrtFhnUh8=; h=From:To:Cc:Subject:Date; b=RF/5Y7BU+AbS7VoUdp5ecB5A+Zd6oUYEFkrXEsRD9k5D7AqHHhiJuv8oAF0u1feA4 v6qrS7n0UCqrherVOuV+fP6gY+m2xIIoQry9KF4R6aRrpLVVo0kMngknNc5s9hbxIr OuAVL/98QKICyo3vRJzeTnQEvPrY3/KOOQF4Jvus= Received: from localhost.localdomain ([111.31.253.220]) by newxmesmtplogicsvrszc13-1.qq.com (NewEsmtp) with SMTP id 10D90EF6; Sat, 28 Jun 2025 10:04:13 +0800 X-QQ-mid: xmsmtpt1751076253tr1b1x0v5 Message-ID: X-QQ-XMAILINFO: NyTsQ4JOu2J2jR/XUWCM9ryWCc5C6DULQXNOLIAT7GKu4UOBoaQLrL+GCvOw5A p0m+amV+4ZC9wq4ce+1AqiFn5ygcGN0ykF9GHbnpxb/RZFBRuCQ08P8F1/fzxwLnhQ3Sk6/YNF0y 1cE0ibyyrG0Fz+8lutF28tTB5rKwPxRuspi8PEDIhSPSRsjX9JGnFUyC405arY4IFYGkHgJyD+Yo 8Ri6hTGW/UetctPC7Rs6JEXHTPShAy/wSy7q4daxd+XvFfrs2hXI/IX0x7GqTKWwvvPaw2X+23Rg J26Lcz43BzQxygt5R188ng7593dZP4xhjBx6Bf8GYKRLH/lBIEeBd0vWFdeVzIwO1bXQ4RDEp08f GVy0i4NE403nNJM43j7MrA26j48e/b4pvOGH0+9Wwuwg/uZ/4SJqZsG6S0Ep6tEvDpKs6BNtw1SZ ZZODP6b3Bk7WOUzm6ptt7VFw7K2h4h7gqAUCh2gxrcuXz8GycVEizQeZon9fGERJ/9yR6k443XJg LeS0aGHeXh6xYOUFsqlx4XN9dGKy6Gqbt7tk0eCPPKvpk5JFRuCQI8XMs120fiPOSxd8I9125YCg cmjcVNCH5VkajY4jXTTKn6nY7wOSGzkEDDjjc9SG2UBYrGu29eFuc2NkTB6BIo5JAgVzL+gpgkpr eaVPXp6+h0sLje+NhKwcf5CVuoQAEEnkEzWJoFnBZeva19kan46rU1+OJeO0m/tJQ2w9bmEHl8Ux nL71vmEfzMWW//fsl14m1Y6EZMwEl6ztabYQG966C7j9wa+uyO1NKT0Xte8u+NFRbpocm4yBwp15 YIXrosE8oz33LoeM5FczwHmqK7DJA6WUJbg5opM19ExTit1ZncvJqs7YQn8OULkRdLjzwXy5Of2I dFRd4X75TlPUmAx1E72OJu8HzD9Tv2nkCPcid7k6JDfIjMUyUxhZ0KSGJUna8rIVsjSrbiHbgygo BV4UAUfT+STG5gd5JRZA== X-QQ-XMRINFO: M/715EihBoGSf6IYSX1iLFg= From: Jack Lau To: ffmpeg-devel@ffmpeg.org Cc: Jack Lau Subject: [PATCH 1/3] avformat/whip: add whip_flags ignore_ipv6 to skip IPv6 ICE candidates Date: Sat, 28 Jun 2025 10:04:09 +0800 X-OQ-MSGID: <20250628020411.69443-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 5fdbd6949d..be6ee9c951 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. */ @@ -879,6 +884,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", @@ -887,6 +893,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, "Ignoring IPv6 ICE candidates %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); @@ -1898,6 +1909,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", "(Optional) 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 --===============2063678109382308194== 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". --===============2063678109382308194==--