diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md index 16599decf..7da6f521b 100644 --- a/trunk/doc/CHANGELOG.md +++ b/trunk/doc/CHANGELOG.md @@ -7,6 +7,7 @@ The changelog for SRS. ## SRS 7.0 Changelog +* v7.0, 2025-11-27, Merge [#4588](https://github.com/ossrs/srs/pull/4588): RTMP: Ignore FMLE start packet after flash publish. v7.0.129 (#4588) * v7.0, 2025-11-18, AI: API: Change pagination default count to 10, minimum 1. v7.0.128 * v7.0, 2025-11-14, AI: Fix race condition causing immediate deletion of new sources. v7.0.127 (#4449) * v7.0, 2025-11-11, AI: WebRTC: Support optional msid attribute per RFC 8830. v7.0.126 (#4570) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 648575b11..6e0ff2fb6 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -3604,8 +3604,8 @@ srs_error_t SrsRtcPublisherNegotiator::negotiate_publish_capability(SrsRtcUserCo // Generate msid because it's optional in sdp. string msid_tracker = ssrc_info.msid_tracker_; if (msid_tracker.empty()) { - msid_tracker = srs_fmt_sprintf("track-%s-%s-%d", - track_desc->type_.c_str(), ssrc_info.cname_.c_str(), ssrc_info.ssrc_); + msid_tracker = srs_fmt_sprintf("track-%s-%s-%d", + track_desc->type_.c_str(), ssrc_info.cname_.c_str(), ssrc_info.ssrc_); } // Generate msid because it's optional in sdp. diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp index 807b81dec..bfba1a4d7 100644 --- a/trunk/src/app/srs_app_rtmp_conn.cpp +++ b/trunk/src/app/srs_app_rtmp_conn.cpp @@ -1176,6 +1176,11 @@ srs_error_t SrsRtmpConn::handle_publish_message(SrsSharedPtr &sou // for flash, any packet is republish. if (info_->type_ == SrsRtmpConnFlashPublish) { + if (dynamic_cast(pkt.get())) { + srs_warn("flash late FMLE start packet"); + return err; + } + // flash unpublish. // TODO: maybe need to support republish. srs_trace("flash flash publish finished."); diff --git a/trunk/src/core/srs_core_version7.hpp b/trunk/src/core/srs_core_version7.hpp index 0940d73d3..8f4fc3fd3 100644 --- a/trunk/src/core/srs_core_version7.hpp +++ b/trunk/src/core/srs_core_version7.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 7 #define VERSION_MINOR 0 -#define VERSION_REVISION 128 +#define VERSION_REVISION 129 #endif \ No newline at end of file diff --git a/trunk/src/utest/srs_utest_ai24.cpp b/trunk/src/utest/srs_utest_ai24.cpp index 7d6736f92..ba6cad3ad 100644 --- a/trunk/src/utest/srs_utest_ai24.cpp +++ b/trunk/src/utest/srs_utest_ai24.cpp @@ -20,9 +20,9 @@ #include #include #include +#include #include #include -#include #ifdef SRS_FFMPEG_FIT #include @@ -1241,7 +1241,7 @@ VOID TEST(SdpTest, ParseLibdatachannelSdpFromIssue4570) EXPECT_TRUE(sdp.media_descs_.size() == 2); // Verify first media description is video - SrsMediaDesc* video_desc = &sdp.media_descs_[0]; + SrsMediaDesc *video_desc = &sdp.media_descs_[0]; EXPECT_TRUE(video_desc->type_ == "video"); EXPECT_TRUE(video_desc->mid_ == "video"); EXPECT_TRUE(video_desc->sendonly_); @@ -1253,7 +1253,7 @@ VOID TEST(SdpTest, ParseLibdatachannelSdpFromIssue4570) EXPECT_TRUE(video_desc->payload_types_.size() >= 1); // Find H264 payload (PT 96) - SrsMediaPayloadType* h264_payload = NULL; + SrsMediaPayloadType *h264_payload = NULL; for (size_t i = 0; i < video_desc->payload_types_.size(); i++) { if (video_desc->payload_types_[i].payload_type_ == 96) { h264_payload = &video_desc->payload_types_[i]; @@ -1277,7 +1277,7 @@ VOID TEST(SdpTest, ParseLibdatachannelSdpFromIssue4570) EXPECT_TRUE(found_video_ssrc); // Verify second media description is audio - SrsMediaDesc* audio_desc = &sdp.media_descs_[1]; + SrsMediaDesc *audio_desc = &sdp.media_descs_[1]; EXPECT_TRUE(audio_desc->type_ == "audio"); EXPECT_TRUE(audio_desc->mid_ == "audio"); EXPECT_TRUE(audio_desc->sendonly_); @@ -1289,7 +1289,7 @@ VOID TEST(SdpTest, ParseLibdatachannelSdpFromIssue4570) EXPECT_TRUE(audio_desc->payload_types_.size() >= 1); // Find Opus payload (PT 111) - SrsMediaPayloadType* opus_payload = NULL; + SrsMediaPayloadType *opus_payload = NULL; for (size_t i = 0; i < audio_desc->payload_types_.size(); i++) { if (audio_desc->payload_types_[i].payload_type_ == 111) { opus_payload = &audio_desc->payload_types_[i];