From fba11228351200d0c6d5a0895d1a991a16893463 Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 7 Dec 2015 10:15:08 +0800 Subject: [PATCH] private the srs_vhost_resolve --- trunk/src/protocol/srs_protocol_utility.cpp | 72 ++++++++++++--------- trunk/src/protocol/srs_protocol_utility.hpp | 12 ---- trunk/src/utest/srs_utest_protocol.cpp | 33 ---------- 3 files changed, 40 insertions(+), 77 deletions(-) diff --git a/trunk/src/protocol/srs_protocol_utility.cpp b/trunk/src/protocol/srs_protocol_utility.cpp index a01f0bbdf..cdb820b14 100644 --- a/trunk/src/protocol/srs_protocol_utility.cpp +++ b/trunk/src/protocol/srs_protocol_utility.cpp @@ -41,6 +41,46 @@ using namespace std; #include #include +/** + * resolve the vhost in query string + * @pram vhost, update the vhost if query contains the vhost. + * @param app, may contains the vhost in query string format: + * app?vhost=request_vhost + * app...vhost...request_vhost + * @param param, the query, for example, ?vhost=xxx + */ +void srs_vhost_resolve(string& vhost, string& app, string& param) +{ + // get original param + size_t pos = 0; + if ((pos = app.find("?")) != std::string::npos) { + param = app.substr(pos); + } + + // filter tcUrl + app = srs_string_replace(app, ",", "?"); + app = srs_string_replace(app, "...", "?"); + app = srs_string_replace(app, "&&", "?"); + app = srs_string_replace(app, "=", "?"); + + 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; + } + if ((pos = vhost.find("?")) != std::string::npos) { + vhost = vhost.substr(0, pos); + } + } + } + + /* others */ +} + void srs_discovery_tc_url( string tcUrl, string& schema, string& host, string& vhost, @@ -77,38 +117,6 @@ void srs_discovery_tc_url( srs_vhost_resolve(vhost, app, param); } -void srs_vhost_resolve(string& vhost, string& app, string& param) -{ - // get original param - size_t pos = 0; - if ((pos = app.find("?")) != std::string::npos) { - param = app.substr(pos); - } - - // filter tcUrl - app = srs_string_replace(app, ",", "?"); - app = srs_string_replace(app, "...", "?"); - app = srs_string_replace(app, "&&", "?"); - app = srs_string_replace(app, "=", "?"); - - 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; - } - if ((pos = vhost.find("?")) != std::string::npos) { - vhost = vhost.substr(0, pos); - } - } - } - - /* others */ -} - void srs_random_generate(char* bytes, int size) { static bool _random_initialized = false; diff --git a/trunk/src/protocol/srs_protocol_utility.hpp b/trunk/src/protocol/srs_protocol_utility.hpp index 170768ebd..6d85a3563 100644 --- a/trunk/src/protocol/srs_protocol_utility.hpp +++ b/trunk/src/protocol/srs_protocol_utility.hpp @@ -62,18 +62,6 @@ extern void srs_discovery_tc_url( std::string& app, int& port, std::string& param ); -/** -* resolve the vhost in query string -* @pram vhost, update the vhost if query contains the vhost. -* @param app, may contains the vhost in query string format: -* app?vhost=request_vhost -* app...vhost...request_vhost -* @param param, the query, for example, ?vhost=xxx -*/ -extern void srs_vhost_resolve( - std::string& vhost, std::string& app, std::string& param -); - /** * generate ramdom data for handshake. */ diff --git a/trunk/src/utest/srs_utest_protocol.cpp b/trunk/src/utest/srs_utest_protocol.cpp index e0e045632..df7e44240 100644 --- a/trunk/src/utest/srs_utest_protocol.cpp +++ b/trunk/src/utest/srs_utest_protocol.cpp @@ -423,39 +423,6 @@ VOID TEST(ProtocolHandshakeTest, BytesEqual) EXPECT_FALSE(srs_bytes_equals(a1, b2, 1)); } -/** -* resolve vhost from tcUrl. -*/ -VOID TEST(ProtocolUtilityTest, VhostResolve) -{ - std::string vhost = "vhost"; - std::string app = "app"; - std::string param; - srs_vhost_resolve(vhost, app, param); - EXPECT_STREQ("vhost", vhost.c_str()); - EXPECT_STREQ("app", app.c_str()); - - app = "app?vhost=changed"; - srs_vhost_resolve(vhost, app, param); - EXPECT_STREQ("changed", vhost.c_str()); - EXPECT_STREQ("app", app.c_str()); - - app = "app?vhost=changed1&&query=true"; - srs_vhost_resolve(vhost, app, param); - EXPECT_STREQ("changed1", vhost.c_str()); - EXPECT_STREQ("app", app.c_str()); - - app = "app?other=true&&vhost=changed2&&query=true"; - srs_vhost_resolve(vhost, app, param); - EXPECT_STREQ("changed2", vhost.c_str()); - EXPECT_STREQ("app", app.c_str()); - - app = "app...other...true...vhost...changed3...query...true"; - srs_vhost_resolve(vhost, app, param); - EXPECT_STREQ("changed3", vhost.c_str()); - EXPECT_STREQ("app", app.c_str()); -} - /** * discovery tcUrl to schema/vhost/host/port/app */