@@ -351,6 +351,7 @@ ngx_http_flv_live_send_header(ngx_rtmp_session_t *s)
351351 ngx_str_t chunked_flv_header ;
352352 ngx_str_t consec_flv_header ;
353353 u_char chunked_flv_header_data [18 ];
354+ ngx_flag_t connection_header ;
354355
355356 /**
356357 * |F|L|V|ver|00000101|header_size|0|0|0|0|, ngx_http_flv_module.c
@@ -365,6 +366,9 @@ ngx_http_flv_live_send_header(ngx_rtmp_session_t *s)
365366 ngx_str_set (& r -> headers_out .content_type , "video/x-flv" );
366367
367368 /* fill HTTP header 'Connection' according to headers_in */
369+ r -> keepalive = 0 ;
370+
371+ connection_header = 0 ;
368372 part = & r -> headers_in .headers .part ;
369373 header = part -> elts ;
370374
@@ -384,18 +388,21 @@ ngx_http_flv_live_send_header(ngx_rtmp_session_t *s)
384388 }
385389
386390 if (ngx_strcasecmp (header [i ].key .data , (u_char * ) "connection" ) == 0 ) {
391+ connection_header = 1 ;
387392 if (ngx_strcasecmp (header [i ].value .data , (u_char * ) "keep-alive" )
388393 == 0 )
389394 {
390395 r -> keepalive = 1 ;
391- } else {
392- r -> keepalive = 0 ;
393396 }
394397
395398 break ;
396399 }
397400 }
398401
402+ if (!connection_header && r -> http_version == NGX_HTTP_VERSION_11 ) {
403+ r -> keepalive = 1 ;
404+ }
405+
399406 live_ctx = ngx_rtmp_get_module_ctx (s , ngx_rtmp_live_module );
400407 if (live_ctx && !live_ctx -> active ) {
401408 ngx_log_error (NGX_LOG_ERR , s -> connection -> log , 0 ,
@@ -991,9 +998,7 @@ ngx_http_flv_live_request(ngx_rtmp_session_t *s, ngx_rtmp_header_t *h,
991998
992999 ngx_http_flv_live_play_handler (& ctx -> play );
9931000
994- if (r -> main -> blocked == 0 ) {
995- r -> main -> blocked ++ ;
996- }
1001+ r -> main -> count ++ ;
9971002
9981003 return ctx -> error ? NGX_ERROR : NGX_OK ;
9991004 }
@@ -1171,9 +1176,7 @@ ngx_http_flv_live_play(ngx_rtmp_session_t *s, ngx_rtmp_play_t *v)
11711176 goto next ;
11721177 }
11731178
1174- if (r -> main -> blocked == 0 ) {
1175- r -> main -> blocked ++ ;
1176- }
1179+ r -> main -> count ++ ;
11771180
11781181#if (nginx_version >= 1013001 )
11791182 /**
@@ -1194,9 +1197,7 @@ ngx_http_flv_live_play(ngx_rtmp_session_t *s, ngx_rtmp_play_t *v)
11941197 /* join stream as a subscriber */
11951198
11961199 if (ngx_http_flv_live_join (s , v -> name , 0 ) == NGX_ERROR ) {
1197- if (r -> main -> blocked ) {
1198- r -> main -> blocked -- ;
1199- }
1200+ r -> main -> count -- ;
12001201
12011202 return NGX_ERROR ;
12021203 }
@@ -1224,9 +1225,7 @@ ngx_http_flv_live_close_http_request(ngx_rtmp_session_t *s)
12241225
12251226 r = s -> data ;
12261227 if (r && r -> connection && !r -> connection -> destroyed ) {
1227- if (r -> main -> blocked ) {
1228- r -> main -> blocked -- ;
1229- }
1228+ r -> main -> count -- ;
12301229
12311230 if (r -> chunked ) {
12321231 ngx_http_flv_live_send_tail (s );
@@ -1370,9 +1369,7 @@ ngx_http_flv_live_play_handler(ngx_event_t *ev)
13701369 (ngx_int_t ) v .duration , (ngx_int_t ) v .reset ,
13711370 (ngx_int_t ) v .silent );
13721371
1373- if (r -> main -> blocked ) {
1374- r -> blocked -- ;
1375- }
1372+ r -> main -> count -- ;
13761373
13771374 if (ngx_rtmp_play (s , & v ) != NGX_OK ) {
13781375 ctx -> error = 1 ;
0 commit comments