server/admin.c: Introduce `a_unlisten' to shut down the admin socket.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 19 May 2018 19:13:11 +0000 (20:13 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 25 Jan 2019 12:10:32 +0000 (12:10 +0000)
server/admin.c
server/tripe.h

index 5146fde..90ef4ef 100644 (file)
@@ -564,8 +564,7 @@ void a_notify(const char *fmt, ...)
 
 void a_quit(void)
 {
-  close(sock.fd);
-  if (sockname) unlink(sockname);
+  a_unlisten();
   FOREACH_PEER(p, { p_destroy(p, 1); });
   ps_quit();
   exit(0);
@@ -2597,6 +2596,23 @@ again:
   sockname = name;
 }
 
+/* --- @a_unlisten@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Stops listening to the administration socket and removes it.
+ */
+
+void a_unlisten(void)
+{
+  if (!sockname) return;
+  sel_rmfile(&sock);
+  unlink(sockname);
+  close(sock.fd);
+}
+
 /* --- @a_switcherr@ --- *
  *
  * Arguments:  ---
index bd70bb8..9d15cb4 100644 (file)
@@ -1357,6 +1357,17 @@ extern void a_daemon(void);
 extern void a_listen(const char */*sock*/,
                     uid_t /*u*/, gid_t /*g*/, mode_t /*m*/);
 
+/* --- @a_unlisten@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Stops listening to the administration socket and removes it.
+ */
+
+extern void a_unlisten(void);
+
 /* --- @a_switcherr@ --- *
  *
  * Arguments:  ---