Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:mskibbe
ntp
ntp-4.2.0.ntpdate_overflow.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ntp-4.2.0.ntpdate_overflow.patch of Package ntp
--- ntpdate/ntpdate.c +++ ntpdate/ntpdate.c @@ -1255,14 +1255,24 @@ register struct server *sp, *server; s_fp absoffset; int dostep; + l_fp big; + int dobigstep = 0; for (sp = sys_servers; sp != NULL; sp = sp->next_server) clock_filter(sp); server = clock_select(); + if ( server && server->offset.l_i < 0 && server->xmt.l_ui < server->reftime.l_ui/2 ) { + /* overflow condition: negtaive offset although reference time + * is significant greater than system time. */ + dobigstep = 1; + } + if (debug || simple_query) { for (sp = sys_servers; sp != NULL; sp = sp->next_server) printserver(sp, stdout); + if (dobigstep) + (void) fprintf(stdout, "big step: offset %s\n", ulfptoa(&server->offset, 6)); } if (server == 0) { @@ -1271,7 +1281,7 @@ return(1); } - if (always_step) { + if (always_step || dobigstep) { dostep = 1; } else if (never_step) { dostep = 0; @@ -1284,9 +1294,16 @@ if (dostep) { if (simple_query || l_step_systime(&server->offset)) { - msyslog(LOG_NOTICE, "step time server %s offset %s sec", - stoa(&server->srcadr), - lfptoa(&server->offset, 6)); + if (dobigstep) { + L_ADD(&server->offset, &big); + msyslog(LOG_NOTICE, "step time server %s offset %s sec", + stoa(&server->srcadr), + ulfptoa(&server->offset, 6)); + } else { + msyslog(LOG_NOTICE, "step time server %s offset %s sec", + stoa(&server->srcadr), + lfptoa(&server->offset, 6)); + } } } else { #if !defined SYS_WINNT && !defined SYS_CYGWIN32
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor