components/ntp/patches/70-leapslew.patch
branchs11u2-sru
changeset 4215 c0c7615b4511
equal deleted inserted replaced
4214:b5b4764c82a4 4215:c0c7615b4511
       
     1 This patch can be removed when upgrading to community version that has
       
     2 NTP bug 2745 fixed. See http://bugzilla.ntp.org/show_bug.cgi?id=2745
       
     3 
       
     4 --- ntpd/ntp_timer.c
       
     5 +++ ntpd/ntp_timer.c
       
     6 @@ -472,7 +472,7 @@ alarming(
       
     7  # endif
       
     8  # ifdef DEBUG
       
     9  	if (debug >= 4)
       
    10 -		write(1, msg, strlen(msg));
       
    11 +		(void)(0 != write(1, msg, strlen(msg)));
       
    12  # endif
       
    13  }
       
    14  #endif /* SYS_WINNT */
       
    15 @@ -521,11 +521,23 @@ check_leapsec(
       
    16  		 * announce the leap event has happened.
       
    17  		 */
       
    18  		if (lsdata.warped < 0) {
       
    19 -			step_systime(lsdata.warped);
       
    20 -			msyslog(LOG_NOTICE, "Inserting positive leap second.");
       
    21 +			if (clock_max_back > 0.0 &&
       
    22 +			    clock_max_back < fabs(lsdata.warped)) {
       
    23 +				step_systime(lsdata.warped);
       
    24 +				msyslog(LOG_NOTICE, "Positive leap second, stepped backward.");
       
    25 +			} else {
       
    26 +				msyslog(LOG_NOTICE, "Positive leap second, expect slowdown slew soon."
       
    27 +				    " System clock will be inaccurate until it finishes.");
       
    28 +			}
       
    29  		} else 	if (lsdata.warped > 0) {
       
    30 -			step_systime(lsdata.warped);
       
    31 -			msyslog(LOG_NOTICE, "Inserting negative leap second.");
       
    32 +			if (clock_max_fwd > 0.0 &&
       
    33 +			    clock_max_fwd < fabs(lsdata.warped)) {
       
    34 +				step_systime(lsdata.warped);
       
    35 +				msyslog(LOG_NOTICE, "Negative leap second, stepped forward.");
       
    36 +			} else {
       
    37 +				msyslog(LOG_NOTICE, "Negative leap second, expect speedup slew soon."
       
    38 +				    " System clock will be inaccurate until it finishes.");
       
    39 +			}
       
    40  		}
       
    41  		report_event(EVNT_LEAP, NULL, NULL);
       
    42  		lsprox  = LSPROX_NOWARN;