From f9941a325be8c6ca0ee50ad8a3e2d96eb6218eac Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 17 Aug 2022 11:08:32 +0800 Subject: [PATCH] RTMP URL supports domain in stream parameters. v4.0.255 --- trunk/doc/CHANGELOG.md | 1 + trunk/src/core/srs_core_version4.hpp | 2 +- trunk/src/protocol/srs_protocol_utility.cpp | 7 +++++- trunk/src/utest/srs_utest_rtmp.cpp | 14 +++++++++++ trunk/src/utest/srs_utest_service.cpp | 28 +++++++++++++++++---- 5 files changed, 45 insertions(+), 7 deletions(-) diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md index fbf6a3a7b..83acf7ca3 100644 --- a/trunk/doc/CHANGELOG.md +++ b/trunk/doc/CHANGELOG.md @@ -8,6 +8,7 @@ The changelog for SRS. ## SRS 4.0 Changelog +* v4.0, 2022-08-17, RTMP URL supports domain in stream parameters. v4.0.255 * v4.0, 2022-08-10, Fix server id generator bug. v4.0.254 * v4.0, 2022-06-29, Update SRS image for r.ossrs.net. v4.0.253 * v4.0, 2022-06-11, For [#3058](https://github.com/ossrs/srs/pull/3058): Docker: Support x86_64, armv7 and aarch64 docker image (#3058). v4.0.252 diff --git a/trunk/src/core/srs_core_version4.hpp b/trunk/src/core/srs_core_version4.hpp index 176ca9d78..5443b9c32 100644 --- a/trunk/src/core/srs_core_version4.hpp +++ b/trunk/src/core/srs_core_version4.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 4 #define VERSION_MINOR 0 -#define VERSION_REVISION 254 +#define VERSION_REVISION 255 #endif diff --git a/trunk/src/protocol/srs_protocol_utility.cpp b/trunk/src/protocol/srs_protocol_utility.cpp index 690e2414e..edb0be124 100644 --- a/trunk/src/protocol/srs_protocol_utility.cpp +++ b/trunk/src/protocol/srs_protocol_utility.cpp @@ -53,12 +53,17 @@ void srs_vhost_resolve(string& vhost, string& app, string& param) if ((pos = app.find("?")) != std::string::npos) { std::string query = app.substr(pos + 1); app = app.substr(0, pos); - + if ((pos = query.find("vhost?")) != std::string::npos) { query = query.substr(pos + 6); if (!query.empty()) { vhost = query; } + } else if ((pos = query.find("domain?")) != std::string::npos) { + query = query.substr(pos + 7); + if (!query.empty()) { + vhost = query; + } } } diff --git a/trunk/src/utest/srs_utest_rtmp.cpp b/trunk/src/utest/srs_utest_rtmp.cpp index 661c98ab2..022444f22 100644 --- a/trunk/src/utest/srs_utest_rtmp.cpp +++ b/trunk/src/utest/srs_utest_rtmp.cpp @@ -3388,6 +3388,20 @@ VOID TEST(ProtocolRTMPTest, DiscoveryTcUrl) EXPECT_STREQ("?key=abc&&vhost=demo.com", param.c_str()); } + if (true) { + int port; std::string tcUrl, schema, ip, vhost, app, stream, param; + + tcUrl = "rtmp://winlin.cn/live"; stream= "show?key=abc&&domain=demo.com"; + srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param); + EXPECT_STREQ("rtmp", schema.c_str()); + EXPECT_STREQ("winlin.cn", ip.c_str()); + EXPECT_STREQ("demo.com", vhost.c_str()); + EXPECT_STREQ("live", app.c_str()); + EXPECT_STREQ("show", stream.c_str()); + EXPECT_EQ(1935, port); + EXPECT_STREQ("?key=abc&&domain=demo.com", param.c_str()); + } + // vhost in app if (true) { int port; std::string tcUrl, schema, ip, vhost, app, stream, param; diff --git a/trunk/src/utest/srs_utest_service.cpp b/trunk/src/utest/srs_utest_service.cpp index d9f381dba..c0228bd80 100644 --- a/trunk/src/utest/srs_utest_service.cpp +++ b/trunk/src/utest/srs_utest_service.cpp @@ -533,11 +533,29 @@ VOID TEST(HTTPServerTest, MessageConnection) EXPECT_STREQ("http://127.0.0.1/live/livestream.flv", m.uri().c_str()); EXPECT_FALSE(m.is_jsonp()); } - if (true) { - SrsHttpMessage m; - HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?domain=ossrs.net", false)); - EXPECT_STREQ("ossrs.net", m.host().c_str()); EXPECT_FALSE(m.is_jsonp()); - } + if (true) { + SrsHttpMessage m; + HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?domain=ossrs.net", false)); + EXPECT_STREQ("ossrs.net", m.host().c_str()); EXPECT_FALSE(m.is_jsonp()); + } + + if (true) { + SrsHttpMessage m; + HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?vhost=ossrs.net", false)); + EXPECT_STREQ("ossrs.net", m.host().c_str()); EXPECT_FALSE(m.is_jsonp()); + } + + if (true) { + SrsHttpMessage m; + HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?domain=ossrs.net&token=xxx", false)); + EXPECT_STREQ("ossrs.net", m.host().c_str()); EXPECT_FALSE(m.is_jsonp()); + } + + if (true) { + SrsHttpMessage m; + HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?token=xxx&domain=ossrs.net", false)); + EXPECT_STREQ("ossrs.net", m.host().c_str()); EXPECT_FALSE(m.is_jsonp()); + } if (true) { SrsHttpMessage m;