From 68a1656e0780a504e0e9bc1ce97d0c33fa22738f Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 2 Aug 2018 09:17:49 +0800 Subject: [PATCH] Fix #1031, Always use vhost in stream query, the unify uri. 3.0.35 --- README.md | 1 + trunk/src/app/srs_app_caster_flv.cpp | 2 +- trunk/src/app/srs_app_edge.cpp | 16 ++--- trunk/src/app/srs_app_forward.cpp | 40 +---------- trunk/src/app/srs_app_mpegts_udp.cpp | 2 +- trunk/src/app/srs_app_ng_exec.cpp | 2 +- trunk/src/app/srs_app_rtsp.cpp | 2 +- trunk/src/app/srs_app_source.cpp | 4 +- trunk/src/core/srs_core.hpp | 2 +- trunk/src/libs/srs_librtmp.cpp | 18 ++--- trunk/src/main/srs_main_ingest_hls.cpp | 2 +- trunk/src/protocol/srs_protocol_utility.cpp | 78 +++++++++++---------- trunk/src/protocol/srs_protocol_utility.hpp | 32 ++++----- trunk/src/protocol/srs_rtmp_stack.cpp | 18 ++--- trunk/src/protocol/srs_rtmp_stack.hpp | 4 +- trunk/src/service/srs_service_rtmp_conn.cpp | 28 ++------ trunk/src/service/srs_service_rtmp_conn.hpp | 4 +- trunk/src/utest/srs_utest_protocol.cpp | 6 +- 18 files changed, 102 insertions(+), 159 deletions(-) diff --git a/README.md b/README.md index 2af9b3438..55bfb91cd 100755 --- a/README.md +++ b/README.md @@ -184,6 +184,7 @@ Please select according to languages: ### V3 changes +* v3.0, 2018-08-02, Always use vhost in stream query, the unify uri. 3.0.35 * v3.0, 2018-08-02, For [#1031][bug #1031], SRS edge support douyu.com. 3.0.34 * v3.0, 2018-07-22, Replace hex to string to match MIT license. 3.0.33 * v3.0, 2018-07-22, Replace base64 to match MIT license. 3.0.32 diff --git a/trunk/src/app/srs_app_caster_flv.cpp b/trunk/src/app/srs_app_caster_flv.cpp index 639eeea20..98a7c8520 100644 --- a/trunk/src/app/srs_app_caster_flv.cpp +++ b/trunk/src/app/srs_app_caster_flv.cpp @@ -202,7 +202,7 @@ srs_error_t SrsDynamicHttpConn::do_proxy(ISrsHttpResponseReader* rr, SrsFlvDecod return srs_error_wrap(err, "connect %s failed, cto=%" PRId64 ", sto=%" PRId64, output.c_str(), cto, sto); } - if ((err = sdk->publish()) != srs_success) { + if ((err = sdk->publish(SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE)) != srs_success) { return srs_error_wrap(err, "publish"); } diff --git a/trunk/src/app/srs_app_edge.cpp b/trunk/src/app/srs_app_edge.cpp index 490472fc3..fe4102524 100644 --- a/trunk/src/app/srs_app_edge.cpp +++ b/trunk/src/app/srs_app_edge.cpp @@ -110,7 +110,7 @@ srs_error_t SrsEdgeRtmpUpstream::connect(SrsRequest* r, SrsLbRoundRobin* lb) std::string vhost = _srs_config->get_vhost_edge_transform_vhost(req->vhost); vhost = srs_string_replace(vhost, "[vhost]", req->vhost); - url = srs_generate_rtmp_url(server, port, vhost, req->app, req->stream); + url = srs_generate_rtmp_url(server, port, req->host, vhost, req->app, req->stream, req->param); } srs_freep(sdk); @@ -122,7 +122,7 @@ srs_error_t SrsEdgeRtmpUpstream::connect(SrsRequest* r, SrsLbRoundRobin* lb) return srs_error_wrap(err, "edge pull %s failed, cto=%" PRId64 ", sto=%" PRId64, url.c_str(), cto, sto); } - if ((err = sdk->play()) != srs_success) { + if ((err = sdk->play(_srs_config->get_chunk_size(req->vhost))) != srs_success) { return srs_error_wrap(err, "edge pull %s stream failed", url.c_str()); } @@ -469,15 +469,7 @@ srs_error_t SrsEdgeForwarder::start() std::string vhost = _srs_config->get_vhost_edge_transform_vhost(req->vhost); vhost = srs_string_replace(vhost, "[vhost]", req->vhost); - url = srs_generate_rtmp_url(server, port, vhost, req->app, req->stream); - } - - // Pass params in stream, @see https://github.com/ossrs/srs/issues/1031#issuecomment-409745733 - if (!req->param.empty()) { - if (req->param.find("?") != 0) { - url += "?"; - } - url += req->param; + url = srs_generate_rtmp_url(server, port, req->host, vhost, req->app, req->stream, req->param); } // open socket. @@ -490,7 +482,7 @@ srs_error_t SrsEdgeForwarder::start() return srs_error_wrap(err, "sdk connect %s failed, cto=%" PRId64 ", sto=%" PRId64, url.c_str(), cto, sto); } - if ((err = sdk->publish()) != srs_success) { + if ((err = sdk->publish(_srs_config->get_chunk_size(req->vhost))) != srs_success) { return srs_error_wrap(err, "sdk publish"); } diff --git a/trunk/src/app/srs_app_forward.cpp b/trunk/src/app/srs_app_forward.cpp index 1f542fc27..a39ecb881 100755 --- a/trunk/src/app/srs_app_forward.cpp +++ b/trunk/src/app/srs_app_forward.cpp @@ -94,42 +94,6 @@ srs_error_t SrsForwarder::on_publish() { srs_error_t err = srs_success; - // discovery the server port and tcUrl from req and ep_forward. - std::string server; - std::string tcUrl; - int port = SRS_CONSTS_RTMP_DEFAULT_PORT; - if (true) { - // parse host:port from hostport. - srs_parse_hostport(ep_forward, server, port); - - // generate tcUrl - tcUrl = srs_generate_tc_url(server, req->vhost, req->app, port, req->param); - } - - // dead loop check - std::string source_ep = "rtmp://"; - source_ep += req->host; - source_ep += ":"; - source_ep += req->port; - source_ep += "?vhost="; - source_ep += req->vhost; - - std::string dest_ep = "rtmp://"; - if (ep_forward == SRS_CONSTS_LOCALHOST) { - dest_ep += req->host; - } else { - dest_ep += server; - } - dest_ep += ":"; - dest_ep += port; - dest_ep += "?vhost="; - dest_ep += req->vhost; - - if (source_ep == dest_ep) { - return srs_error_new(ERROR_SYSTEM_FORWARD_LOOP, "forward loop detected. src=%s, dest=%s", source_ep.c_str(), dest_ep.c_str()); - } - srs_trace("start forward %s to %s, tcUrl=%s, stream=%s", source_ep.c_str(), dest_ep.c_str(), tcUrl.c_str(), req->stream.c_str()); - srs_freep(trd); trd = new SrsSTCoroutine("forward", this); if ((err = trd->start()) != srs_success) { @@ -245,7 +209,7 @@ srs_error_t SrsForwarder::do_cycle() srs_parse_hostport(ep_forward, server, port); // generate url - url = srs_generate_rtmp_url(server, port, req->vhost, req->app, req->stream); + url = srs_generate_rtmp_url(server, port, req->host, req->vhost, req->app, req->stream, req->param); } srs_freep(sdk); @@ -257,7 +221,7 @@ srs_error_t SrsForwarder::do_cycle() return srs_error_wrap(err, "sdk connect url=%s, cto=%" PRId64 ", sto=%" PRId64, url.c_str(), cto, sto); } - if ((err = sdk->publish()) != srs_success) { + if ((err = sdk->publish(_srs_config->get_chunk_size(req->vhost))) != srs_success) { return srs_error_wrap(err, "sdk publish"); } diff --git a/trunk/src/app/srs_app_mpegts_udp.cpp b/trunk/src/app/srs_app_mpegts_udp.cpp index cf37c82dd..cdc86f476 100644 --- a/trunk/src/app/srs_app_mpegts_udp.cpp +++ b/trunk/src/app/srs_app_mpegts_udp.cpp @@ -626,7 +626,7 @@ srs_error_t SrsMpegtsOverUdp::connect() return srs_error_wrap(err, "connect %s failed, cto=%" PRId64 ", sto=%" PRId64, output.c_str(), cto, sto); } - if ((err = sdk->publish()) != srs_success) { + if ((err = sdk->publish(SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE)) != srs_success) { close(); return srs_error_wrap(err, "publish"); } diff --git a/trunk/src/app/srs_app_ng_exec.cpp b/trunk/src/app/srs_app_ng_exec.cpp index c5f94f2bb..545644518 100644 --- a/trunk/src/app/srs_app_ng_exec.cpp +++ b/trunk/src/app/srs_app_ng_exec.cpp @@ -221,7 +221,7 @@ string SrsNgExec::parse(SrsRequest* req, string tmpl) output = srs_string_replace(output, "[pageUrl]", req->pageUrl); if (output.find("[url]") != string::npos) { - string url = srs_generate_rtmp_url(req->host, req->port, req->vhost, req->app, req->stream); + string url = srs_generate_rtmp_url(req->host, req->port, req->host, req->vhost, req->app, req->stream, req->param); output = srs_string_replace(output, "[url]", url); } diff --git a/trunk/src/app/srs_app_rtsp.cpp b/trunk/src/app/srs_app_rtsp.cpp index 3c46ab9e6..bcbf1f916 100644 --- a/trunk/src/app/srs_app_rtsp.cpp +++ b/trunk/src/app/srs_app_rtsp.cpp @@ -661,7 +661,7 @@ srs_error_t SrsRtspConn::connect() } // publish. - if ((err = sdk->publish()) != srs_success) { + if ((err = sdk->publish(SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE)) != srs_success) { close(); return srs_error_wrap(err, "publish %s failed", url.c_str()); } diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index 3219c4fdb..fb47c6d61 100755 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -1482,8 +1482,8 @@ srs_error_t SrsOriginHub::create_forwarders() } // TODO: FIXME: support queue size. - //double queue_size = _srs_config->get_queue_length(req->vhost); - //forwarder->set_queue_size(queue_size); + double queue_size = _srs_config->get_queue_length(req->vhost); + forwarder->set_queue_size(queue_size); if ((err = forwarder->on_publish()) != srs_success) { return srs_error_wrap(err, "start forwarder failed, vhost=%s, app=%s, stream=%s, forward-to=%s", diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 8104f6907..e4dcce25f 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -27,7 +27,7 @@ // current release version #define VERSION_MAJOR 3 #define VERSION_MINOR 0 -#define VERSION_REVISION 34 +#define VERSION_REVISION 35 // generated by configure, only macros. #include diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp index 9bb0f3f95..824610d1c 100644 --- a/trunk/src/libs/srs_librtmp.cpp +++ b/trunk/src/libs/srs_librtmp.cpp @@ -750,16 +750,12 @@ extern "C"{ string tcUrl; switch(context->schema) { + // For SRS3, only use one format url. case srs_url_schema_normal: - tcUrl=srs_generate_normal_tc_url(context->ip, context->vhost, context->app, context->port, context->param); - break; case srs_url_schema_via: - tcUrl=srs_generate_via_tc_url(context->ip, context->vhost, context->app, context->port, context->param); - break; case srs_url_schema_vis: case srs_url_schema_vis2: - tcUrl=srs_generate_vis_tc_url(context->ip, context->vhost, context->app, context->port, context->param); - break; + tcUrl = srs_generate_tc_url(context->ip, context->vhost, context->app, context->port); default: break; } @@ -823,7 +819,10 @@ extern "C"{ return ret; } - if ((err = context->rtmp->play(context->stream, context->stream_id)) != srs_success) { + // Pass params in stream, @see https://github.com/ossrs/srs/issues/1031#issuecomment-409745733 + string stream = srs_generate_stream_with_query(context->host, context->vhost, context->stream, context->param); + + if ((err = context->rtmp->play(stream, context->stream_id, SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE)) != srs_success) { ret = srs_error_code(err); srs_freep(err); return ret; @@ -840,7 +839,10 @@ extern "C"{ srs_assert(rtmp != NULL); Context* context = (Context*)rtmp; - if ((err = context->rtmp->fmle_publish(context->stream, context->stream_id)) != srs_success) { + // Pass params in stream, @see https://github.com/ossrs/srs/issues/1031#issuecomment-409745733 + string stream = srs_generate_stream_with_query(context->host, context->vhost, context->stream, context->param); + + if ((err = context->rtmp->fmle_publish(stream, context->stream_id)) != srs_success) { ret = srs_error_code(err); srs_freep(err); return ret; diff --git a/trunk/src/main/srs_main_ingest_hls.cpp b/trunk/src/main/srs_main_ingest_hls.cpp index a17c6946b..65a321111 100644 --- a/trunk/src/main/srs_main_ingest_hls.cpp +++ b/trunk/src/main/srs_main_ingest_hls.cpp @@ -1289,7 +1289,7 @@ int SrsIngestHlsOutput::connect() } // publish. - if ((err = sdk->publish()) != srs_success) { + if ((err = sdk->publish(SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE)) != srs_success) { // TODO: FIXME: Use error ret = srs_error_code(err); srs_freep(err); diff --git a/trunk/src/protocol/srs_protocol_utility.cpp b/trunk/src/protocol/srs_protocol_utility.cpp index 64592d697..11ee6486c 100644 --- a/trunk/src/protocol/srs_protocol_utility.cpp +++ b/trunk/src/protocol/srs_protocol_utility.cpp @@ -151,43 +151,59 @@ void srs_random_generate(char* bytes, int size) } } -string srs_generate_tc_url(string ip, string vhost, string app, int port, string param) +string srs_generate_tc_url(string host, string vhost, string app, int port) { string tcUrl = "rtmp://"; if (vhost == SRS_CONSTS_RTMP_DEFAULT_VHOST) { - tcUrl += ip; + tcUrl += host; } else { tcUrl += vhost; } if (port != SRS_CONSTS_RTMP_DEFAULT_PORT) { - tcUrl += ":"; - tcUrl += srs_int2str(port); + tcUrl += ":" + srs_int2str(port); } - tcUrl += "/"; - tcUrl += app; - if (!param.empty()) { - tcUrl += "?" + param; - } + tcUrl += "/" + app; return tcUrl; } -string srs_generate_normal_tc_url(string ip, string vhost, string app, int port, string param) +string srs_generate_stream_with_query(string host, string vhost, string stream, string param) { - return "rtmp://" + vhost + ":" + srs_int2str(port) + "/" + app + (param.empty() ? "" : "?" + param); -} - -string srs_generate_via_tc_url(string ip, string vhost, string app, int port, string param) -{ - return "rtmp://" + ip + ":" + srs_int2str(port) + "/" + vhost + "/" + app + (param.empty() ? "" : "?" + param); -} - -string srs_generate_vis_tc_url(string ip, string vhost, string app, int port, string param) -{ - return "rtmp://" + ip + ":" + srs_int2str(port) + "/" + app + (param.empty() ? "" : "?" + param); + string url = stream; + string query = param; + + // If no vhost in param, try to append one. + string guessVhost; + if (query.find("vhost=") == string::npos) { + if (vhost != SRS_CONSTS_RTMP_DEFAULT_VHOST) { + guessVhost = vhost; + } else if (!srs_is_ipv4(host)) { + guessVhost = host; + } + } + + // Well, if vhost exists, always append in query string. + if (!guessVhost.empty()) { + query += "&vhost=" + guessVhost; + } + + // Remove the start & when param is empty. + srs_string_trim_start(query, "&"); + + // Prefix query with ?. + if (!srs_string_starts_with(query, "?")) { + url += "?"; + } + + // Append query to url. + if (!query.empty()) { + url += query; + } + + return url; } template @@ -287,22 +303,12 @@ void srs_parse_rtmp_url(string url, string& tcUrl, string& stream) } } -string srs_generate_rtmp_url(string server, int port, string vhost, string app, string stream) +string srs_generate_rtmp_url(string server, int port, string host, string vhost, string app, string stream, string param) { - std::stringstream ss; - - ss << "rtmp://" << server << ":" << std::dec << port << "/" << app; - - // when default or server is vhost, donot specifies the vhost in params. - if (SRS_CONSTS_RTMP_DEFAULT_VHOST != vhost && server != vhost) { - ss << "...vhost..." << vhost; - } - - if (!stream.empty()) { - ss << "/" << stream; - } - - return ss.str(); + string tcUrl = "rtmp://" + server + ":" + srs_int2str(port) + "/" + app; + string streamWithQuery = srs_generate_stream_with_query(host, vhost, stream, param); + string url = tcUrl + "/" + streamWithQuery; + return url; } srs_error_t srs_write_large_iovs(ISrsProtocolReaderWriter* skt, iovec* iovs, int size, ssize_t* pnwrite) diff --git a/trunk/src/protocol/srs_protocol_utility.hpp b/trunk/src/protocol/srs_protocol_utility.hpp index 79a8e2f79..349a16f4f 100644 --- a/trunk/src/protocol/srs_protocol_utility.hpp +++ b/trunk/src/protocol/srs_protocol_utility.hpp @@ -71,28 +71,16 @@ extern void srs_parse_query_string(std::string q, std::map& vs, std::string separator); +// Whether domain is an IPv4 address. +extern bool srs_is_ipv4(std::string domain); + #endif diff --git a/trunk/src/protocol/srs_rtmp_stack.cpp b/trunk/src/protocol/srs_rtmp_stack.cpp index 88c2a7bce..683c72653 100644 --- a/trunk/src/protocol/srs_rtmp_stack.cpp +++ b/trunk/src/protocol/srs_rtmp_stack.cpp @@ -2053,7 +2053,7 @@ srs_error_t SrsRtmpClient::create_stream(int& stream_id) return err; } -srs_error_t SrsRtmpClient::play(string stream, int stream_id) +srs_error_t SrsRtmpClient::play(string stream, int stream_id, int chunk_size) { srs_error_t err = srs_success; @@ -2081,27 +2081,27 @@ srs_error_t SrsRtmpClient::play(string stream, int stream_id) } // SetChunkSize - if (true) { + if (chunk_size != SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE) { SrsSetChunkSizePacket* pkt = new SrsSetChunkSizePacket(); - pkt->chunk_size = SRS_CONSTS_RTMP_SRS_CHUNK_SIZE; + pkt->chunk_size = chunk_size; if ((err = protocol->send_and_free_packet(pkt, 0)) != srs_success) { - return srs_error_wrap(err, "send set chunk size failed. stream=%s, chunk_size=%d", stream.c_str(), SRS_CONSTS_RTMP_SRS_CHUNK_SIZE); + return srs_error_wrap(err, "send set chunk size failed. stream=%s, chunk_size=%d", stream.c_str(), chunk_size); } } return err; } -srs_error_t SrsRtmpClient::publish(string stream, int stream_id) +srs_error_t SrsRtmpClient::publish(string stream, int stream_id, int chunk_size) { srs_error_t err = srs_success; // SetChunkSize - if (true) { + if (chunk_size != SRS_CONSTS_RTMP_PROTOCOL_CHUNK_SIZE) { SrsSetChunkSizePacket* pkt = new SrsSetChunkSizePacket(); - pkt->chunk_size = SRS_CONSTS_RTMP_SRS_CHUNK_SIZE; + pkt->chunk_size = chunk_size; if ((err = protocol->send_and_free_packet(pkt, 0)) != srs_success) { - return srs_error_wrap(err, "send set chunk size failed. stream=%s, chunk_size=%d", stream.c_str(), SRS_CONSTS_RTMP_SRS_CHUNK_SIZE); + return srs_error_wrap(err, "send set chunk size failed. stream=%s, chunk_size=%d", stream.c_str(), chunk_size); } } @@ -2407,7 +2407,7 @@ srs_error_t SrsRtmpServer::redirect(SrsRequest* r, string host, int port, bool& srs_error_t err = srs_success; if (true) { - string url = srs_generate_rtmp_url(host, port, r->vhost, r->app, ""); + string url = srs_generate_rtmp_url(host, port, r->host, r->vhost, r->app, r->stream, r->param); SrsAmf0Object* ex = SrsAmf0Any::object(); ex->set("code", SrsAmf0Any::number(302)); diff --git a/trunk/src/protocol/srs_rtmp_stack.hpp b/trunk/src/protocol/srs_rtmp_stack.hpp index 617d6e300..ed1947457 100644 --- a/trunk/src/protocol/srs_rtmp_stack.hpp +++ b/trunk/src/protocol/srs_rtmp_stack.hpp @@ -729,12 +729,12 @@ public: /** * start play stream. */ - virtual srs_error_t play(std::string stream, int stream_id); + virtual srs_error_t play(std::string stream, int stream_id, int chunk_size); /** * start publish stream. use flash publish workflow: * connect-app => create-stream => flash-publish */ - virtual srs_error_t publish(std::string stream, int stream_id); + virtual srs_error_t publish(std::string stream, int stream_id, int chunk_size); /** * start publish stream. use FMLE publish workflow: * connect-app => FMLE publish diff --git a/trunk/src/service/srs_service_rtmp_conn.cpp b/trunk/src/service/srs_service_rtmp_conn.cpp index d22c2ca1f..266a21c91 100644 --- a/trunk/src/service/srs_service_rtmp_conn.cpp +++ b/trunk/src/service/srs_service_rtmp_conn.cpp @@ -134,7 +134,7 @@ srs_error_t SrsBasicRtmpClient::do_connect_app(string local_ip, bool debug) // generate the tcUrl std::string param = ""; std::string target_vhost = req->vhost; - std::string tc_url = srs_generate_tc_url(req->host, req->vhost, req->app, req->port, param); + std::string tc_url = srs_generate_tc_url(req->host, req->vhost, req->app, req->port); // replace the tcUrl in request, // which will replace the tc_url in client.connect_app(). @@ -150,43 +150,29 @@ srs_error_t SrsBasicRtmpClient::do_connect_app(string local_ip, bool debug) return err; } -srs_error_t SrsBasicRtmpClient::publish() +srs_error_t SrsBasicRtmpClient::publish(int chunk_size) { srs_error_t err = srs_success; - string stream = req->stream; - // Pass params in stream, @see https://github.com/ossrs/srs/issues/1031#issuecomment-409745733 - if (!req->param.empty()) { - if (req->param.find("?") != 0) { - stream += "?"; - } - stream += req->param; - } + string stream = srs_generate_stream_with_query(req->host, req->vhost, req->stream, req->param); // publish. - if ((err = client->publish(stream, stream_id)) != srs_success) { + if ((err = client->publish(stream, stream_id, chunk_size)) != srs_success) { return srs_error_wrap(err, "publish failed, stream=%s, stream_id=%d", stream.c_str(), stream_id); } return err; } -srs_error_t SrsBasicRtmpClient::play() +srs_error_t SrsBasicRtmpClient::play(int chunk_size) { srs_error_t err = srs_success; - string stream = req->stream; - // Pass params in stream, @see https://github.com/ossrs/srs/issues/1031#issuecomment-409745733 - if (!req->param.empty()) { - if (req->param.find("?") != 0) { - stream += "?"; - } - stream += req->param; - } + string stream = srs_generate_stream_with_query(req->host, req->vhost, req->stream, req->param); - if ((err = client->play(stream, stream_id)) != srs_success) { + if ((err = client->play(stream, stream_id, chunk_size)) != srs_success) { return srs_error_wrap(err, "connect with server failed, stream=%s, stream_id=%d", stream.c_str(), stream_id); } diff --git a/trunk/src/service/srs_service_rtmp_conn.hpp b/trunk/src/service/srs_service_rtmp_conn.hpp index 6f9233df3..a8995814b 100644 --- a/trunk/src/service/srs_service_rtmp_conn.hpp +++ b/trunk/src/service/srs_service_rtmp_conn.hpp @@ -74,8 +74,8 @@ protected: virtual srs_error_t connect_app(); virtual srs_error_t do_connect_app(std::string local_ip, bool debug); public: - virtual srs_error_t publish(); - virtual srs_error_t play(); + virtual srs_error_t publish(int chunk_size); + virtual srs_error_t play(int chunk_size); virtual void kbps_sample(const char* label, int64_t age); virtual void kbps_sample(const char* label, int64_t age, int msgs); virtual int sid(); diff --git a/trunk/src/utest/srs_utest_protocol.cpp b/trunk/src/utest/srs_utest_protocol.cpp index 3979cd351..ec50d29e9 100644 --- a/trunk/src/utest/srs_utest_protocol.cpp +++ b/trunk/src/utest/srs_utest_protocol.cpp @@ -559,15 +559,15 @@ VOID TEST(ProtocolUtilityTest, GenerateTcUrl) string ip; string vhost; string app; int port; string tcUrl; string param; ip = "127.0.0.1"; vhost = "__defaultVhost__"; app = "live"; port = 1935; - tcUrl = srs_generate_tc_url(ip, vhost, app, port, param); + tcUrl = srs_generate_tc_url(ip, vhost, app, port); EXPECT_STREQ("rtmp://127.0.0.1/live", tcUrl.c_str()); ip = "127.0.0.1"; vhost = "demo"; app = "live"; port = 1935; - tcUrl = srs_generate_tc_url(ip, vhost, app, port, param); + tcUrl = srs_generate_tc_url(ip, vhost, app, port); EXPECT_STREQ("rtmp://demo/live", tcUrl.c_str()); ip = "127.0.0.1"; vhost = "demo"; app = "live"; port = 19351; - tcUrl = srs_generate_tc_url(ip, vhost, app, port, param); + tcUrl = srs_generate_tc_url(ip, vhost, app, port); EXPECT_STREQ("rtmp://demo:19351/live", tcUrl.c_str()); }