vnstat2: update to version 2.11

This release breaks the noexit patch, because the code for removing old
now returns an error when no interfaces are configured. As it is run on
startup, the daemon exits in this case. To avoid this, add an additional
check so an error is only returned in an actual error case.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
(cherry picked from commit 9871979707)
This commit is contained in:
Jan Hoffmann 2023-08-20 00:07:51 +02:00 committed by Tianling Shen
parent fc76c3e9fe
commit 1657fdb869
2 changed files with 31 additions and 7 deletions

View File

@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=vnstat2
PKG_VERSION:=2.10
PKG_VERSION:=2.11
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=vnstat-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://humdi.net/vnstat
PKG_HASH:=a9c61744e5cd8c366e2db4d282badc74021ddb614bd65b41240937997e457d25
PKG_HASH:=babc3f1583cc40e4e8ffb2f53296d93d308cb5a5043e85054f6eaf7b4ae57856
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=COPYING

View File

@ -1,6 +1,6 @@
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -252,6 +252,7 @@ void initdstate(DSTATE *s)
@@ -277,6 +277,7 @@ void initdstate(DSTATE *s)
s->sync = 0;
s->forcesave = 0;
s->noadd = 0;
@ -8,7 +8,7 @@
s->initdb = 0;
s->iflisthash = 0;
s->cfgfile[0] = '\0';
@@ -285,6 +286,9 @@ void preparedatabase(DSTATE *s)
@@ -310,6 +311,9 @@ void preparedatabase(DSTATE *s)
}
if (s->noadd) {
@ -18,7 +18,7 @@
printf("No interfaces found in database, exiting.\n");
exit(EXIT_FAILURE);
}
@@ -303,6 +307,9 @@ void preparedatabase(DSTATE *s)
@@ -328,6 +332,9 @@ void preparedatabase(DSTATE *s)
}
if (!addinterfaces(s) && s->dbifcount == 0) {
@ -41,7 +41,7 @@
uint64_t dbifcount;
--- a/src/vnstatd.c
+++ b/src/vnstatd.c
@@ -249,6 +249,7 @@ void showhelp(void)
@@ -259,6 +259,7 @@ void showhelp(void)
printf(" --config <config file> select used config file\n");
printf(" --noadd prevent startup if database has no interfaces\n");
printf(" --alwaysadd [mode] automatically start monitoring all new interfaces\n");
@ -49,7 +49,7 @@
printf(" --initdb create empty database and exit\n\n");
printf("See also \"man vnstatd\".\n");
@@ -322,6 +323,8 @@ void parseargs(DSTATE *s, int argc, char
@@ -332,6 +333,8 @@ void parseargs(DSTATE *s, int argc, char
} else {
cfg.alwaysadd = 1;
}
@ -58,3 +58,27 @@
} else if (strcmp(argv[currentarg], "--initdb") == 0) {
s->initdb = 1;
s->showhelp = 0;
--- a/src/dbsql.c
+++ b/src/dbsql.c
@@ -976,7 +976,7 @@ int db_insertdata(const char *table, con
int db_removeoldentries(void)
{
- int rc, i;
+ int rc, i, dbifcount;
char sql[256];
const char *datatables[] = {"fiveminute", "hour", "day", "month", "year"};
const int32_t entrylimits[] = {cfg.fiveminutehours * 12, cfg.hourlydays * 24, cfg.dailydays, cfg.monthlymonths, cfg.yearlyyears};
@@ -987,8 +987,11 @@ int db_removeoldentries(void)
printf("db: removing old entries\n");
}
- if (db_getiflist(&dbifl) <= 0) {
+ dbifcount = db_getiflist(&dbifl);
+ if (dbifcount < 0) {
return 0;
+ } else if (dbifcount == 0) {
+ return 1;
} else {
dbifl_i = dbifl;
}