1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

SquashSRS3: Fix bug

This commit is contained in:
winlin 2021-05-12 21:48:11 +08:00
parent 8c5a435714
commit 996c7d5697
5 changed files with 15 additions and 8 deletions

View file

@ -76,7 +76,7 @@ SrsBufferCache::~SrsBufferCache()
srs_freep(req);
}
srs_error_t SrsBufferCache::update(SrsSource* s, SrsRequest* r)
srs_error_t SrsBufferCache::update_auth(SrsSource* s, SrsRequest* r)
{
srs_freep(req);
req = r->copy();
@ -527,7 +527,7 @@ SrsLiveStream::~SrsLiveStream()
srs_freep(req);
}
srs_error_t SrsLiveStream::update(SrsSource* s, SrsRequest* r)
srs_error_t SrsLiveStream::update_auth(SrsSource* s, SrsRequest* r)
{
source = s;
@ -953,9 +953,10 @@ srs_error_t SrsHttpStreamServer::http_mount(SrsSource* s, SrsRequest* r)
}
srs_trace("http: mount flv stream for sid=%s, mount=%s", sid.c_str(), mount.c_str());
} else {
// The entry exists, we reuse it and update the request of stream and cache.
entry = sflvs[sid];
entry->stream->update(s, r);
entry->cache->update(s, r);
entry->stream->update_auth(s, r);
entry->cache->update_auth(s, r);
}
if (entry->stream) {

View file

@ -46,7 +46,7 @@ private:
public:
SrsBufferCache(SrsSource* s, SrsRequest* r);
virtual ~SrsBufferCache();
virtual srs_error_t update(SrsSource* s, SrsRequest* r);
virtual srs_error_t update_auth(SrsSource* s, SrsRequest* r);
public:
virtual srs_error_t start();
virtual srs_error_t dump_cache(SrsConsumer* consumer, SrsRtmpJitterAlgorithm jitter);
@ -189,7 +189,7 @@ private:
public:
SrsLiveStream(SrsSource* s, SrsRequest* r, SrsBufferCache* c);
virtual ~SrsLiveStream();
virtual srs_error_t update(SrsSource* s, SrsRequest* r);
virtual srs_error_t update_auth(SrsSource* s, SrsRequest* r);
public:
virtual srs_error_t serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r);
private:

View file

@ -460,10 +460,14 @@ srs_error_t SrsStatistic::on_client(SrsContextId cid, SrsRequest* req, ISrsExpir
// got client.
client->conn = conn;
client->req = req;
client->type = type;
stream->nb_clients++;
vhost->nb_clients++;
// The req might be freed, in such as SrsLiveStream::update, so we must copy it.
// @see https://github.com/ossrs/srs/issues/2311
srs_freep(client->req);
client->req = req->copy();
return err;
}

View file

@ -24,6 +24,6 @@
#ifndef SRS_CORE_VERSION3_HPP
#define SRS_CORE_VERSION3_HPP
#define SRS_VERSION3_REVISION 161
#define SRS_VERSION3_REVISION 162
#endif