[PATCH]: unlink legacy unix socket when unit starts

shanlei at asiainfo.com shanlei at asiainfo.com
Sun Apr 24 09:25:03 UTC 2022


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;



More information about the unit mailing list