Hi, If req_lib_tmr_timerreschedule->timer_attributes.type is SA_TIME_ABSOLUTE, an absolute time value must be higher than the current absolute time.According to the type, we will compare the current time with an absolute time. If the type is SA_TIME_ABSOLUTE, we will compare. Or else, we do nothing; diff -urpN a/services/tmr.c b/services/tmr.c --- a/services/tmr.c +++ b/services/tmr.c @@ -442,7 +442,8 @@ static void message_handler_req_lib_tmr_ current_time = (SaTimeT)(api->timer_time_get()); - if (current_time > req_lib_tmr_timerreschedule->timer_attributes.initialExpirationTime) { + if ((SA_TIME_ABSOLUTE == req_lib_tmr_timerreschedule->timer_attributes.type) && + (current_time > req_lib_tmr_timerreschedule->timer_attributes.initialExpirationTime)) { error = SA_AIS_ERR_INVALID_PARAM; goto error_put; } diff -urpN a/test/testtmr.c b/test/testtmr.c --- a/test/testtmr.c +++ b/test/testtmr.c @@ -86,8 +86,8 @@ int main (void) SaTmrHandleT handle; SaSelectionObjectT select_obj; SaTmrTimerAttributesT attrs; - SaTmrTimerAttributesT attrs_a = { SA_TIME_DURATION, TMR_30_SECONDS, 0 }; - SaTmrTimerAttributesT attrs_b = { SA_TIME_DURATION, TMR_30_SECONDS, 0 }; + SaTmrTimerAttributesT attrs_a = { SA_TIME_DURATION, TMR_30_SECONDS, TMR_30_SECONDS }; + SaTmrTimerAttributesT attrs_b = { SA_TIME_DURATION, TMR_30_SECONDS, TMR_30_SECONDS }; SaTmrTimerAttributesT new_attrs_a = { SA_TIME_DURATION, TMR_10_SECONDS, TMR_10_SECONDS }; SaTmrTimerAttributesT new_attrs_b = { SA_TIME_DURATION, TMR_20_SECONDS, TMR_20_SECONDS }; SaTmrTimerIdT id_a; _______________________________________________ Pacemaker mailing list: Pacemaker@oss.clusterlabs.org http://oss.clusterlabs.org/mailman/listinfo/pacemaker Project Home: http://www.clusterlabs.org Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf Bugs: http://bugs.clusterlabs.org