Increase default stats json buffer size to 8k. Retry with a larger buffer if we run out of space, like we do with aircraft.json
With the addition of the per-DF stats, the stats output started to exceed 4k in some cases (notably, you need --net turned on). Fixes #106
This commit is contained in:
parent
0aedcffc5b
commit
1b1f9de119
24
net_io.c
24
net_io.c
|
|
@ -1828,15 +1828,20 @@ static char * appendStatsJson(char *p,
|
|||
}
|
||||
|
||||
char *generateStatsJson(const char *url_path, int *len) {
|
||||
const size_t bufsize = 4096;
|
||||
char *buf = malloc(bufsize), *p = buf, *end = buf + bufsize;
|
||||
if (!buf) {
|
||||
MODES_NOTUSED(url_path);
|
||||
|
||||
int buflen = 8192;
|
||||
char *buf, *p, *end;
|
||||
|
||||
retry:
|
||||
if (!(buf = malloc(buflen))) {
|
||||
// allocation failed, give up
|
||||
*len = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MODES_NOTUSED(url_path);
|
||||
p = buf;
|
||||
end = buf + buflen;
|
||||
|
||||
p = safe_snprintf(p, end, "{\n");
|
||||
p = appendStatsJson(p, end, &Modes.stats_latest, "latest");
|
||||
|
|
@ -1854,12 +1859,15 @@ char *generateStatsJson(const char *url_path, int *len) {
|
|||
p = appendStatsJson(p, end, &Modes.stats_alltime, "total");
|
||||
p = safe_snprintf(p, end, "\n}\n");
|
||||
|
||||
if (p <= end) {
|
||||
*len = p-buf;
|
||||
} else {
|
||||
*len = 0; // ran out of buffer space, give up
|
||||
int used = p - buf;
|
||||
if (p >= end) {
|
||||
// overran the buffer
|
||||
buflen = used + 50;
|
||||
free(buf);
|
||||
goto retry;
|
||||
}
|
||||
|
||||
*len = used;
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue