From patchwork Tue Sep 8 16:10:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 22167 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A58E3449C60 for ; Tue, 8 Sep 2020 19:10:25 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 87C4468B4D7; Tue, 8 Sep 2020 19:10:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from qq.com (out203-205-221-164.mail.qq.com [203.205.221.164]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 804996881E4 for ; Tue, 8 Sep 2020 19:10:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1599581414; bh=c6+Wz0py3pIq7HTeH7JykdOInPQdARcS+hP8lhHnQ3c=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=N6JnMWETNPUlVi18V9YvQ0sxJcodab3WviuUN7i9RLMp3ABPfDT+KHkelxJdPNFM4 JjnEMN0GAPDW2nUblXFK2HiYRDFLxcqJ0WgJFe/ww2r6y7nT1ijugq7H6gGaJIrmBs 9yLWvK7FvTPDXBV59HVUNsqipmedLxeWs7Zm+3E4= Received: from localhost.localdomain ([27.46.106.71]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 28D2FE59; Wed, 09 Sep 2020 00:10:13 +0800 X-QQ-mid: xmsmtpt1599581413t85iocgyb Message-ID: X-QQ-XMAILINFO: N2GcUOUOgZ9feZzXHNlmvgoUStG7eYr5o9R7bm3UnFNKAmSY88lRzNIZZoQjiM Tn2F4VdIwLV0f4yF2JDBgbeP0FYS7p96Snun1CD6PTc6Ncff1E7LJlyYioKAJefkw69JelNhww4Q FT3YhTea1SdoKFMJIUNWwR0IvMweVI27FkirD4Pu4vKo/hmDIlpl4XYFnhRBkckeFIhcACyPZUvb fEn8RzflPvaNya3YrKLrQGnWTBRN7V2sXIzYTGgnBjBEJDLWse07v9TOpb61Khhs19wS7sXbD2Bt MKITofBT9a3aAcpdijqL7Y9jW3pA1MV17HA4pYRBKRnG58r/V9k1voefOdnpfflwMP1HepdQ0OEu 2YsqT0Bv3bl2K0Rjvv5+wls6tjHTq3DUeP3pXNsBmdjoYGN385gqxj6J+KiKgDSpkfzulpbXWdMA TKhM4no+EMMygkS2SwlW6RUURCY8H93FRtYKp/5IbcZgOuASagqMFVQiBo8ZiYJjeEt+7zmCrO5M zlpZA8taO+N8t69g1BQjSgcTZRED3d6XOF1iapFwMy/JjCXctbQNm1vC6qhPzxoA1+VgE6br7+jD ST9Mp4EqzAn80lN2Fa7kbxQQlQWGpPDO9IMJFbYtF6QlSH5xh9dWiJIgkdL85beURipTa5tr9zrJ 6IzxYg+pO3KRKQg/lylevrB7Q2I6tAhCQzpo4YEAJeVMfmDo0vnlF/VwicVfR/iur/6Dw0fh4A3L yy+JVyRJE/4a0J85SklHPIfV3LFyyMt3B5 From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Wed, 9 Sep 2020 00:10:10 +0800 X-OQ-MSGID: <20200908161011.202285-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200907180231.yawvc6mslqtid3wf@manj> References: <20200907180231.yawvc6mslqtid3wf@manj> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/2] avformat/rtsp: fix infinite loop with udp transport X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" sender: ./ffmpeg -i test.mp4 -c copy -f rtsp -rtsp_transport udp rtsp://localhost:12345/live.sdp receiver: ./ffmpeg_g -y -rtsp_flags listen -timeout 100 -i rtsp://localhost:12345/live.sdp -c copy test.mp4 --- libavformat/rtsp.c | 2 ++ libavformat/rtsp.h | 1 + libavformat/rtspdec.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 5d8491b74b..597413803f 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -2051,6 +2051,8 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st, if ((ret = parse_rtsp_message(s)) < 0) { return ret; } + if (rt->state == RTSP_STATE_TEARDOWN) + return AVERROR_EOF; } #endif } else if (n == 0 && ++timeout_cnt >= MAX_TIMEOUTS) { diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h index 54a9a30c16..481cc0c3ce 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -198,6 +198,7 @@ enum RTSPClientState { RTSP_STATE_STREAMING, /**< initialized and sending/receiving data */ RTSP_STATE_PAUSED, /**< initialized, but not receiving data */ RTSP_STATE_SEEKING, /**< initialized, requesting a seek */ + RTSP_STATE_TEARDOWN,/**< initialized, in teardown state */ }; /** diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c index dfa29913bf..ec786a469a 100644 --- a/libavformat/rtspdec.c +++ b/libavformat/rtspdec.c @@ -494,7 +494,7 @@ int ff_rtsp_parse_streaming_commands(AVFormatContext *s) "Public: ANNOUNCE, PAUSE, SETUP, TEARDOWN, " "RECORD\r\n", request.seq); } else if (methodcode == TEARDOWN) { - rt->state = RTSP_STATE_IDLE; + rt->state = RTSP_STATE_TEARDOWN; ret = rtsp_send_reply(s, RTSP_STATUS_OK, NULL , request.seq); } return ret; From patchwork Tue Sep 8 16:10:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 22168 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 02E33449C60 for ; Tue, 8 Sep 2020 19:10:28 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E1A1A68B4F3; Tue, 8 Sep 2020 19:10:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from qq.com (out203-205-221-247.mail.qq.com [203.205.221.247]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 02E6368B529 for ; Tue, 8 Sep 2020 19:10:20 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1599581414; bh=kEBH+2BzTn6Lu6b/grpOvA/gdqrEz/xjNrK3ZacVx2k=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=wy9cuzg/R5VJ/mdmPYEtOsljZDgvkpTFr2puGNebt9zkY5tNMERAx2tNGavcNGNZX VaQZDWdFFgbVOsqsda/rUIkNN/6Tl/S6QS8pBf1sY51MheZpg0yX4J8/1lMHUKiaC3 SONFvUF8/88JCI+KfElRFegpZUnwhcBVIklebCnY= Received: from localhost.localdomain ([27.46.106.71]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 28D2FE59; Wed, 09 Sep 2020 00:10:13 +0800 X-QQ-mid: xmsmtpt1599581414tp2vq7zo2 Message-ID: X-QQ-XMAILINFO: NN9UNVzD7YXO54jNh/SPsWu0HjZknGh2YSXTqyjNDGBgFBpnch/bJoxT+ojQn6 oPsH9x/SV80AJKcGnmvWA1IJxXHsi1kqX1KkTuE2VjDjxF0N8F10+vrr9cqRdWMA//rPAV6D0pMB kB4SJ28T87HJj7G/IhJ3Keneiwve1FdR1EOhwuEC4oU8FT8ZStmnDBzg9Mu26bhe4gF7KTkLUdbO tTLzXs5LmLUwtclbThMlBMvlki0ZodQ7bYJWK5JC7BmLxT9579UAIDqSQ7S355DwPvNzeHoloYCt hFvs7rrkzdOlcBdMD9H67ak7lr4FdWU2JaVvsHv3pixlaJ50/5nLwzLzcUwt1TonOI/AJYs86ZrP 9MET13M6PKutDq3chCfPBpssPrQ2BDELcj8qDNNCB59f2O/rP7FlDIQVgwojmtvp+d1OMcGyOqRv fwUdRK7a/seSU8I4CEb7vZhoflfQO3J2PFm69Ivh8KX7Bgnt/NpafFXUjlYafayRJjd76/UL2MaO 097NT6/7rJFtAr0WKC0dGB4Lprdk954fXQ8QUa7GyM7qqnnqQer8mE/7sGsqGTJsjPKQKkW2iSev rGwAnBCIa+BzP2CeB6Kh3n+pTpA/n6hoVO3QasGvqT3hwTjofYM+G4KQ+Aa6OgpcX1qiBndKhxFx 3ZkBfIi4WOuqTZs9NZgp/FXddjSADY1G47qJub2c/GkFLmuBdRxSLaL8zCsMUf/3OHQhbKGiRGgp R5bYCxZxY7E11NQ8AAlBLLbg== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Wed, 9 Sep 2020 00:10:11 +0800 X-OQ-MSGID: <20200908161011.202285-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200908161011.202285-1-quinkblack@foxmail.com> References: <20200907180231.yawvc6mslqtid3wf@manj> <20200908161011.202285-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/2] avformat/rtsp: fix parse_rtsp_message X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 1. Remove the assumption that the message method is TEARDOWN. 2. Don't ignore the error code of ff_rtsp_parse_streaming_commands. --- libavformat/rtsp.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 597413803f..3e69ab7287 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -1964,11 +1964,7 @@ static int parse_rtsp_message(AVFormatContext *s) if (rt->rtsp_flags & RTSP_FLAG_LISTEN) { if (rt->state == RTSP_STATE_STREAMING) { - if (!ff_rtsp_parse_streaming_commands(s)) - return AVERROR_EOF; - else - av_log(s, AV_LOG_WARNING, - "Unable to answer to TEARDOWN\n"); + return ff_rtsp_parse_streaming_commands(s); } else return 0; } else {