0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 03:52:28 +02:00

client-connect: Move adding inotify watch into its own function

This makes the code a more readable and also prepares reusing
the function for client-connect return files

Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Antonio Quartulli <a@unstable.cc>
Message-Id: <20200711093655.23686-10-arne@rfc2549.org>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg20284.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
Arne Schwabe 2020-07-11 11:36:51 +02:00 committed by Gert Doering
parent 4d500451e8
commit 708d1694c7

View File

@ -2552,6 +2552,32 @@ multi_schedule_context_wakeup(struct multi_context *m, struct multi_instance *mi
compute_wakeup_sigma(&mi->context.c2.timeval));
}
#if defined(ENABLE_ASYNC_PUSH) && defined(ENABLE_DEF_AUTH)
static void
add_inotify_file_watch(struct multi_context *m, struct multi_instance *mi,
int inotify_fd, const char *file)
{
/* watch acf file */
long watch_descriptor = inotify_add_watch(inotify_fd, file,
IN_CLOSE_WRITE | IN_ONESHOT);
if (watch_descriptor >= 0)
{
if (mi->inotify_watch != -1)
{
hash_remove(m->inotify_watchers,
(void *) (unsigned long)mi->inotify_watch);
}
hash_add(m->inotify_watchers, (const uintptr_t *)watch_descriptor,
mi, true);
mi->inotify_watch = watch_descriptor;
}
else
{
msg(M_NONFATAL | M_ERRNO, "MULTI: inotify_add_watch error");
}
}
#endif /* if defined(ENABLE_ASYNC_PUSH) && defined(ENABLE_DEF_AUTH) */
/*
* Figure instance-specific timers, convert
* earliest to absolute time in mi->wakeup,
@ -2589,21 +2615,8 @@ multi_process_post(struct multi_context *m, struct multi_instance *mi, const uns
if (ks && ks->auth_control_file && was_unauthenticated
&& (ks->authenticated == KS_AUTH_DEFERRED))
{
/* watch acf file */
long watch_descriptor = inotify_add_watch(m->top.c2.inotify_fd, ks->auth_control_file, IN_CLOSE_WRITE | IN_ONESHOT);
if (watch_descriptor >= 0)
{
if (mi->inotify_watch != -1)
{
hash_remove(m->inotify_watchers, (void *) (unsigned long)mi->inotify_watch);
}
hash_add(m->inotify_watchers, (const uintptr_t *)watch_descriptor, mi, true);
mi->inotify_watch = watch_descriptor;
}
else
{
msg(M_NONFATAL | M_ERRNO, "MULTI: inotify_add_watch error");
}
add_inotify_file_watch(m, mi, m->top.c2.inotify_fd,
ks->auth_control_file);
}
#endif