@@ -235,6 +235,45 @@ ngx_live_put_stream(ngx_live_stream_t *st)
235
235
++ lcf -> free_stream_count ;
236
236
}
237
237
238
+ ngx_relay_reconnect_t *
239
+ ngx_live_get_relay_reconnect ()
240
+ {
241
+ ngx_relay_reconnect_t * rc ;
242
+ ngx_live_conf_t * lcf ;
243
+
244
+ lcf = (ngx_live_conf_t * ) ngx_get_conf (ngx_cycle -> conf_ctx ,
245
+ ngx_live_module );
246
+
247
+ rc = lcf -> free_reconnect ;
248
+ if (rc == NULL ) {
249
+ rc = ngx_pcalloc (lcf -> pool , sizeof (ngx_relay_reconnect_t ));
250
+ ++ lcf -> alloc_reconnect_count ;
251
+ } else {
252
+ lcf -> free_reconnect = rc -> next ;
253
+ -- lcf -> free_reconnect_count ;
254
+ ngx_memzero (rc , sizeof (ngx_relay_reconnect_t ));
255
+ }
256
+
257
+ return rc ;
258
+ }
259
+
260
+ void
261
+ ngx_live_put_relay_reconnect (ngx_relay_reconnect_t * rc )
262
+ {
263
+ ngx_live_conf_t * lcf ;
264
+
265
+ lcf = (ngx_live_conf_t * ) ngx_get_conf (ngx_cycle -> conf_ctx ,
266
+ ngx_live_module );
267
+
268
+ if (rc -> reconnect .timer_set ) {
269
+ ngx_del_timer (& rc -> reconnect );
270
+ }
271
+
272
+ rc -> next = lcf -> free_reconnect ;
273
+ lcf -> free_reconnect = rc ;
274
+ ++ lcf -> free_reconnect_count ;
275
+ }
276
+
238
277
ngx_live_server_t *
239
278
ngx_live_create_server (ngx_str_t * serverid )
240
279
{
@@ -330,6 +369,7 @@ ngx_live_delete_stream(ngx_str_t *serverid, ngx_str_t *stream)
330
369
{
331
370
ngx_live_server_t * * psrv ;
332
371
ngx_live_stream_t * * pst , * st ;
372
+ ngx_relay_reconnect_t * rc ;
333
373
334
374
psrv = ngx_live_find_server (serverid );
335
375
if (* psrv == NULL ) {
@@ -345,6 +385,19 @@ ngx_live_delete_stream(ngx_str_t *serverid, ngx_str_t *stream)
345
385
}
346
386
347
387
st = * pst ;
388
+
389
+ while (st -> publish_reconnect ) {
390
+ rc = st -> publish_reconnect ;
391
+ st -> publish_reconnect = st -> publish_reconnect -> next ;
392
+ ngx_live_put_relay_reconnect (rc );
393
+ }
394
+
395
+ while (st -> play_reconnect ) {
396
+ rc = st -> play_reconnect ;
397
+ st -> play_reconnect = st -> play_reconnect -> next ;
398
+ ngx_live_put_relay_reconnect (rc );
399
+ }
400
+
348
401
* pst = st -> next ;
349
402
ngx_live_put_stream (st );
350
403
-- (* psrv )-> n_stream ;
@@ -405,63 +458,47 @@ ngx_live_delete_ctx(ngx_rtmp_session_t *s)
405
458
}
406
459
}
407
460
408
- #if (NGX_DEBUG )
409
- static void
410
- ngx_live_print_stream (ngx_live_stream_t * st , size_t idx )
411
- {
412
- ngx_log_error (NGX_LOG_ERR , ngx_cycle -> log , 0 ,
413
- "\t\t%z Stream(%p %s), next:%p" , idx , st , st -> name , st -> next );
414
- }
415
461
416
- static void
417
- ngx_live_print_server ( ngx_live_server_t * srv , size_t idx )
462
+ ngx_chain_t *
463
+ ngx_live_state ( ngx_http_request_t * r )
418
464
{
419
465
ngx_live_conf_t * lcf ;
420
- ngx_live_stream_t * st ;
421
- size_t i ;
466
+ ngx_chain_t * cl ;
467
+ ngx_buf_t * b ;
468
+ size_t len ;
422
469
423
470
lcf = (ngx_live_conf_t * ) ngx_get_conf (ngx_cycle -> conf_ctx ,
424
471
ngx_live_module );
425
472
426
- ngx_log_error (NGX_LOG_ERR , ngx_cycle -> log , 0 ,
427
- "\t%z Server(%p %s) n_stream:%ui, deleted:%d, next:%p" ,
428
- idx , srv , srv -> serverid , srv -> n_stream , srv -> deleted , srv -> next );
429
-
430
- for (i = 0 ; i < lcf -> stream_buckets ; ++ i ) {
431
- st = srv -> streams [i ];
432
- while (st ) {
433
- ngx_live_print_stream (st , i );
434
- st = st -> next ;
435
- }
436
- }
437
- }
438
- #endif
439
-
440
- void
441
- ngx_live_print ()
442
- {
443
- #if (NGX_DEBUG )
444
- ngx_live_conf_t * lcf ;
445
- ngx_live_server_t * srv ;
446
- size_t i ;
447
-
448
- lcf = (ngx_live_conf_t * ) ngx_get_conf (ngx_cycle -> conf_ctx ,
449
- ngx_live_module );
450
473
451
- ngx_log_error (NGX_LOG_ERR , ngx_cycle -> log , 0 ,
452
- "free server, alloc %ui, free %ui" ,
453
- lcf -> alloc_server_count , lcf -> free_server_count );
474
+ len = sizeof ("##########ngx live state##########\n" ) - 1
475
+ + sizeof ("ngx_live nalloc server: \n" ) - 1 + NGX_OFF_T_LEN
476
+ + sizeof ("ngx_live nfree server: \n" ) - 1 + NGX_OFF_T_LEN
477
+ + sizeof ("ngx_live nalloc stream: \n" ) - 1 + NGX_OFF_T_LEN
478
+ + sizeof ("ngx_live nfree stream: \n" ) - 1 + NGX_OFF_T_LEN
479
+ + sizeof ("ngx_live nalloc reconnect: \n" ) - 1 + NGX_OFF_T_LEN
480
+ + sizeof ("ngx_live nfree reconnect: \n" ) - 1 + NGX_OFF_T_LEN ;
454
481
455
- ngx_log_error (NGX_LOG_ERR , ngx_cycle -> log , 0 ,
456
- "free stream, alloc %ui, free %ui" ,
457
- lcf -> alloc_stream_count , lcf -> free_stream_count );
482
+ cl = ngx_alloc_chain_link (r -> pool );
483
+ if (cl == NULL ) {
484
+ return NULL ;
485
+ }
486
+ cl -> next = NULL ;
458
487
459
- for (i = 0 ; i < lcf -> server_buckets ; ++ i ) {
460
- srv = lcf -> servers [i ];
461
- while (srv ) {
462
- ngx_live_print_server (srv , i );
463
- srv = srv -> next ;
464
- }
488
+ b = ngx_create_temp_buf (r -> pool , len );
489
+ if (b == NULL ) {
490
+ return NULL ;
465
491
}
466
- #endif
492
+ cl -> buf = b ;
493
+
494
+ b -> last = ngx_snprintf (b -> last , len ,
495
+ "##########ngx live state##########\n"
496
+ "ngx_live nalloc server: %ui\nngx_live nfree server: %ui\n"
497
+ "ngx_live nalloc stream: %ui\nngx_live nfree stream: %ui\n"
498
+ "ngx_live nalloc reconnect: %ui\nngx_live nfree reconnect: %ui\n" ,
499
+ lcf -> alloc_server_count , lcf -> free_server_count ,
500
+ lcf -> alloc_stream_count , lcf -> free_stream_count ,
501
+ lcf -> alloc_reconnect_count , lcf -> free_reconnect_count );
502
+
503
+ return cl ;
467
504
}
0 commit comments