about summary refs log tree commit diff
path: root/nixos/modules/system/activation
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2018-11-14 03:25:45 +0100
committerLinus Heckemann <git@sphalerite.org>2019-11-25 14:43:49 +0100
commit89806e95363f06869c9de18586e32c8ef65bd2fd (patch)
tree24ead4cd8cc1d9b61fa47a5b38f1a20b3991374f /nixos/modules/system/activation
parente3e3bd61f8f530dec5f560e76db4788899bbb942 (diff)
downloadnixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.tar
nixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.tar.gz
nixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.tar.bz2
nixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.tar.lz
nixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.tar.xz
nixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.tar.zst
nixlib-89806e95363f06869c9de18586e32c8ef65bd2fd.zip
nixos/switch-to-configuration: restart changed socket units
Previously, socket units wouldn't be restarted if they were
changed. To restart the socket, the service the socket is attached
to needs to be stopped first before the socket can be restarted.
Diffstat (limited to 'nixos/modules/system/activation')
-rw-r--r--nixos/modules/system/activation/switch-to-configuration.pl12
1 files changed, 11 insertions, 1 deletions
diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl
index 641cf9faadc9..12a80a12d19f 100644
--- a/nixos/modules/system/activation/switch-to-configuration.pl
+++ b/nixos/modules/system/activation/switch-to-configuration.pl
@@ -214,7 +214,17 @@ while (my ($unit, $state) = each %{$activePrev}) {
                 # Reload the changed mount unit to force a remount.
                 $unitsToReload{$unit} = 1;
                 recordUnit($reloadListFile, $unit);
-            } elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/ || $unit =~ /\.slice$/) {
+            } elsif ($unit =~ /\.socket$/) {
+                my $unitInfo = parseUnit($newUnitFile);
+                # If a socket unit has been changed, the corresponding
+                # service unit has to be stopped before the socket can
+                # be restarted. The service will be started again on demand.
+                my $serviceUnit = $unitInfo->{'Unit'} // "$baseName.service";
+                $unitsToStop{$serviceUnit} = 1;
+                $unitsToStop{$unit} = 1;
+                $unitsToStart{$unit} = 1;
+                recordUnit($startListFile, $unit);
+            } elsif ($unit =~ /\.path$/ || $unit =~ /\.slice$/) {
                 # FIXME: do something?
             } else {
                 my $unitInfo = parseUnit($newUnitFile);