@@ -309,6 +309,7 @@ ngx_rtmp_auto_push_reconnect(ngx_event_t *ev)
309
309
u_char * p ;
310
310
ngx_str_t * u ;
311
311
ngx_pid_t pid ;
312
+ char * pname ;
312
313
313
314
ngx_log_debug0 (NGX_LOG_DEBUG_RTMP , s -> connection -> log , 0 ,
314
315
"auto_push: reconnect" );
@@ -346,6 +347,20 @@ ngx_rtmp_auto_push_reconnect(ngx_event_t *ev)
346
347
continue ;
347
348
}
348
349
350
+ /*
351
+ * This is a dirty way to skip "cache manager" and
352
+ * "cache loader" processes when pushing streams.
353
+ */
354
+
355
+ pname = ngx_processes [n ].name ;
356
+ if (ngx_strstr (pname , "cache" )) {
357
+ ngx_log_debug4 (NGX_LOG_DEBUG_RTMP , s -> connection -> log , 0 ,
358
+ "auto_push: skip process slot=%i pid=%i "
359
+ "name='%s' pname='%s'" ,
360
+ n , (ngx_int_t ) pid , ctx -> name , pname );
361
+ continue ;
362
+ }
363
+
349
364
if (* slot ) {
350
365
continue ;
351
366
}
@@ -373,10 +388,10 @@ ngx_rtmp_auto_push_reconnect(ngx_event_t *ev)
373
388
at .flash_ver .data = flash_ver ;
374
389
at .flash_ver .len = p - flash_ver ;
375
390
376
- ngx_log_debug4 (NGX_LOG_DEBUG_RTMP , s -> connection -> log , 0 ,
391
+ ngx_log_debug5 (NGX_LOG_DEBUG_RTMP , s -> connection -> log , 0 ,
377
392
"auto_push: connect slot=%i pid=%i socket='%s' "
378
- "name='%s'" ,
379
- n , (ngx_int_t ) pid , path , ctx -> name );
393
+ "name='%s' pname='%s' " ,
394
+ n , (ngx_int_t ) pid , path , ctx -> name , pname );
380
395
381
396
if (ngx_rtmp_relay_push (s , & name , & at ) == NGX_OK ) {
382
397
* slot = 1 ;
@@ -385,8 +400,8 @@ ngx_rtmp_auto_push_reconnect(ngx_event_t *ev)
385
400
386
401
ngx_log_error (NGX_LOG_ERR , s -> connection -> log , 0 ,
387
402
"auto_push: connect failed: slot=%i pid=%i socket='%s'"
388
- "url='%V' name='%s'" ,
389
- n , (ngx_int_t ) pid , path , u , ctx -> name );
403
+ "url='%V' name='%s' pname='%s' " ,
404
+ n , (ngx_int_t ) pid , path , u , ctx -> name , pname );
390
405
391
406
if (!ctx -> push_evt .timer_set ) {
392
407
ngx_add_timer (& ctx -> push_evt , apcf -> push_reconnect );
0 commit comments