align before and after parameters to update_every; so that e.g. after=-1 will also return a point when update_every > 1; fixes #1241
Costa Tsaousis (ktsaou) committed
Nov 14, 2016 at 01:35 UTC
1b5b5ed55110520c99334f575eedea329d398b49
2 files changed
+19
-4
src/rrd2json.c
+17
-4
@@ -1209,19 +1209,32 @@ RRDR *rrd2rrdr(RRDSET *st, long points, long long after, long long before, int g
1209
time_t last_entry_t = rrdset_last_entry_t(st);
1210
1211
if(before == 0 && after == 0) {
1212
+ // dump the all the data
1213
before = last_entry_t;
1214
after = first_entry_t;
1215
absolute_period_requested = 0;
1216
}
1217
1217
- // allow relative for before and after (smaller than 3 years)
1218
- if(((before < 0)?-before:before) <= (3 * 365 * 86400)) {
1219
- before = last_entry_t + before;
1218
+ // allow relative for before (smaller than API_RELATIVE_TIME_MAX)
1219
+ if(((before < 0)?-before:before) <= API_RELATIVE_TIME_MAX) {
1220
+ if(abs(before) % st->update_every) {
1221
+ // make sure it is multiple of st->update_every
1222
+ if(before < 0) before = before - st->update_every - before % st->update_every;
1223
+ else before = before + st->update_every - before % st->update_every;
1224
+ }
1225
+ if(before > 0) before = first_entry_t + before;
1226
+ else before = last_entry_t + before;
1227
absolute_period_requested = 0;
1228
}
1229
1223
- if(((after < 0)?-after:after) <= (3 * 365 * 86400)) {
1230
+ // allow relative for after (smaller than API_RELATIVE_TIME_MAX)
1231
+ if(((after < 0)?-after:after) <= API_RELATIVE_TIME_MAX) {
1232
if(after == 0) after = -st->update_every;
1233
+ if(abs(after) % st->update_every) {
1234
+ // make sure it is multiple of st->update_every
1235
+ if(after < 0) after = after - st->update_every - after % st->update_every;
1236
+ else after = after + st->update_every - after % st->update_every;
1237
+ }
1238
after = before + after;
1239
absolute_period_requested = 0;
1240
}
src/rrd2json.h
+2
@@ -4,6 +4,8 @@
4
#define HOSTNAME_MAX 1024
5
extern char *hostname;
6
7
+#define API_RELATIVE_TIME_MAX (3 * 365 * 86400)
8
+
9
// type of JSON generations
10
#define DATASOURCE_INVALID -1
11
#define DATASOURCE_JSON 0