chiark / gitweb /
server/admin.c: Introduce `a_unlisten' to shut down the admin socket.
[tripe] / server / admin.c
index 5146fde4b72f495f6c47bf29db6dccee0be6782f..90ef4ef15f82749da5881d1e67c2a1a065a74ca9 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:  ---