summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--networking/ntpd.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/networking/ntpd.c b/networking/ntpd.c
index d721fe8..44e7112 100644
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -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?