From: Miroslav Lichvar Date: Mon, 29 Apr 2024 09:21:45 +0000 (+0200) Subject: ntp: improve copying of server status X-Git-Tag: 4.6-pre1~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=276591172eac68ec3345c00d81624d89b5372c05;p=thirdparty%2Fchrony.git ntp: improve copying of server status When a server specified with the copy option responds with an unsynchronized status (e.g. due to selection failure), reset the source instance to immediately switch the local reference status instead of waiting for the source to become unreachable after 8 polls. --- diff --git a/ntp_core.c b/ntp_core.c index 149e32af..214a989e 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -2372,13 +2372,17 @@ process_response(NCR_Instance inst, int saved, NTP_Local_Address *local_addr, SRC_UpdateReachability(inst->source, synced_packet); - if (synced_packet) { - if (inst->copy && inst->remote_stratum > 0) { - /* Assume the reference ID and stratum of the server */ + if (inst->copy) { + /* Assume the reference ID and stratum of the server */ + if (synced_packet && inst->remote_stratum > 0) { inst->remote_stratum--; SRC_SetRefid(inst->source, ntohl(message->reference_id), &inst->remote_addr.ip_addr); + } else { + SRC_ResetInstance(inst->source); } + } + if (synced_packet) { SRC_UpdateStatus(inst->source, MAX(inst->remote_stratum, inst->min_stratum), pkt_leap); if (inst->delay_quant)