From 51489f83de93840f2771fd65938658cd25f5a01c Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 13 Oct 2020 17:54:42 +0200 Subject: [PATCH] event "auth user changed", optimize core_user_changed_groups() to only perform local_group_set() when there are changes needed. found while working on https://github.com/opnsense/core/issues/4411 --- src/etc/inc/plugins.inc.d/core.inc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/etc/inc/plugins.inc.d/core.inc b/src/etc/inc/plugins.inc.d/core.inc index 5aabe06a0..933043aaa 100644 --- a/src/etc/inc/plugins.inc.d/core.inc +++ b/src/etc/inc/plugins.inc.d/core.inc @@ -281,10 +281,10 @@ function core_user_changed_groups($verbose = false, $username) $current_groups = explode(" ", $out[0]); } foreach ($config['system']['group'] as $group) { - if ( - in_array($group['name'], $current_groups) || - (!empty($group['member']) && in_array($user['uid'], $group['member'])) - ) { + $in_group = !empty($group['member']) && in_array($user['uid'], $group['member']); + $to_remove = in_array($group['name'], $current_groups) && !$in_group; + $to_add = !in_array($group['name'], $current_groups) && $in_group; + if ($to_remove || $to_add) { local_group_set($group); } }