diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index e8063b85e..0acec6134 100755 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -1450,6 +1450,12 @@ int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata return ret; } + // when already got metadata, drop when reduce sequence header. + bool drop_for_reduce = false; + if (cache_metadata && _srs_config->get_reduce_sequence_header(_req->vhost)) { + drop_for_reduce = true; + } + // create a shared ptr message. srs_freep(cache_metadata); cache_metadata = new SrsSharedPtrMessage(); @@ -1463,10 +1469,6 @@ int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata srs_verbose("initialize shared ptr metadata success."); // copy to all consumer - bool drop_for_reduce = false; - if (cache_metadata && _srs_config->get_reduce_sequence_header(_req->vhost)) { - drop_for_reduce = true; - } if (!drop_for_reduce) { std::vector::iterator it; for (it = consumers.begin(); it != consumers.end(); ++it) {