mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
fix the forward loop detect bug. change to 0.9.34
This commit is contained in:
parent
e02293d94d
commit
ebf1139582
4 changed files with 26 additions and 12 deletions
|
@ -97,17 +97,27 @@ int SrsForwarder::on_publish(SrsRequest* req, std::string forward_server)
|
||||||
tc_url += req->app;
|
tc_url += req->app;
|
||||||
|
|
||||||
// dead loop check
|
// dead loop check
|
||||||
std::string source_ep = req->vhost;
|
std::string source_ep = "rtmp://";
|
||||||
|
source_ep += req->host;
|
||||||
source_ep += ":";
|
source_ep += ":";
|
||||||
source_ep += req->port;
|
source_ep += req->port;
|
||||||
|
source_ep += "?vhost=";
|
||||||
|
source_ep += req->vhost;
|
||||||
|
|
||||||
std::string dest_ep = vhost;
|
std::string dest_ep = "rtmp://";
|
||||||
|
if (forward_server == "127.0.0.1") {
|
||||||
|
dest_ep += req->host;
|
||||||
|
} else {
|
||||||
|
dest_ep += forward_server;
|
||||||
|
}
|
||||||
dest_ep += ":";
|
dest_ep += ":";
|
||||||
dest_ep += s_port;
|
dest_ep += s_port;
|
||||||
|
dest_ep += "?vhost=";
|
||||||
|
dest_ep += vhost;
|
||||||
|
|
||||||
if (source_ep == dest_ep) {
|
if (source_ep == dest_ep) {
|
||||||
ret = ERROR_SYSTEM_FORWARD_LOOP;
|
ret = ERROR_SYSTEM_FORWARD_LOOP;
|
||||||
srs_warn("farder loop detected. src=%s, dest=%s, ret=%d",
|
srs_warn("forward loop detected. src=%s, dest=%s, ret=%d",
|
||||||
source_ep.c_str(), dest_ep.c_str(), ret);
|
source_ep.c_str(), dest_ep.c_str(), ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 "0"
|
#define VERSION_MAJOR "0"
|
||||||
#define VERSION_MINOR "9"
|
#define VERSION_MINOR "9"
|
||||||
#define VERSION_REVISION "33"
|
#define VERSION_REVISION "34"
|
||||||
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
|
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
|
||||||
// server info.
|
// server info.
|
||||||
#define RTMP_SIG_SRS_KEY "srs"
|
#define RTMP_SIG_SRS_KEY "srs"
|
||||||
|
|
|
@ -87,6 +87,7 @@ SrsRequest* SrsRequest::copy()
|
||||||
cp->app = app;
|
cp->app = app;
|
||||||
cp->objectEncoding = objectEncoding;
|
cp->objectEncoding = objectEncoding;
|
||||||
cp->pageUrl = pageUrl;
|
cp->pageUrl = pageUrl;
|
||||||
|
cp->host = host;
|
||||||
cp->port = port;
|
cp->port = port;
|
||||||
cp->schema = schema;
|
cp->schema = schema;
|
||||||
cp->stream = stream;
|
cp->stream = stream;
|
||||||
|
@ -111,19 +112,20 @@ int SrsRequest::discovery_app()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pos = url.find("/")) != std::string::npos) {
|
if ((pos = url.find("/")) != std::string::npos) {
|
||||||
vhost = url.substr(0, pos);
|
host = url.substr(0, pos);
|
||||||
url = url.substr(vhost.length() + 1);
|
url = url.substr(host.length() + 1);
|
||||||
srs_verbose("discovery vhost=%s", vhost.c_str());
|
srs_verbose("discovery host=%s", host.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
port = RTMP_DEFAULT_PORT;
|
port = RTMP_DEFAULT_PORT;
|
||||||
if ((pos = vhost.find(":")) != std::string::npos) {
|
if ((pos = host.find(":")) != std::string::npos) {
|
||||||
port = vhost.substr(pos + 1);
|
port = host.substr(pos + 1);
|
||||||
vhost = vhost.substr(0, pos);
|
host = host.substr(0, pos);
|
||||||
srs_verbose("discovery vhost=%s, port=%s", vhost.c_str(), port.c_str());
|
srs_verbose("discovery host=%s, port=%s", host.c_str(), port.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
app = url;
|
app = url;
|
||||||
|
vhost = host;
|
||||||
srs_vhost_resolve(vhost, app);
|
srs_vhost_resolve(vhost, app);
|
||||||
strip();
|
strip();
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,9 @@ class SrsPlayPacket;
|
||||||
/**
|
/**
|
||||||
* the original request from client.
|
* the original request from client.
|
||||||
*/
|
*/
|
||||||
struct SrsRequest
|
class SrsRequest
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
/**
|
/**
|
||||||
* tcUrl: rtmp://request_vhost:port/app/stream
|
* tcUrl: rtmp://request_vhost:port/app/stream
|
||||||
* support pass vhost in query string, such as:
|
* support pass vhost in query string, such as:
|
||||||
|
@ -61,6 +62,7 @@ struct SrsRequest
|
||||||
|
|
||||||
std::string schema;
|
std::string schema;
|
||||||
std::string vhost;
|
std::string vhost;
|
||||||
|
std::string host;
|
||||||
std::string port;
|
std::string port;
|
||||||
std::string app;
|
std::string app;
|
||||||
std::string stream;
|
std::string stream;
|
||||||
|
|
Loading…
Reference in a new issue