ntpd: fix the case where two replies received at once and first one causes a step

function                                             old     new   delta
recv_and_process_peer_pkt                           2476    2486     +10

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2020-09-29 14:19:17 +02:00
parent a949399d17
commit afb5d8b2db

View File

@ -2025,6 +2025,15 @@ recv_and_process_peer_pkt(peer_t *p)
offset = 0;
/* The below can happen as follows:
* = we receive two peer rsponses at once.
* = recv_and_process_peer_pkt(PEER1) -> update_local_clock()
* -> step_time() and it closes all other fds, sets all ->fd to -1.
* = recv_and_process_peer_pkt(PEER2) sees PEER2->fd == -1
*/
if (p->p_fd < 0)
return;
/* We can recvfrom here and check from.IP, but some multihomed
* ntp servers reply from their *other IP*.
* TODO: maybe we should check at least what we can: from.port == 123?