diff --git a/core/master_utils.c b/core/master_utils.c index 7da5d6f9..2be43fad 100644 --- a/core/master_utils.c +++ b/core/master_utils.c @@ -1093,7 +1093,18 @@ struct uwsgi_stats *uwsgi_master_generate_stats() { if (uwsgi_stats_keylong_comma(us, "offloaded_requests", (unsigned long long) uc->offloaded_requests)) goto end; - if (uwsgi_stats_keylong(us, "in_request", (unsigned long long) uc->in_request)) + if (uwsgi_stats_keylong_comma(us, "in_request", (unsigned long long) uc->in_request)) + goto end; + + if (uwsgi_stats_key(us, "vars")) + goto end; + + if (uwsgi_stats_list_open(us)) + goto end; + + if (uwsgi_stats_dump_vars(us, uc)) goto end; + + if (uwsgi_stats_list_close(us)) goto end; diff --git a/core/stats.c b/core/stats.c index bc097b4f..b913ca5e 100644 --- a/core/stats.c +++ b/core/stats.c @@ -13,6 +13,7 @@ struct uwsgi_stats *uwsgi_stats_new(size_t chunk_size) { us->chunk = chunk_size; us->size = chunk_size; us->tabs = 1; + us->dirty = 0; us->minified = uwsgi.stats_minified; if (!us->minified) { us->base[1] = '\n'; @@ -520,3 +521,49 @@ void uwsgi_stats_pusher_file(struct uwsgi_stats_pusher_instance *uspi, char *jso close(fd); } + +static void stats_dump_var(char *k, uint16_t kl, char *v, uint16_t vl, void *data) { + struct uwsgi_stats *us = (struct uwsgi_stats *) data; + if (us->dirty) return; + uint16_t i; + // replace " with ' + for(i=0;i