diff options
Diffstat (limited to 'src/stats.c')
-rw-r--r-- | src/stats.c | 195 |
1 files changed, 98 insertions, 97 deletions
diff --git a/src/stats.c b/src/stats.c index 1b958ce..25a053d 100644 --- a/src/stats.c +++ b/src/stats.c @@ -33,12 +33,13 @@ #include "stats.h" #include "utils.h" -struct stat_s { - unsigned long int num_reqs; - unsigned long int num_badcons; - unsigned long int num_open; - unsigned long int num_refused; - unsigned long int num_denied; +struct stat_s +{ + unsigned long int num_reqs; + unsigned long int num_badcons; + unsigned long int num_open; + unsigned long int num_refused; + unsigned long int num_denied; }; static struct stat_s *stats; @@ -47,83 +48,82 @@ static struct stat_s *stats; * Initialize the statistics information to zero. */ void -init_stats(void) +init_stats (void) { - stats = malloc_shared_memory(sizeof(struct stat_s)); - if (stats == MAP_FAILED) - return; + stats = malloc_shared_memory (sizeof (struct stat_s)); + if (stats == MAP_FAILED) + return; - memset(stats, 0, sizeof(struct stat_s)); + memset (stats, 0, sizeof (struct stat_s)); } /* * Display the statics of the tinyproxy server. */ int -showstats(struct conn_s *connptr) +showstats (struct conn_s *connptr) { - static char *msg = - "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" - "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n" - "<html>\n" - "<head><title>%s version %s run-time statistics</title></head>\n" - "<body>\n" - "<h1>%s version %s run-time statistics</h1>\n" - "<p>\n" - "Number of open connections: %lu<br />\n" - "Number of requests: %lu<br />\n" - "Number of bad connections: %lu<br />\n" - "Number of denied connections: %lu<br />\n" - "Number of refused connections due to high load: %lu\n" - "</p>\n" - "<hr />\n" - "<p><em>Generated by %s version %s.</em></p>\n" - "</body>\n" - "</html>\n"; - - char *message_buffer; - char opens[16], reqs[16], badconns[16], denied[16], refused[16]; - FILE *statfile; - - snprintf(opens, sizeof(opens), "%lu", stats->num_open); - snprintf(reqs, sizeof(reqs), "%lu", stats->num_reqs); - snprintf(badconns, sizeof(badconns), "%lu", stats->num_badcons); - snprintf(denied, sizeof(denied), "%lu", stats->num_denied); - snprintf(refused, sizeof(refused), "%lu", stats->num_refused); - - if (!config.statpage || (!(statfile = fopen(config.statpage, "r")))) { - message_buffer = safemalloc(MAXBUFFSIZE); - if (!message_buffer) - return -1; - - snprintf(message_buffer, MAXBUFFSIZE, msg, - PACKAGE, VERSION, PACKAGE, VERSION, - stats->num_open, - stats->num_reqs, - stats->num_badcons, stats->num_denied, - stats->num_refused, - PACKAGE, VERSION); - - if (send_http_message(connptr, 200, "OK", message_buffer) < 0) { - safefree(message_buffer); - return -1; - } - - safefree(message_buffer); - return 0; - } - - add_error_variable(connptr, "opens", opens); - add_error_variable(connptr, "reqs", reqs); - add_error_variable(connptr, "badconns", badconns); - add_error_variable(connptr, "deniedconns", denied); - add_error_variable(connptr, "refusedconns", refused); - add_standard_vars(connptr); - send_http_headers(connptr, 200, "Statistic requested"); - send_html_file(statfile, connptr); - fclose(statfile); - - return 0; + static char *msg = + "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n" + "<html>\n" + "<head><title>%s version %s run-time statistics</title></head>\n" + "<body>\n" + "<h1>%s version %s run-time statistics</h1>\n" + "<p>\n" + "Number of open connections: %lu<br />\n" + "Number of requests: %lu<br />\n" + "Number of bad connections: %lu<br />\n" + "Number of denied connections: %lu<br />\n" + "Number of refused connections due to high load: %lu\n" + "</p>\n" + "<hr />\n" + "<p><em>Generated by %s version %s.</em></p>\n" "</body>\n" "</html>\n"; + + char *message_buffer; + char opens[16], reqs[16], badconns[16], denied[16], refused[16]; + FILE *statfile; + + snprintf (opens, sizeof (opens), "%lu", stats->num_open); + snprintf (reqs, sizeof (reqs), "%lu", stats->num_reqs); + snprintf (badconns, sizeof (badconns), "%lu", stats->num_badcons); + snprintf (denied, sizeof (denied), "%lu", stats->num_denied); + snprintf (refused, sizeof (refused), "%lu", stats->num_refused); + + if (!config.statpage || (!(statfile = fopen (config.statpage, "r")))) + { + message_buffer = safemalloc (MAXBUFFSIZE); + if (!message_buffer) + return -1; + + snprintf (message_buffer, MAXBUFFSIZE, msg, + PACKAGE, VERSION, PACKAGE, VERSION, + stats->num_open, + stats->num_reqs, + stats->num_badcons, stats->num_denied, + stats->num_refused, PACKAGE, VERSION); + + if (send_http_message (connptr, 200, "OK", message_buffer) < 0) + { + safefree (message_buffer); + return -1; + } + + safefree (message_buffer); + return 0; + } + + add_error_variable (connptr, "opens", opens); + add_error_variable (connptr, "reqs", reqs); + add_error_variable (connptr, "badconns", badconns); + add_error_variable (connptr, "deniedconns", denied); + add_error_variable (connptr, "refusedconns", refused); + add_standard_vars (connptr); + send_http_headers (connptr, 200, "Statistic requested"); + send_html_file (statfile, connptr); + fclose (statfile); + + return 0; } /* @@ -131,28 +131,29 @@ showstats(struct conn_s *connptr) * stats.h */ int -update_stats(status_t update_level) +update_stats (status_t update_level) { - switch (update_level) { - case STAT_BADCONN: - ++stats->num_badcons; - break; - case STAT_OPEN: - ++stats->num_open; - ++stats->num_reqs; - break; - case STAT_CLOSE: - --stats->num_open; - break; - case STAT_REFUSE: - ++stats->num_refused; - break; - case STAT_DENIED: - ++stats->num_denied; - break; - default: - return -1; - } - - return 0; + switch (update_level) + { + case STAT_BADCONN: + ++stats->num_badcons; + break; + case STAT_OPEN: + ++stats->num_open; + ++stats->num_reqs; + break; + case STAT_CLOSE: + --stats->num_open; + break; + case STAT_REFUSE: + ++stats->num_refused; + break; + case STAT_DENIED: + ++stats->num_denied; + break; + default: + return -1; + } + + return 0; } |