diff --git a/ntp_core.c b/ntp_core.c index 4e2289a..8ce9ed9 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -833,6 +833,12 @@ NCR_ChangeRemoteAddress(NCR_Instance inst, NTP_Remote_Address *remote_addr, int inst->local_addr.sock_fd = NIO_OpenServerSocket(remote_addr); } + /* Reset the polling interval only if the source wasn't unreachable to + avoid increasing server/network load in case that is what caused + the source to be unreachable */ + if (SRC_IsReachable(inst->source)) + NCR_ResetPoll(inst); + /* Update the reference ID and reset the source/sourcestats instances */ SRC_SetRefid(inst->source, UTI_IPToRefid(&remote_addr->ip_addr), &inst->remote_addr.ip_addr); diff --git a/test/simulation/137-pool b/test/simulation/137-pool index de8d77d..41c65d2 100755 --- a/test/simulation/137-pool +++ b/test/simulation/137-pool @@ -46,4 +46,23 @@ check_sync || test_fail check_file_messages "20.*192.168.123.*" 15 17 measurements.log || test_fail rm -f tmp/measurements.log +servers=6 +falsetickers=2 +client_server_conf="pool nodes-1-2-3-4-5-6.net1.clk maxsources 5 polltarget 1 iburst" +wander=1e-12 +jitter=1e-6 +min_sync_time=7 + +run_test || test_fail +check_chronyd_exit || test_fail +check_source_selection || test_fail +check_packet_interval || test_fail +check_sync || test_fail + +check_log_messages "Detected falseticker" 2 10 || test_fail +check_log_messages "Source 192.168.123.. replaced with" 1 1 || test_fail +check_file_messages "20.*192.168.123.* 11.1 6 6 " 15 17 measurements.log || test_fail +check_file_messages "20.*00:01:.. 192.168.123.* 11.1 6 6 " 1 1 measurements.log || test_fail +rm -f tmp/measurements.log + test_pass