From 89806e95363f06869c9de18586e32c8ef65bd2fd Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Wed, 14 Nov 2018 03:25:45 +0100 Subject: 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. --- nixos/modules/system/activation/switch-to-configuration.pl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'nixos/modules/system/activation') 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); -- cgit 1.4.1