From: Juergen Perlinger Date: Sat, 21 Apr 2018 09:30:19 +0000 (+0200) Subject: [Bug 3445] Symmetric peer won't sync on startup X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4968dcd6e24b3898d1e0db5bc680026e87746f21;p=thirdparty%2Fntp.git [Bug 3445] Symmetric peer won't sync on startup bk: 5adb04abYrUAr9s2iXDKYvgcM0absw --- diff --git a/ChangeLog b/ChangeLog index 8651807fb..86db7dbc7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -29,6 +29,8 @@ - According to Brooks Davis, there was only one location * [Bug 3449] ntpq - display "loop" instead of refid [...] - applied patch by Gerry Garvey +* [Bug 3445] Symmetric peer won't sync on startup + - applied patch by Gerry Garvey * [Bug 3434] ntpd clears STA_UNSYNC on start - applied patch by Miroslav Lichvar * [Bug 3121] Drop root privileges for the forked DNS worker diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c index 4ef9b56e4..91c9a3575 100644 --- a/ntpd/ntp_proto.c +++ b/ntpd/ntp_proto.c @@ -371,6 +371,13 @@ transmit( */ hpoll = peer->hpoll; + /* + * If we haven't received anything (even if unsync) since last + * send, reset ppoll. + */ + if (peer->outdate > peer->timelastrec && !peer->reach) + peer->ppoll = peer->maxpoll; + /* * In broadcast mode the poll interval is never changed from * minpoll. @@ -2431,6 +2438,7 @@ process_packet( peer->seldisptoolarge++; DPRINTF(1, ("packet: flash header %04x\n", peer->flash)); + poll_update(peer, peer->hpoll); /* ppoll updated? */ return; } @@ -2977,8 +2985,6 @@ poll_update( } else { if (peer->retry > 0) hpoll = peer->minpoll; - else if (!(peer->reach)) - hpoll = peer->hpoll; else hpoll = min(peer->ppoll, peer->hpoll); #ifdef REFCLOCK