winlin

fix #391, copy request for async call.

@@ -562,6 +562,7 @@ Supported operating systems and hardware: @@ -562,6 +562,7 @@ Supported operating systems and hardware:
562 562
563 ### SRS 2.0 history 563 ### SRS 2.0 history
564 564
  565 +* v2.0, 2015-05-23, fix [#391](https://github.com/simple-rtmp-server/srs/issues/391) copy request for async call.
565 * v2.0, 2015-05-22, fix [#397](https://github.com/simple-rtmp-server/srs/issues/397) the USER_HZ maybe not 100. 2.0.165 566 * v2.0, 2015-05-22, fix [#397](https://github.com/simple-rtmp-server/srs/issues/397) the USER_HZ maybe not 100. 2.0.165
566 * v2.0, 2015-05-22, for [#400](https://github.com/simple-rtmp-server/srs/issues/400), parse when got entire http header, by feilong. 2.0.164. 567 * v2.0, 2015-05-22, for [#400](https://github.com/simple-rtmp-server/srs/issues/400), parse when got entire http header, by feilong. 2.0.164.
567 * v2.0, 2015-05-19, merge from bravo system, add the rtmfp to bms(commercial srs). 2.0.163. 568 * v2.0, 2015-05-19, merge from bravo system, add the rtmfp to bms(commercial srs). 2.0.163.
@@ -498,12 +498,13 @@ int SrsFlvSegment::on_reload_vhost_dvr(std::string /*vhost*/) @@ -498,12 +498,13 @@ int SrsFlvSegment::on_reload_vhost_dvr(std::string /*vhost*/)
498 498
499 SrsDvrAsyncCallOnDvr::SrsDvrAsyncCallOnDvr(SrsRequest* r, string p) 499 SrsDvrAsyncCallOnDvr::SrsDvrAsyncCallOnDvr(SrsRequest* r, string p)
500 { 500 {
501 - req = r; 501 + req = r->copy();
502 path = p; 502 path = p;
503 } 503 }
504 504
505 SrsDvrAsyncCallOnDvr::~SrsDvrAsyncCallOnDvr() 505 SrsDvrAsyncCallOnDvr::~SrsDvrAsyncCallOnDvr()
506 { 506 {
  507 + srs_freep(req);
507 } 508 }
508 509
509 int SrsDvrAsyncCallOnDvr::call() 510 int SrsDvrAsyncCallOnDvr::call()
@@ -172,7 +172,7 @@ void SrsHlsSegment::update_duration(int64_t current_frame_dts) @@ -172,7 +172,7 @@ void SrsHlsSegment::update_duration(int64_t current_frame_dts)
172 172
173 SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(SrsRequest* r, string p, string t, string m, string mu, int s, double d) 173 SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(SrsRequest* r, string p, string t, string m, string mu, int s, double d)
174 { 174 {
175 - req = r; 175 + req = r->copy();
176 path = p; 176 path = p;
177 ts_url = t; 177 ts_url = t;
178 m3u8 = m; 178 m3u8 = m;
@@ -183,6 +183,7 @@ SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(SrsRequest* r, string p, string t, st @@ -183,6 +183,7 @@ SrsDvrAsyncCallOnHls::SrsDvrAsyncCallOnHls(SrsRequest* r, string p, string t, st
183 183
184 SrsDvrAsyncCallOnHls::~SrsDvrAsyncCallOnHls() 184 SrsDvrAsyncCallOnHls::~SrsDvrAsyncCallOnHls()
185 { 185 {
  186 + srs_freep(req);
186 } 187 }
187 188
188 int SrsDvrAsyncCallOnHls::call() 189 int SrsDvrAsyncCallOnHls::call()
@@ -221,12 +222,13 @@ string SrsDvrAsyncCallOnHls::to_string() @@ -221,12 +222,13 @@ string SrsDvrAsyncCallOnHls::to_string()
221 222
222 SrsDvrAsyncCallOnHlsNotify::SrsDvrAsyncCallOnHlsNotify(SrsRequest* r, string u) 223 SrsDvrAsyncCallOnHlsNotify::SrsDvrAsyncCallOnHlsNotify(SrsRequest* r, string u)
223 { 224 {
224 - req = r; 225 + req = r->copy();
225 ts_url = u; 226 ts_url = u;
226 } 227 }
227 228
228 SrsDvrAsyncCallOnHlsNotify::~SrsDvrAsyncCallOnHlsNotify() 229 SrsDvrAsyncCallOnHlsNotify::~SrsDvrAsyncCallOnHlsNotify()
229 { 230 {
  231 + srs_freep(req);
230 } 232 }
231 233
232 int SrsDvrAsyncCallOnHlsNotify::call() 234 int SrsDvrAsyncCallOnHlsNotify::call()