@@ -267,7 +267,6 @@ static ngx_int_t
267267ngx_rtmp_gop_cache_alloc_cache (ngx_rtmp_session_t  * s )
268268{
269269    ngx_rtmp_codec_ctx_t            * codec_ctx ;
270-     ngx_rtmp_core_srv_conf_t        * cscf ;
271270    ngx_rtmp_gop_cache_ctx_t        * ctx ;
272271    ngx_rtmp_gop_cache_t            * cache , * * iter ;
273272
@@ -281,11 +280,6 @@ ngx_rtmp_gop_cache_alloc_cache(ngx_rtmp_session_t *s)
281280        return  NGX_ERROR ;
282281    }
283282
284-     cscf  =  ngx_rtmp_get_module_srv_conf (s , ngx_rtmp_core_module );
285-     if  (cscf  ==  NULL ) {
286-         return  NGX_ERROR ;
287-     }
288- 
289283    if  (ctx -> free_cache ) {
290284        cache  =  ctx -> free_cache ;
291285        ctx -> free_cache  =  cache -> next ;
@@ -378,19 +372,18 @@ ngx_rtmp_gop_cache_cleanup(ngx_rtmp_session_t *s)
378372        ngx_rtmp_gop_cache_free_cache (s , cache );
379373    }
380374
381-     if  (ctx -> pool ) {
382-         ngx_destroy_pool (ctx -> pool );
383-         ctx -> pool  =  NULL ;
384-     }
385- 
386375    ctx -> video_seq_header  =  NULL ;
387376    ctx -> audio_seq_header  =  NULL ;
388377    ctx -> meta  =  NULL ;
389378
390-     ctx -> cache_tail  =  ctx -> cache_head  =  NULL ;
379+     if  (ctx -> cache_head ) {
380+         ctx -> cache_head -> next  =  ctx -> free_cache ;
381+         ctx -> free_cache  =  ctx -> cache_head ;
382+         ctx -> cache_head  =  NULL ;
383+     }
384+ 
385+     ctx -> cache_tail  =  NULL ;
391386    ctx -> gop_cache_count  =  0 ;
392-     ctx -> free_cache  =  NULL ;
393-     ctx -> free_frame  =  NULL ;
394387    ctx -> video_frame_in_all  =  0 ;
395388    ctx -> audio_frame_in_all  =  0 ;
396389}
@@ -720,10 +713,10 @@ ngx_rtmp_gop_cache_av(ngx_rtmp_session_t *s, ngx_rtmp_header_t *h,
720713    ngx_rtmp_live_ctx_t             * ctx ;
721714    ngx_rtmp_gop_cache_app_conf_t   * gacf ;
722715    ngx_rtmp_live_app_conf_t        * lacf ;
716+     ngx_rtmp_live_chunk_stream_t    * cs ;
723717    ngx_rtmp_header_t                ch ;
724718    ngx_uint_t                       prio ;
725719    ngx_uint_t                       csidx ;
726-     ngx_rtmp_live_chunk_stream_t    * cs ;
727720
728721    gacf  =  ngx_rtmp_get_module_app_conf (s , ngx_rtmp_gop_cache_module );
729722    if  (gacf  ==  NULL  ||  !gacf -> gop_cache ) {
@@ -851,6 +844,7 @@ ngx_rtmp_gop_cache_close_stream(ngx_rtmp_session_t *s,
851844    ngx_rtmp_close_stream_t  * v )
852845{
853846    ngx_rtmp_live_ctx_t             * ctx ;
847+     ngx_rtmp_gop_cache_ctx_t        * gctx ;
854848    ngx_rtmp_live_app_conf_t        * lacf ;
855849    ngx_rtmp_gop_cache_app_conf_t   * gacf ;
856850
@@ -873,6 +867,16 @@ ngx_rtmp_gop_cache_close_stream(ngx_rtmp_session_t *s,
873867        goto next ;
874868    }
875869
870+     gctx  =  ngx_rtmp_get_module_ctx (s , ngx_rtmp_gop_cache_module );
871+     if  (gctx  ==  NULL ) {
872+         goto next ;
873+     }
874+ 
875+     if  (gctx -> pool ) {
876+         ngx_destroy_pool (gctx -> pool );
877+         gctx -> pool  =  NULL ;
878+     }
879+ 
876880    ngx_rtmp_gop_cache_cleanup (s );
877881
878882next :
0 commit comments