1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-12 11:21:52 +00:00

fix fms token traverse bug, always update the token by the latest valid client.

This commit is contained in:
winlin 2014-06-23 11:18:55 +08:00
parent 6c70e9192b
commit db253bc76b
4 changed files with 32 additions and 2 deletions

View file

@ -439,7 +439,14 @@ int SrsSource::find(SrsRequest* req, SrsSource** ppsource)
srs_info("create new source for url=%s, vhost=%s", stream_url.c_str(), vhost.c_str());
}
*ppsource = pool[stream_url];
// we always update the request of resource,
// for origin auth is on, the token in request maybe invalid,
// and we only need to update the token of request, it's simple.
if (true) {
SrsSource* source = pool[stream_url];
source->_req->update_auth(req);
*ppsource = source;
}
return ret;
}

View file

@ -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 "130"
#define VERSION_REVISION "131"
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
// server info.
#define RTMP_SIG_SRS_KEY "SRS"

View file

@ -108,6 +108,22 @@ SrsRequest* SrsRequest::copy()
return cp;
}
void SrsRequest::update_auth(SrsRequest* req)
{
pageUrl = req->pageUrl;
swfUrl = req->swfUrl;
tcUrl = req->tcUrl;
if (args) {
srs_freep(args);
}
if (req->args) {
args = req->args->copy()->to_object();
}
srs_info("update req of soruce for auth ok");
}
int SrsRequest::discovery_app()
{
int ret = ERROR_SUCCESS;

View file

@ -89,6 +89,13 @@ public:
* when reload it, the request maybe invalid, so need to copy it.
*/
virtual SrsRequest* copy();
/**
* update the auth info of request,
* to keep the current request ptr is ok,
* for many components use the ptr of request.
*/
virtual void update_auth(SrsRequest* req);
/**
* disconvery vhost/app from tcUrl.