From a2480a6c94bc523e6d15108dbd70cf9ac7829dfe Mon Sep 17 00:00:00 2001 From: MakarovYaroslav Date: Sun, 11 Nov 2018 08:27:33 +0300 Subject: [PATCH 1/4] fix bug with for loop (#1263) --- trunk/src/kernel/srs_kernel_utility.cpp | 6 +++--- trunk/src/utest/srs_utest_kernel.cpp | 11 ++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/trunk/src/kernel/srs_kernel_utility.cpp b/trunk/src/kernel/srs_kernel_utility.cpp index 60eef5ddb..aebee90c5 100644 --- a/trunk/src/kernel/srs_kernel_utility.cpp +++ b/trunk/src/kernel/srs_kernel_utility.cpp @@ -222,7 +222,7 @@ string srs_string_trim_end(string str, string trim_chars) ret.erase(ret.end() - 1); // ok, matched, should reset the search - i = 0; + i = -1; } } @@ -240,7 +240,7 @@ string srs_string_trim_start(string str, string trim_chars) ret.erase(ret.begin()); // ok, matched, should reset the search - i = 0; + i = -1; } } @@ -259,7 +259,7 @@ string srs_string_remove(string str, string remove_chars) it = ret.erase(it); // ok, matched, should reset the search - i = 0; + i = -1; } else { ++it; } diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index 93c69c80c..46e82bcda 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -1487,6 +1487,15 @@ VOID TEST(KernelUtilityTest, UtilityString) str1 = srs_string_replace(str, "o", "XX"); EXPECT_STREQ("HellXX, WXXrld! HellXX, SRS!", str1.c_str()); + + str1 = srs_string_trim_start(str, "x"); + EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str()); + + str1 = srs_string_trim_start(str, "S!R"); + EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str()); + + str1 = srs_string_trim_start(str, "lHe"); + EXPECT_STREQ("o, World! Hello, SRS!", str1.c_str()); str1 = srs_string_trim_end(str, "x"); EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str()); @@ -1494,7 +1503,7 @@ VOID TEST(KernelUtilityTest, UtilityString) str1 = srs_string_trim_end(str, "He"); EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str()); - str1 = srs_string_trim_end(str, "HeS!R"); + str1 = srs_string_trim_end(str, "S!R"); EXPECT_STREQ("Hello, World! Hello, ", str1.c_str()); str1 = srs_string_remove(str, "x"); From b2066cbf683847b8f49c6e4134d3b1f26b711e60 Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 11 Nov 2018 13:30:12 +0800 Subject: [PATCH 2/4] #1263, Fix string trim bug. 2.0.259 --- README.md | 2 ++ trunk/src/core/srs_core.hpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b461e243f..00ed81e07 100755 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ Remark: ## History +* v2.0, 2018-11-11, Merge [#1263][bug #1263], Fix string trim bug. 2.0.259 * v2.0, 2018-10-28, [2.0 release5(2.0.258)][r2.0r5] released. 86916 lines. * v2.0, 2018-10-28, Fix [#1250][bug #1250], Support build on OSX10.14 Mojave. 2.0.258 * v2.0, 2018-10-08, Merge [#1236][bug #1236], Fix sleep bug in us. 2.0.257 @@ -1335,6 +1336,7 @@ Winlin [bug #1237]: https://github.com/ossrs/srs/issues/1237 [bug #1236]: https://github.com/ossrs/srs/issues/1236 [bug #1250]: https://github.com/ossrs/srs/issues/1250 +[bug #1263]: https://github.com/ossrs/srs/issues/1263 [bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx [exo #828]: https://github.com/google/ExoPlayer/pull/828 diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 1d9e0fc91..83642e4ce 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR 2 #define VERSION_MINOR 0 -#define VERSION_REVISION 258 +#define VERSION_REVISION 259 // generated by configure, only macros. #include From e62ac29f4859dceb87d6967eb561b461a4915a78 Mon Sep 17 00:00:00 2001 From: MakarovYaroslav Date: Sun, 11 Nov 2018 08:31:29 +0300 Subject: [PATCH 3/4] add ignoring _definst_ at the end of app (#1261) --- trunk/src/kernel/srs_kernel_utility.cpp | 26 +++++++++++++++++++++++++ trunk/src/kernel/srs_kernel_utility.hpp | 4 ++++ trunk/src/protocol/srs_rtmp_utility.cpp | 3 +++ trunk/src/utest/srs_utest_kernel.cpp | 12 ++++++++++++ trunk/src/utest/srs_utest_protocol.cpp | 10 ++++++++++ 5 files changed, 55 insertions(+) diff --git a/trunk/src/kernel/srs_kernel_utility.cpp b/trunk/src/kernel/srs_kernel_utility.cpp index aebee90c5..4e75b06f2 100644 --- a/trunk/src/kernel/srs_kernel_utility.cpp +++ b/trunk/src/kernel/srs_kernel_utility.cpp @@ -269,6 +269,32 @@ string srs_string_remove(string str, string remove_chars) return ret; } +string srs_erase_first_substr(string str, string erase_string) +{ + std::string ret = str; + + size_t pos = ret.find(erase_string); + + if (pos != std::string::npos) + { + ret.erase(pos, erase_string.length()); + } + return ret; +} + +string srs_erase_last_substr(string str, string erase_string) +{ + std::string ret = str; + + size_t pos = ret.rfind(erase_string); + + if (pos != std::string::npos) + { + ret.erase(pos, erase_string.length()); + } + return ret; +} + bool srs_string_ends_with(string str, string flag) { return str.rfind(flag) == str.length() - flag.length(); diff --git a/trunk/src/kernel/srs_kernel_utility.hpp b/trunk/src/kernel/srs_kernel_utility.hpp index ad5dd5765..085074848 100644 --- a/trunk/src/kernel/srs_kernel_utility.hpp +++ b/trunk/src/kernel/srs_kernel_utility.hpp @@ -63,6 +63,10 @@ extern std::string srs_string_trim_end(std::string str, std::string trim_chars); extern std::string srs_string_trim_start(std::string str, std::string trim_chars); // remove char in remove_chars of str extern std::string srs_string_remove(std::string str, std::string remove_chars); +// remove first substring from str +extern std::string srs_erase_first_substr(std::string str, std::string erase_string); +// remove last substring from str +extern std::string srs_erase_last_substr(std::string str, std::string erase_string); // whether string end with extern bool srs_string_ends_with(std::string str, std::string flag); // whether string starts with diff --git a/trunk/src/protocol/srs_rtmp_utility.cpp b/trunk/src/protocol/srs_rtmp_utility.cpp index c322a9796..b050488f0 100644 --- a/trunk/src/protocol/srs_rtmp_utility.cpp +++ b/trunk/src/protocol/srs_rtmp_utility.cpp @@ -90,6 +90,9 @@ void srs_vhost_resolve(string& vhost, string& app, string& param) app = srs_string_replace(app, "...", "?"); app = srs_string_replace(app, "&&", "?"); app = srs_string_replace(app, "=", "?"); + if (srs_string_ends_with(app, "/_definst_")){ + app = srs_erase_last_substr(app, "/_definst_"); + } if ((pos = app.find("?")) != std::string::npos) { std::string query = app.substr(pos + 1); diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index 46e82bcda..5fd07a9bd 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -1514,6 +1514,18 @@ VOID TEST(KernelUtilityTest, UtilityString) str1 = srs_string_remove(str, "ol"); EXPECT_STREQ("He, Wrd! He, SRS!", str1.c_str()); + + str1 = srs_erase_first_substr(str, "Hello"); + EXPECT_STREQ(", World! Hello, SRS!", str1.c_str()); + + str1 = srs_erase_first_substr(str, "XX"); + EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str()); + + str1 = srs_erase_last_substr(str, "Hello"); + EXPECT_STREQ("Hello, World! , SRS!", str1.c_str()); + + str1 = srs_erase_last_substr(str, "XX"); + EXPECT_STREQ("Hello, World! Hello, SRS!", str1.c_str()); EXPECT_FALSE(srs_string_ends_with("Hello", "x")); EXPECT_TRUE(srs_string_ends_with("Hello", "o")); diff --git a/trunk/src/utest/srs_utest_protocol.cpp b/trunk/src/utest/srs_utest_protocol.cpp index 9bd2cc3f7..119acfd3b 100644 --- a/trunk/src/utest/srs_utest_protocol.cpp +++ b/trunk/src/utest/srs_utest_protocol.cpp @@ -579,6 +579,16 @@ VOID TEST(ProtocolUtilityTest, DiscoveryTcUrl) EXPECT_STREQ("live", app.c_str()); EXPECT_STREQ("show", stream.c_str()); EXPECT_STREQ("19351", port.c_str()); + + // _definst_ at the end of app + tcUrl = "rtmp://winlin.cn/live/_definst_"; stream= "show"; + 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("winlin.cn", vhost.c_str()); + EXPECT_STREQ("live", app.c_str()); + EXPECT_STREQ("show", stream.c_str()); + EXPECT_STREQ("1935", port.c_str()); } /** From 99aa249f3a336e19760329bab3d8c9db7de02d9b Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 11 Nov 2018 13:33:47 +0800 Subject: [PATCH 4/4] #1261, Support _definst_ for Wowza. 2.0.260 --- README.md | 2 ++ trunk/src/core/srs_core.hpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 00ed81e07..a3bd520e5 100755 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ Remark: ## History +* v2.0, 2018-11-11, Merge [#1261][bug #1261], Support `_definst_` for Wowza. 2.0.260 * v2.0, 2018-11-11, Merge [#1263][bug #1263], Fix string trim bug. 2.0.259 * v2.0, 2018-10-28, [2.0 release5(2.0.258)][r2.0r5] released. 86916 lines. * v2.0, 2018-10-28, Fix [#1250][bug #1250], Support build on OSX10.14 Mojave. 2.0.258 @@ -1337,6 +1338,7 @@ Winlin [bug #1236]: https://github.com/ossrs/srs/issues/1236 [bug #1250]: https://github.com/ossrs/srs/issues/1250 [bug #1263]: https://github.com/ossrs/srs/issues/1263 +[bug #1261]: https://github.com/ossrs/srs/issues/1261 [bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx [exo #828]: https://github.com/google/ExoPlayer/pull/828 diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 83642e4ce..66c39960b 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR 2 #define VERSION_MINOR 0 -#define VERSION_REVISION 259 +#define VERSION_REVISION 260 // generated by configure, only macros. #include