mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Fix #1059, support vhost in stream parameters. 2.0.246
This commit is contained in:
parent
366309ce2d
commit
1721e4ea4b
13 changed files with 161 additions and 69 deletions
|
@ -332,6 +332,7 @@ Remark:
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
|
* v2.0, 2018-02-13, Fix [#1059][bug #1059], support vhost in stream parameters. 2.0.246
|
||||||
* v2.0, 2018-01-07, Merge [#1045][bug #1045], fix [#1044][bug #1044], TCP connection alive detection. 2.0.245
|
* v2.0, 2018-01-07, Merge [#1045][bug #1045], fix [#1044][bug #1044], TCP connection alive detection. 2.0.245
|
||||||
* v2.0, 2018-01-04, Merge [#1039][bug #1039], fix bug of init.d script.
|
* v2.0, 2018-01-04, Merge [#1039][bug #1039], fix bug of init.d script.
|
||||||
* v2.0, 2018-01-01, Merge [#1033][bug #1033], allow user to add some specific flags. 2.0.244
|
* v2.0, 2018-01-01, Merge [#1033][bug #1033], allow user to add some specific flags. 2.0.244
|
||||||
|
@ -1303,6 +1304,7 @@ Winlin
|
||||||
[bug #1039]: https://github.com/ossrs/srs/issues/1039
|
[bug #1039]: https://github.com/ossrs/srs/issues/1039
|
||||||
[bug #1044]: https://github.com/ossrs/srs/issues/1044
|
[bug #1044]: https://github.com/ossrs/srs/issues/1044
|
||||||
[bug #1045]: https://github.com/ossrs/srs/issues/1045
|
[bug #1045]: https://github.com/ossrs/srs/issues/1045
|
||||||
|
[bug #1059]: https://github.com/ossrs/srs/issues/1059
|
||||||
[bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx
|
[bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx
|
||||||
|
|
||||||
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
||||||
|
|
|
@ -284,7 +284,7 @@ int SrsDynamicHttpConn::connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_discovery_tc_url(req->tcUrl,
|
srs_discovery_tc_url(req->tcUrl,
|
||||||
req->schema, req->host, req->vhost, req->app, req->port,
|
req->schema, req->host, req->vhost, req->app, req->stream, req->port,
|
||||||
req->param);
|
req->param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -865,7 +865,7 @@ SrsRequest* SrsHttpMessage::to_request(string vhost)
|
||||||
req->objectEncoding = 0;
|
req->objectEncoding = 0;
|
||||||
|
|
||||||
srs_discovery_tc_url(req->tcUrl,
|
srs_discovery_tc_url(req->tcUrl,
|
||||||
req->schema, req->host, req->vhost, req->app, req->port,
|
req->schema, req->host, req->vhost, req->app, req->stream, req->port,
|
||||||
req->param);
|
req->param);
|
||||||
req->strip();
|
req->strip();
|
||||||
|
|
||||||
|
|
|
@ -628,7 +628,7 @@ int SrsMpegtsOverUdp::connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_discovery_tc_url(req->tcUrl,
|
srs_discovery_tc_url(req->tcUrl,
|
||||||
req->schema, req->host, req->vhost, req->app, req->port,
|
req->schema, req->host, req->vhost, req->app, req->stream, req->port,
|
||||||
req->param);
|
req->param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ using namespace std;
|
||||||
#include <srs_kernel_utility.hpp>
|
#include <srs_kernel_utility.hpp>
|
||||||
#include <srs_app_security.hpp>
|
#include <srs_app_security.hpp>
|
||||||
#include <srs_app_statistic.hpp>
|
#include <srs_app_statistic.hpp>
|
||||||
|
#include <srs_rtmp_utility.hpp>
|
||||||
|
|
||||||
// when stream is busy, for example, streaming is already
|
// when stream is busy, for example, streaming is already
|
||||||
// publishing, when a new client to request to publish,
|
// publishing, when a new client to request to publish,
|
||||||
|
@ -149,30 +150,6 @@ int SrsRtmpConn::do_cycle()
|
||||||
// set client ip to request.
|
// set client ip to request.
|
||||||
req->ip = ip;
|
req->ip = ip;
|
||||||
|
|
||||||
// discovery vhost, resolve the vhost from config
|
|
||||||
SrsConfDirective* parsed_vhost = _srs_config->get_vhost(req->vhost);
|
|
||||||
if (parsed_vhost) {
|
|
||||||
req->vhost = parsed_vhost->arg0();
|
|
||||||
}
|
|
||||||
|
|
||||||
srs_info("discovery app success. schema=%s, vhost=%s, port=%s, app=%s",
|
|
||||||
req->schema.c_str(), req->vhost.c_str(), req->port.c_str(), req->app.c_str());
|
|
||||||
|
|
||||||
if (req->schema.empty() || req->vhost.empty() || req->port.empty() || req->app.empty()) {
|
|
||||||
ret = ERROR_RTMP_REQ_TCURL;
|
|
||||||
srs_error("discovery tcUrl failed. "
|
|
||||||
"tcUrl=%s, schema=%s, vhost=%s, port=%s, app=%s, ret=%d",
|
|
||||||
req->tcUrl.c_str(), req->schema.c_str(), req->vhost.c_str(), req->port.c_str(), req->app.c_str(), ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check vhost
|
|
||||||
if ((ret = check_vhost()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("check vhost failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
srs_verbose("check vhost success.");
|
|
||||||
|
|
||||||
srs_trace("connect app, "
|
srs_trace("connect app, "
|
||||||
"tcUrl=%s, pageUrl=%s, swfUrl=%s, schema=%s, vhost=%s, port=%s, app=%s, args=%s",
|
"tcUrl=%s, pageUrl=%s, swfUrl=%s, schema=%s, vhost=%s, port=%s, app=%s, args=%s",
|
||||||
req->tcUrl.c_str(), req->pageUrl.c_str(), req->swfUrl.c_str(),
|
req->tcUrl.c_str(), req->pageUrl.c_str(), req->swfUrl.c_str(),
|
||||||
|
@ -376,19 +353,6 @@ int SrsRtmpConn::service_cycle()
|
||||||
return bandwidth->bandwidth_check(rtmp, skt, req, local_ip);
|
return bandwidth->bandwidth_check(rtmp, skt, req, local_ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
// do token traverse before serve it.
|
|
||||||
// @see https://github.com/ossrs/srs/pull/239
|
|
||||||
if (true) {
|
|
||||||
bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost);
|
|
||||||
bool edge_traverse = _srs_config->get_vhost_edge_token_traverse(req->vhost);
|
|
||||||
if (vhost_is_edge && edge_traverse) {
|
|
||||||
if ((ret = check_edge_token_traverse_auth()) != ERROR_SUCCESS) {
|
|
||||||
srs_warn("token auth failed, ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// set chunk size to larger.
|
// set chunk size to larger.
|
||||||
// set the chunk size before any larger response greater than 128,
|
// set the chunk size before any larger response greater than 128,
|
||||||
// to make OBS happy, @see https://github.com/ossrs/srs/issues/454
|
// to make OBS happy, @see https://github.com/ossrs/srs/issues/454
|
||||||
|
@ -471,10 +435,49 @@ int SrsRtmpConn::stream_service_cycle()
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srs_discovery_tc_url(req->tcUrl, req->schema, req->host, req->vhost, req->app, req->stream, req->port, req->param);
|
||||||
req->strip();
|
req->strip();
|
||||||
srs_trace("client identified, type=%s, stream_name=%s, duration=%.2f",
|
srs_trace("client identified, type=%s, stream_name=%s, duration=%.2f",
|
||||||
srs_client_type_string(type).c_str(), req->stream.c_str(), req->duration);
|
srs_client_type_string(type).c_str(), req->stream.c_str(), req->duration);
|
||||||
|
|
||||||
|
// discovery vhost, resolve the vhost from config
|
||||||
|
SrsConfDirective* parsed_vhost = _srs_config->get_vhost(req->vhost);
|
||||||
|
if (parsed_vhost) {
|
||||||
|
req->vhost = parsed_vhost->arg0();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req->schema.empty() || req->vhost.empty() || req->port.empty() || req->app.empty()) {
|
||||||
|
ret = ERROR_RTMP_REQ_TCURL;
|
||||||
|
srs_error("discovery tcUrl failed. "
|
||||||
|
"tcUrl=%s, schema=%s, vhost=%s, port=%s, app=%s, ret=%d",
|
||||||
|
req->tcUrl.c_str(), req->schema.c_str(), req->vhost.c_str(), req->port.c_str(), req->app.c_str(), ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ret = check_vhost()) != ERROR_SUCCESS) {
|
||||||
|
srs_error("check vhost failed. ret=%d", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
srs_trace("connected stream, tcUrl=%s, pageUrl=%s, swfUrl=%s, schema=%s, vhost=%s, port=%s, app=%s, stream=%s, args=%s",
|
||||||
|
req->tcUrl.c_str(), req->pageUrl.c_str(), req->swfUrl.c_str(),
|
||||||
|
req->schema.c_str(), req->vhost.c_str(), req->port.c_str(),
|
||||||
|
req->app.c_str(), req->stream.c_str(), (req->args? "(obj)":"null"));
|
||||||
|
|
||||||
|
// do token traverse before serve it.
|
||||||
|
// @see https://github.com/ossrs/srs/pull/239
|
||||||
|
if (true) {
|
||||||
|
bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost);
|
||||||
|
bool edge_traverse = _srs_config->get_vhost_edge_token_traverse(req->vhost);
|
||||||
|
if (vhost_is_edge && edge_traverse) {
|
||||||
|
if ((ret = check_edge_token_traverse_auth()) != ERROR_SUCCESS) {
|
||||||
|
srs_warn("token auth failed, ret=%d", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// security check
|
// security check
|
||||||
if ((ret = security->check(type, ip, req)) != ERROR_SUCCESS) {
|
if ((ret = security->check(type, ip, req)) != ERROR_SUCCESS) {
|
||||||
srs_error("security check failed. ret=%d", ret);
|
srs_error("security check failed. ret=%d", ret);
|
||||||
|
|
|
@ -654,7 +654,7 @@ int SrsRtspConn::connect()
|
||||||
req = new SrsRequest();
|
req = new SrsRequest();
|
||||||
|
|
||||||
std::string schema, host, vhost, app, port, param;
|
std::string schema, host, vhost, app, port, param;
|
||||||
srs_discovery_tc_url(rtsp_tcUrl, schema, host, vhost, app, port, param);
|
srs_discovery_tc_url(rtsp_tcUrl, schema, host, vhost, app, rtsp_stream, port, param);
|
||||||
|
|
||||||
// generate output by template.
|
// generate output by template.
|
||||||
std::string output = output_template;
|
std::string output = output_template;
|
||||||
|
@ -671,7 +671,7 @@ int SrsRtspConn::connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_discovery_tc_url(req->tcUrl,
|
srs_discovery_tc_url(req->tcUrl,
|
||||||
req->schema, req->host, req->vhost, req->app, req->port,
|
req->schema, req->host, req->vhost, req->app, req->stream, req->port,
|
||||||
req->param);
|
req->param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
// current release version
|
// current release version
|
||||||
#define VERSION_MAJOR 2
|
#define VERSION_MAJOR 2
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 245
|
#define VERSION_REVISION 246
|
||||||
|
|
||||||
// generated by configure, only macros.
|
// generated by configure, only macros.
|
||||||
#include <srs_auto_headers.hpp>
|
#include <srs_auto_headers.hpp>
|
||||||
|
|
|
@ -482,7 +482,7 @@ int srs_librtmp_context_parse_uri(Context* context)
|
||||||
|
|
||||||
std::string schema;
|
std::string schema;
|
||||||
srs_discovery_tc_url(context->tcUrl,
|
srs_discovery_tc_url(context->tcUrl,
|
||||||
schema, context->host, context->vhost, context->app, context->port,
|
schema, context->host, context->vhost, context->app, context->stream, context->port,
|
||||||
context->param);
|
context->param);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -1236,7 +1236,7 @@ int SrsIngestSrsOutput::connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_discovery_tc_url(req->tcUrl,
|
srs_discovery_tc_url(req->tcUrl,
|
||||||
req->schema, req->host, req->vhost, req->app, req->port,
|
req->schema, req->host, req->vhost, req->app, req->stream, req->port,
|
||||||
req->param);
|
req->param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2515,7 +2515,7 @@ int SrsRtmpServer::connect_app(SrsRequest* req)
|
||||||
srs_info("get connect app message params success.");
|
srs_info("get connect app message params success.");
|
||||||
|
|
||||||
srs_discovery_tc_url(req->tcUrl,
|
srs_discovery_tc_url(req->tcUrl,
|
||||||
req->schema, req->host, req->vhost, req->app, req->port,
|
req->schema, req->host, req->vhost, req->app, req->stream, req->port,
|
||||||
req->param);
|
req->param);
|
||||||
req->strip();
|
req->strip();
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ using namespace std;
|
||||||
void srs_discovery_tc_url(
|
void srs_discovery_tc_url(
|
||||||
string tcUrl,
|
string tcUrl,
|
||||||
string& schema, string& host, string& vhost,
|
string& schema, string& host, string& vhost,
|
||||||
string& app, string& port, std::string& param
|
string& app, string& stream, string& port, std::string& param
|
||||||
) {
|
) {
|
||||||
size_t pos = std::string::npos;
|
size_t pos = std::string::npos;
|
||||||
std::string url = tcUrl;
|
std::string url = tcUrl;
|
||||||
|
@ -70,6 +70,7 @@ void srs_discovery_tc_url(
|
||||||
app = url;
|
app = url;
|
||||||
vhost = host;
|
vhost = host;
|
||||||
srs_vhost_resolve(vhost, app, param);
|
srs_vhost_resolve(vhost, app, param);
|
||||||
|
srs_vhost_resolve(vhost, stream, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void srs_vhost_resolve(string& vhost, string& app, string& param)
|
void srs_vhost_resolve(string& vhost, string& app, string& param)
|
||||||
|
|
|
@ -54,11 +54,14 @@ class ISrsProtocolReaderWriter;
|
||||||
* @param port, for example, 19350
|
* @param port, for example, 19350
|
||||||
* default to 1935 if not specified.
|
* default to 1935 if not specified.
|
||||||
* param param, for example, vhost=vhost.ossrs.net
|
* param param, for example, vhost=vhost.ossrs.net
|
||||||
|
* @remark The param stream is input and output param, that is:
|
||||||
|
* input: tcUrl+stream
|
||||||
|
* output: schema, host, vhost, app, stream, port, param
|
||||||
*/
|
*/
|
||||||
extern void srs_discovery_tc_url(
|
extern void srs_discovery_tc_url(
|
||||||
std::string tcUrl,
|
std::string tcUrl,
|
||||||
std::string& schema, std::string& host, std::string& vhost,
|
std::string& schema, std::string& host, std::string& vhost,
|
||||||
std::string& app, std::string& port, std::string& param
|
std::string& app, std::string& stream, std::string& port, std::string& param
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -461,40 +461,123 @@ VOID TEST(ProtocolUtilityTest, VhostResolve)
|
||||||
*/
|
*/
|
||||||
VOID TEST(ProtocolUtilityTest, DiscoveryTcUrl)
|
VOID TEST(ProtocolUtilityTest, DiscoveryTcUrl)
|
||||||
{
|
{
|
||||||
std::string tcUrl;
|
std::string tcUrl, schema, ip, vhost, app, stream, port, param;
|
||||||
std::string schema; std::string host; std::string vhost;
|
|
||||||
std::string app; std::string port; std::string param;
|
|
||||||
|
|
||||||
tcUrl = "rtmp://127.0.0.1:1935/live";
|
// general url
|
||||||
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port, param);
|
tcUrl = "rtmp://winlin.cn/live"; stream= "show";
|
||||||
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
EXPECT_STREQ("rtmp", schema.c_str());
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
EXPECT_STREQ("127.0.0.1", host.c_str());
|
EXPECT_STREQ("winlin.cn", ip.c_str());
|
||||||
EXPECT_STREQ("127.0.0.1", vhost.c_str());
|
EXPECT_STREQ("winlin.cn", vhost.c_str());
|
||||||
EXPECT_STREQ("live", app.c_str());
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("show", stream.c_str());
|
||||||
EXPECT_STREQ("1935", port.c_str());
|
EXPECT_STREQ("1935", port.c_str());
|
||||||
|
|
||||||
tcUrl = "rtmp://127.0.0.1:19351/live";
|
tcUrl = "rtmp://winlin.cn:19351/live"; stream= "show";
|
||||||
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port, param);
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
EXPECT_STREQ("rtmp", schema.c_str());
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
EXPECT_STREQ("127.0.0.1", host.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("19351", port.c_str());
|
||||||
|
|
||||||
|
tcUrl = "rtmp://winlin.cn/live"; stream= "show?key=abc";
|
||||||
|
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());
|
||||||
|
EXPECT_STREQ("?key=abc", param.c_str());
|
||||||
|
|
||||||
|
tcUrl = "rtmp://winlin.cn/live"; stream= "show?key=abc&&vhost=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_STREQ("1935", port.c_str());
|
||||||
|
EXPECT_STREQ("?key=abc&&vhost=demo.com", param.c_str());
|
||||||
|
|
||||||
|
// vhost in app
|
||||||
|
tcUrl = "rtmp://winlin.cn/live?key=abc"; 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());
|
||||||
|
EXPECT_STREQ("?key=abc", param.c_str());
|
||||||
|
|
||||||
|
tcUrl = "rtmp://winlin.cn/live?key=abc&&vhost=demo.com"; 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("demo.com", vhost.c_str());
|
||||||
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("show", stream.c_str());
|
||||||
|
EXPECT_STREQ("1935", port.c_str());
|
||||||
|
EXPECT_STREQ("?key=abc&&vhost=demo.com", param.c_str());
|
||||||
|
|
||||||
|
// without stream
|
||||||
|
tcUrl = "rtmp://winlin.cn/live"; stream="";
|
||||||
|
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("", stream.c_str());
|
||||||
|
EXPECT_STREQ("1935", port.c_str());
|
||||||
|
|
||||||
|
tcUrl = "rtmp://127.0.0.1:1935/live"; stream="";
|
||||||
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
|
EXPECT_STREQ("127.0.0.1", ip.c_str());
|
||||||
EXPECT_STREQ("127.0.0.1", vhost.c_str());
|
EXPECT_STREQ("127.0.0.1", vhost.c_str());
|
||||||
EXPECT_STREQ("live", app.c_str());
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("", stream.c_str());
|
||||||
|
EXPECT_STREQ("1935", port.c_str());
|
||||||
|
|
||||||
|
tcUrl = "rtmp://127.0.0.1:19351/live"; stream="";
|
||||||
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
|
EXPECT_STREQ("127.0.0.1", ip.c_str());
|
||||||
|
EXPECT_STREQ("127.0.0.1", vhost.c_str());
|
||||||
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("", stream.c_str());
|
||||||
EXPECT_STREQ("19351", port.c_str());
|
EXPECT_STREQ("19351", port.c_str());
|
||||||
|
|
||||||
tcUrl = "rtmp://127.0.0.1:19351/live?vhost=demo";
|
tcUrl = "rtmp://127.0.0.1:19351/live?vhost=demo"; stream="";
|
||||||
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port, param);
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
EXPECT_STREQ("rtmp", schema.c_str());
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
EXPECT_STREQ("127.0.0.1", host.c_str());
|
EXPECT_STREQ("127.0.0.1", ip.c_str());
|
||||||
EXPECT_STREQ("demo", vhost.c_str());
|
EXPECT_STREQ("demo", vhost.c_str());
|
||||||
EXPECT_STREQ("live", app.c_str());
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("", stream.c_str());
|
||||||
EXPECT_STREQ("19351", port.c_str());
|
EXPECT_STREQ("19351", port.c_str());
|
||||||
|
|
||||||
tcUrl = "rtmp://127.0.0.1:19351/live/show?vhost=demo";
|
// no vhost
|
||||||
srs_discovery_tc_url(tcUrl, schema, host, vhost, app, port, param);
|
tcUrl = "rtmp://127.0.0.1:19351/live"; stream= "show";
|
||||||
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
EXPECT_STREQ("rtmp", schema.c_str());
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
EXPECT_STREQ("127.0.0.1", host.c_str());
|
EXPECT_STREQ("127.0.0.1", ip.c_str());
|
||||||
|
EXPECT_STREQ("127.0.0.1", vhost.c_str());
|
||||||
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("show", stream.c_str());
|
||||||
|
EXPECT_STREQ("19351", port.c_str());
|
||||||
|
|
||||||
|
// ip and vhost
|
||||||
|
tcUrl = "rtmp://127.0.0.1:19351/live"; stream= "show?vhost=demo";
|
||||||
|
srs_discovery_tc_url(tcUrl, schema, ip, vhost, app, stream, port, param);
|
||||||
|
EXPECT_STREQ("rtmp", schema.c_str());
|
||||||
|
EXPECT_STREQ("127.0.0.1", ip.c_str());
|
||||||
EXPECT_STREQ("demo", vhost.c_str());
|
EXPECT_STREQ("demo", vhost.c_str());
|
||||||
EXPECT_STREQ("live/show", app.c_str());
|
EXPECT_STREQ("live", app.c_str());
|
||||||
|
EXPECT_STREQ("show", stream.c_str());
|
||||||
EXPECT_STREQ("19351", port.c_str());
|
EXPECT_STREQ("19351", port.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5405,7 +5488,7 @@ VOID TEST(ProtocolRTMPTest, RTMPRequest)
|
||||||
|
|
||||||
req.stream = "livestream";
|
req.stream = "livestream";
|
||||||
srs_discovery_tc_url("rtmp://std.ossrs.net/live",
|
srs_discovery_tc_url("rtmp://std.ossrs.net/live",
|
||||||
req.schema, req.host, req.vhost, req.app, req.port, param);
|
req.schema, req.host, req.vhost, req.app, req.stream, req.port, param);
|
||||||
req.strip();
|
req.strip();
|
||||||
EXPECT_STREQ("rtmp", req.schema.c_str());
|
EXPECT_STREQ("rtmp", req.schema.c_str());
|
||||||
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
||||||
|
@ -5415,7 +5498,7 @@ VOID TEST(ProtocolRTMPTest, RTMPRequest)
|
||||||
|
|
||||||
req.stream = "livestream";
|
req.stream = "livestream";
|
||||||
srs_discovery_tc_url("rtmp://s td.os srs.n et/li v e",
|
srs_discovery_tc_url("rtmp://s td.os srs.n et/li v e",
|
||||||
req.schema, req.host, req.vhost, req.app, req.port, param);
|
req.schema, req.host, req.vhost, req.app, req.stream, req.port, param);
|
||||||
req.strip();
|
req.strip();
|
||||||
EXPECT_STREQ("rtmp", req.schema.c_str());
|
EXPECT_STREQ("rtmp", req.schema.c_str());
|
||||||
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
||||||
|
@ -5425,7 +5508,7 @@ VOID TEST(ProtocolRTMPTest, RTMPRequest)
|
||||||
|
|
||||||
req.stream = "livestream";
|
req.stream = "livestream";
|
||||||
srs_discovery_tc_url("rtmp://s\ntd.o\rssrs.ne\nt/li\nve",
|
srs_discovery_tc_url("rtmp://s\ntd.o\rssrs.ne\nt/li\nve",
|
||||||
req.schema, req.host, req.vhost, req.app, req.port, param);
|
req.schema, req.host, req.vhost, req.app, req.stream, req.port, param);
|
||||||
req.strip();
|
req.strip();
|
||||||
EXPECT_STREQ("rtmp", req.schema.c_str());
|
EXPECT_STREQ("rtmp", req.schema.c_str());
|
||||||
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
||||||
|
@ -5435,7 +5518,7 @@ VOID TEST(ProtocolRTMPTest, RTMPRequest)
|
||||||
|
|
||||||
req.stream = "livestream";
|
req.stream = "livestream";
|
||||||
srs_discovery_tc_url("rtmp://std.ossrs.net/live ",
|
srs_discovery_tc_url("rtmp://std.ossrs.net/live ",
|
||||||
req.schema, req.host, req.vhost, req.app, req.port, param);
|
req.schema, req.host, req.vhost, req.app, req.stream, req.port, param);
|
||||||
req.strip();
|
req.strip();
|
||||||
EXPECT_STREQ("rtmp", req.schema.c_str());
|
EXPECT_STREQ("rtmp", req.schema.c_str());
|
||||||
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
EXPECT_STREQ("std.ossrs.net", req.host.c_str());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue