From: oetiker Date: Sun, 12 Jun 2005 20:01:57 +0000 (+0000) Subject: kill the last stored counter value if the updates comes after mrhb X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=commitdiff_plain;h=6c7d5bae36890a97143ebb341bf58ef5f61604f3;hp=2576b196bc70b08833237abfc7ab3517cff05595 kill the last stored counter value if the updates comes after mrhb to make sure it does not get taken into account accedenly later on. git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2/program@634 a5681a0c-68f1-0310-ab6d-d61299d08faa --- 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) {