[PATCH]: unlink legacy unix socket when unit starts

Александр Поволоцкий tarkhil at over.ru
Sun Apr 24 10:05:58 UTC 2022


Unlink socket that can be in use? I think it's not a good idea.

On 24.04.2022 12:25, shanlei at asiainfo.com wrote:
>
> hello,guys,
>
> We found if we add a unix socket listener, the file was left in disk 
> when unit got shutdown.
> If the unit starts again and load configuration from its state folder, 
> it would fail with error msg "file exists",
> so We think the proper process is to "delete the legacy unix socket 
> before start", and we present following patch:
>
>
> # HG changeset patch
> # User stdanley <shanlei at asiainfo.com>
> # Date 1650792235 -28800
> #      Sun Apr 24 17:23:55 2022 +0800
> # Node ID 29738840c393f12c7d7aa8f3959ed1655b39cd4d
> # Parent  8e06a879600e83af11345d023c53c2ca445cf82c
> unlink legacy unix socket file before binding.
>
> diff -r 8e06a879600e -r 29738840c393 src/nxt_main_process.c
> --- a/src/nxt_main_process.c    Tue Apr 12 04:16:00 2022 +0100
> +++ b/src/nxt_main_process.c    Sun Apr 24 17:23:55 2022 +0800
> @@ -1142,6 +1142,15 @@
>      }
>
>  #endif
> +#if (NXT_HAVE_UNIX_DOMAIN)
> +
> +    if (sa->u.sockaddr.sa_family == AF_UNIX
> +        && sa->type == SOCK_STREAM
> +        && sa->u.sockaddr_un.sun_path[0] != '\0') {
> +
> +        (void) unlink(sa->u.sockaddr_un.sun_path);
> +}
> +#endif
>
>      if (bind(s, &sa->u.sockaddr, sa->socklen) != 0) {
>          err = nxt_errno;
> _______________________________________________
> unit mailing list -- unit at nginx.org
> To unsubscribe send an email to unit-leave at nginx.org



More information about the unit mailing list