Check for ntp clock shift when scheduling next beacon. Otherwise direwolf continuously transmits all beacons until it's caught up with the new system clock, which could be days.

This commit is contained in:
craigerl 2020-12-02 07:38:25 -08:00
parent 8ac14f86f5
commit ca6c4b06e1
1 changed files with 8 additions and 0 deletions

View File

@ -614,6 +614,14 @@ static void * beacon_thread (void *arg)
/* i.e. Don't take relative to now in case there was some delay. */ /* i.e. Don't take relative to now in case there was some delay. */
bp->next += bp->every; bp->next += bp->every;
/* craigerl: if next beacon is scheduled in the past, then set next beacon relative to now (happens when NTP pushes clock AHEAD) */
/* fixme: if NTP sets clock BACK an hour, this thread will sleep for that hour */
if ( bp->next < now ) {
bp->next = now + bp->every;
dw_printf("\nSystem clock appears to have jumped forward. Beacon schedule updated.\n\n");
}
} }
} /* if time to send it */ } /* if time to send it */