| 
1 | 1 | 
 
  | 
2 | 2 | /*  | 
3 |  | - * Copyright (C) Roman Arutyunyan  | 
 | 3 | + * Copyright (C) Roman Arutyunyan   | 
 | 4 | + * Copyright (C) Winshining   | 
4 | 5 |  */  | 
5 | 6 | 
 
  | 
6 | 7 | 
 
  | 
@@ -337,6 +338,9 @@ ngx_rtmp_relay_create_connection(ngx_rtmp_conf_ctx_t *cctx, ngx_str_t* name,  | 
337 | 338 |     ngx_int_t                       rc;  | 
338 | 339 |     ngx_str_t                       v, *uri;  | 
339 | 340 |     u_char                         *first, *last, *p;  | 
 | 341 | +#if (NGX_HAVE_UNIX_DOMAIN)  | 
 | 342 | +    u_char                         *client;  | 
 | 343 | +#endif  | 
340 | 344 | 
 
  | 
341 | 345 |     racf = ngx_rtmp_get_module_app_conf(cctx, ngx_rtmp_relay_module);  | 
342 | 346 | 
 
  | 
@@ -461,7 +465,25 @@ ngx_rtmp_relay_create_connection(ngx_rtmp_conf_ctx_t *cctx, ngx_str_t* name,  | 
461 | 465 |     }  | 
462 | 466 |     c = pc->connection;  | 
463 | 467 |     c->pool = pool;  | 
464 |  | -    c->addr_text = rctx->url;  | 
 | 468 | + | 
 | 469 | +#if (NGX_HAVE_UNIX_DOMAIN)  | 
 | 470 | +    if (addr->sockaddr->sa_family == AF_UNIX) {  | 
 | 471 | +        client = ngx_pcalloc(pool, rctx->url.len + 8);  | 
 | 472 | +        if (client == NULL) {  | 
 | 473 | +            return NULL;  | 
 | 474 | +        }  | 
 | 475 | + | 
 | 476 | +        *ngx_cpymem(client, rctx->url.data,  | 
 | 477 | +                    ngx_strlen(rctx->url.data)) = 0;  | 
 | 478 | + | 
 | 479 | +        p = (u_char *) ngx_strchr(client, '.');  | 
 | 480 | +        *ngx_snprintf(p + 1, client + rctx->url.len + 8 - (p + 1), "%i",  | 
 | 481 | +                      ngx_process_slot) = 0;  | 
 | 482 | + | 
 | 483 | +        c->addr_text.data = client;  | 
 | 484 | +        c->addr_text.len = ngx_strlen(client);  | 
 | 485 | +    }  | 
 | 486 | +#endif  | 
465 | 487 | 
 
  | 
466 | 488 |     addr_conf = ngx_pcalloc(pool, sizeof(ngx_rtmp_addr_conf_t));  | 
467 | 489 |     if (addr_conf == NULL) {  | 
 | 
0 commit comments