fix the forward loop detect bug. change to 0.9.34

pull/133/head
winlin 11 years ago
parent e02293d94d
commit ebf1139582

@ -97,17 +97,27 @@ int SrsForwarder::on_publish(SrsRequest* req, std::string forward_server)
tc_url += req->app;
// dead loop check
std::string source_ep = req->vhost;
std::string source_ep = "rtmp://";
source_ep += req->host;
source_ep += ":";
source_ep += req->port;
std::string dest_ep = vhost;
source_ep += "?vhost=";
source_ep += req->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 += s_port;
dest_ep += "?vhost=";
dest_ep += vhost;
if (source_ep == dest_ep) {
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);
return ret;
}

@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version
#define VERSION_MAJOR "0"
#define VERSION_MINOR "9"
#define VERSION_REVISION "33"
#define VERSION_REVISION "34"
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
// server info.
#define RTMP_SIG_SRS_KEY "srs"

@ -87,6 +87,7 @@ SrsRequest* SrsRequest::copy()
cp->app = app;
cp->objectEncoding = objectEncoding;
cp->pageUrl = pageUrl;
cp->host = host;
cp->port = port;
cp->schema = schema;
cp->stream = stream;
@ -111,19 +112,20 @@ int SrsRequest::discovery_app()
}
if ((pos = url.find("/")) != std::string::npos) {
vhost = url.substr(0, pos);
url = url.substr(vhost.length() + 1);
srs_verbose("discovery vhost=%s", vhost.c_str());
host = url.substr(0, pos);
url = url.substr(host.length() + 1);
srs_verbose("discovery host=%s", host.c_str());
}
port = RTMP_DEFAULT_PORT;
if ((pos = vhost.find(":")) != std::string::npos) {
port = vhost.substr(pos + 1);
vhost = vhost.substr(0, pos);
srs_verbose("discovery vhost=%s, port=%s", vhost.c_str(), port.c_str());
if ((pos = host.find(":")) != std::string::npos) {
port = host.substr(pos + 1);
host = host.substr(0, pos);
srs_verbose("discovery host=%s, port=%s", host.c_str(), port.c_str());
}
app = url;
vhost = host;
srs_vhost_resolve(vhost, app);
strip();

@ -46,8 +46,9 @@ class SrsPlayPacket;
/**
* the original request from client.
*/
struct SrsRequest
class SrsRequest
{
public:
/**
* tcUrl: rtmp://request_vhost:port/app/stream
* support pass vhost in query string, such as:
@ -61,6 +62,7 @@ struct SrsRequest
std::string schema;
std::string vhost;
std::string host;
std::string port;
std::string app;
std::string stream;

Loading…
Cancel
Save