X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_update.c;h=d8e8866cfac79053d212dc5e09a05d768e15b58c;hp=95e927163e280aa23b3ea8b899354537bbb8adef;hb=6c7d5bae36890a97143ebb341bf58ef5f61604f3;hpb=2576b196bc70b08833237abfc7ab3517cff05595 diff --git a/src/rrd_update.c b/src/rrd_update.c index 95e9271..d8e8866 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -595,10 +595,18 @@ _rrd_update(char *filename, char *template, int argc, char **argv, for(i=0;ids_cnt;i++){ enum dst_en dst_idx; dst_idx= dst_conv(rrd.ds_def[i].dst); - /* NOTE: DST_CDEF should never enter this if block, because - * updvals[i+1][0] is initialized to 'U'; unless the caller - * accidently specified a value for the DST_CDEF. To handle - * this case, an extra check is required. */ + + /* make sure we do not build diffs with old last_ds values */ + if(rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt < interval + && ( dst_idx == DST_COUNTER || dst_idx == DST_DERIVE)){ + strncpy(rrd.pdp_prep[i].last_ds,"U",LAST_DS_LEN-1); + } + + /* NOTE: DST_CDEF should never enter this if block, because + * updvals[i+1][0] is initialized to 'U'; unless the caller + * accidently specified a value for the DST_CDEF. To handle + * this case, an extra check is required. */ + if((updvals[i+1][0] != 'U') && (dst_idx != DST_CDEF) && rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt >= interval) {