winlin

merge from srs2

@@ -79,6 +79,17 @@ SrsBufferCache::~SrsBufferCache() @@ -79,6 +79,17 @@ SrsBufferCache::~SrsBufferCache()
79 srs_freep(req); 79 srs_freep(req);
80 } 80 }
81 81
  82 +int SrsBufferCache::update(SrsSource* s, SrsRequest* r)
  83 +{
  84 + int ret = ERROR_SUCCESS;
  85 +
  86 + srs_freep(req);
  87 + req = r->copy();
  88 + source = s;
  89 +
  90 + return ret;
  91 +}
  92 +
82 int SrsBufferCache::start() 93 int SrsBufferCache::start()
83 { 94 {
84 return pthread->start(); 95 return pthread->start();
@@ -452,6 +463,17 @@ SrsLiveStream::~SrsLiveStream() @@ -452,6 +463,17 @@ SrsLiveStream::~SrsLiveStream()
452 srs_freep(req); 463 srs_freep(req);
453 } 464 }
454 465
  466 +int SrsLiveStream::update(SrsSource* s, SrsRequest* r)
  467 +{
  468 + int ret = ERROR_SUCCESS;
  469 +
  470 + srs_freep(req);
  471 + source = s;
  472 + req = r->copy();
  473 +
  474 + return ret;
  475 +}
  476 +
455 int SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) 477 int SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
456 { 478 {
457 int ret = ERROR_SUCCESS; 479 int ret = ERROR_SUCCESS;
@@ -840,6 +862,8 @@ int SrsHttpStreamServer::http_mount(SrsSource* s, SrsRequest* r) @@ -840,6 +862,8 @@ int SrsHttpStreamServer::http_mount(SrsSource* s, SrsRequest* r)
840 srs_trace("http: mount flv stream for vhost=%s, mount=%s", sid.c_str(), mount.c_str()); 862 srs_trace("http: mount flv stream for vhost=%s, mount=%s", sid.c_str(), mount.c_str());
841 } else { 863 } else {
842 entry = sflvs[sid]; 864 entry = sflvs[sid];
  865 + entry->stream->update(s, r);
  866 + entry->cache->update(s, r);
843 } 867 }
844 868
845 if (entry->stream) { 869 if (entry->stream) {
@@ -51,6 +51,7 @@ private: @@ -51,6 +51,7 @@ private:
51 public: 51 public:
52 SrsBufferCache(SrsSource* s, SrsRequest* r); 52 SrsBufferCache(SrsSource* s, SrsRequest* r);
53 virtual ~SrsBufferCache(); 53 virtual ~SrsBufferCache();
  54 + virtual int update(SrsSource* s, SrsRequest* r);
54 public: 55 public:
55 virtual int start(); 56 virtual int start();
56 virtual int dump_cache(SrsConsumer* consumer, SrsRtmpJitterAlgorithm jitter); 57 virtual int dump_cache(SrsConsumer* consumer, SrsRtmpJitterAlgorithm jitter);
@@ -227,6 +228,7 @@ private: @@ -227,6 +228,7 @@ private:
227 public: 228 public:
228 SrsLiveStream(SrsSource* s, SrsRequest* r, SrsBufferCache* c); 229 SrsLiveStream(SrsSource* s, SrsRequest* r, SrsBufferCache* c);
229 virtual ~SrsLiveStream(); 230 virtual ~SrsLiveStream();
  231 + virtual int update(SrsSource* s, SrsRequest* r);
230 public: 232 public:
231 virtual int serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r); 233 virtual int serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r);
232 private: 234 private: