Fix adaptername shutdown

An inotify watch descriptor isn't a file descriptor, so don't
treat it as such and remove it properly.
This commit is contained in:
Bastien Nocera 2012-04-28 16:16:56 +01:00 committed by Johan Hedberg
parent 0c8e425395
commit a521540ca0

View File

@ -52,7 +52,7 @@
#define MACHINE_INFO_FILE "machine-info"
static GIOChannel *inotify = NULL;
static int watch_fd = -1;
static int watch_d = -1;
/* This file is part of systemd's hostnamed functionality:
* http://0pointer.de/public/systemd-man/machine-info.html
@ -292,8 +292,8 @@ static int adaptername_init(void)
mask |= IN_MOVED_FROM;
mask |= IN_MOVED_TO;
watch_fd = inotify_add_watch(inot_fd, MACHINE_INFO_DIR, mask);
if (watch_fd < 0) {
watch_d = inotify_add_watch(inot_fd, MACHINE_INFO_DIR, mask);
if (watch_d < 0) {
error("Failed to setup watch for '%s'", MACHINE_INFO_DIR);
close(inot_fd);
return 0;
@ -310,8 +310,11 @@ static int adaptername_init(void)
static void adaptername_exit(void)
{
if (watch_fd >= 0)
close(watch_fd);
if (watch_d >= 0 && inotify != NULL) {
int inot_fd = g_io_channel_unix_get_fd(inotify);
inotify_rm_watch(inot_fd, watch_d);
}
if (inotify != NULL) {
g_io_channel_shutdown(inotify, FALSE, NULL);
g_io_channel_unref(inotify);