[FFmpeg-cvslog] avformat/whip: check the exchange sdp url is start with http

Steven Liu git at videolan.org
Thu Jun 26 23:21:36 EEST 2025


ffmpeg | branch: master | Steven Liu <lq at chinaffmpeg.org> | Fri Jun  6 11:02:06 2025 +0800| [f8a9d9473b0af9e5769a669f5418361d6ac26ad8] | committer: Marvin Scholz

avformat/whip: check the exchange sdp url is start with http

Make sure the WHIP protocol performs the SDP offer/answer
exchange with the WebRTC peer over HTTP.

Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
Reviewed-by: Jack Lau <jacklau1222 at qq.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f8a9d9473b0af9e5769a669f5418361d6ac26ad8
---

 libavformat/whip.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavformat/whip.c b/libavformat/whip.c
index 7936eb1300..5fdbd6949d 100644
--- a/libavformat/whip.c
+++ b/libavformat/whip.c
@@ -732,10 +732,18 @@ static int exchange_sdp(AVFormatContext *s)
     URLContext *whip_uc = NULL;
     AVDictionary *opts = NULL;
     char *hex_data = NULL;
+    const char *proto_name = avio_find_protocol_name(s->url);
 
     /* To prevent a crash during cleanup, always initialize it. */
     av_bprint_init(&bp, 1, MAX_SDP_SIZE);
 
+    if (!av_strstart(proto_name, "http", NULL)) {
+        av_log(whip, AV_LOG_ERROR, "WHIP: Protocol %s is not supported by RTC, choose http, url is %s\n",
+            proto_name, s->url);
+        ret = AVERROR(EINVAL);
+        goto end;
+    }
+
     if (!whip->sdp_offer || !strlen(whip->sdp_offer)) {
         av_log(whip, AV_LOG_ERROR, "WHIP: No offer to exchange\n");
         ret = AVERROR(EINVAL);



More information about the ffmpeg-cvslog mailing list