From 6c7d5bae36890a97143ebb341bf58ef5f61604f3 Mon Sep 17 00:00:00 2001 From: oetiker Date: Sun, 12 Jun 2005 20:01:57 +0000 Subject: [PATCH] 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 --- src/rrd_update.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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) { -- 2.11.0