From 11586be23b78ec23a6a22cc7fa9f8970a3935782 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 19 May 2018 20:13:11 +0100 Subject: [PATCH] server/admin.c: Introduce `a_unlisten' to shut down the admin socket. --- server/admin.c | 20 ++++++++++++++++++-- server/tripe.h | 11 +++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/server/admin.c b/server/admin.c index 5146fde4..90ef4ef1 100644 --- a/server/admin.c +++ b/server/admin.c @@ -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: --- diff --git a/server/tripe.h b/server/tripe.h index bd70bb84..9d15cb45 100644 --- a/server/tripe.h +++ b/server/tripe.h @@ -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: --- -- 2.11.0