diff --git a/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs b/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs index 74c6a76f2..24a7609d9 100644 --- a/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs +++ b/Duplicati/Library/Modules/Builtin/RemoteSynchronizationModule.cs @@ -139,6 +139,8 @@ public class RemoteSynchronizationModule : IGenericCallbackModule { m_modes = []; } + // Fill rest of the modes with default values, if the list is shorter than destinations + m_modes.AddRange(Enumerable.Repeat(RemoteSyncTriggerMode.Inline, m_destinations.Count - m_modes.Count)); if (commandlineOptions.TryGetValue(OPTION_SCHEDULE, out var scheduleStr) && !string.IsNullOrWhiteSpace(scheduleStr)) { @@ -153,6 +155,8 @@ public class RemoteSynchronizationModule : IGenericCallbackModule { m_schedules = []; } + // Fill rest of the schedules with default values, if the list is shorter than destinations + m_schedules.AddRange(Enumerable.Repeat(TimeSpan.Zero, m_destinations.Count - m_schedules.Count)); if (commandlineOptions.TryGetValue(OPTION_COUNT, out var countStr) && !string.IsNullOrWhiteSpace(countStr)) { @@ -166,6 +170,8 @@ public class RemoteSynchronizationModule : IGenericCallbackModule { m_counts = []; } + // Fill rest of the counts with default values, if the list is shorter than destinations + m_counts.AddRange(Enumerable.Repeat(0, m_destinations.Count - m_counts.Count)); // Validate parameter lengths var destCount = m_destinations.Count; diff --git a/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs b/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs index 37f343437..86d4fb358 100644 --- a/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs +++ b/Duplicati/UnitTest/RemoteSynchronizationModuleTests.cs @@ -651,7 +651,10 @@ namespace Duplicati.UnitTest var modes = module.GetType().GetField("m_modes", BINDING_FLAGS).GetValue(module) as List; Assert.AreEqual(3, destinations.Count); - Assert.AreEqual(2, modes.Count); // Modes list has the provided values, defaults used for missing indices + Assert.AreEqual(3, modes.Count); // Modes list has the provided values, defaults used for missing indices + Assert.AreEqual(RemoteSyncTriggerMode.Inline, modes[0]); + Assert.AreEqual(RemoteSyncTriggerMode.Scheduled, modes[1]); + Assert.AreEqual(RemoteSyncTriggerMode.Inline, modes[2]); } [Test]