* Purpose : Simple CGIs to get information about Privoxy's
* status.
*
- * Copyright : Written by and Copyright (C) 2001-2021 the
+ * Copyright : Written by and Copyright (C) 2001-2022 the
* Privoxy team. https://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
char buf[BUFFER_SIZE];
#ifdef FEATURE_STATISTICS
+#ifdef MUTEX_LOCKS_AVAILABLE
+ float percentage_blocked;
+ unsigned long long local_number_of_requests_received;
+ unsigned long long local_number_of_requests_blocked;
+#else
float perc_rej; /* Percentage of http requests rejected */
int local_urls_read;
int local_urls_rejected;
+#endif
#endif /* ndef FEATURE_STATISTICS */
jb_err err = JB_ERR_OK;
}
#ifdef FEATURE_STATISTICS
+#ifdef MUTEX_LOCKS_AVAILABLE
+ privoxy_mutex_lock(&block_statistics_mutex);
+ local_number_of_requests_received = number_of_requests_received;
+ local_number_of_requests_blocked = number_of_requests_blocked;
+ privoxy_mutex_unlock(&block_statistics_mutex);
+#else
local_urls_read = urls_read;
local_urls_rejected = urls_rejected;
-
+#endif
/*
* Need to alter the stats not to include the fetch of this
* page.
* urls_rejected--; * This will be incremented subsequently *
*/
+#ifdef MUTEX_LOCKS_AVAILABLE
+ if (local_number_of_requests_received == 0)
+#else
if (local_urls_read == 0)
+#endif
{
if (!err) err = map_block_killer(exports, "have-stats");
}
{
if (!err) err = map_block_killer(exports, "have-no-stats");
+#ifdef MUTEX_LOCKS_AVAILABLE
+ percentage_blocked = (float)local_number_of_requests_blocked * 100.0F /
+ (float)local_number_of_requests_received;
+
+ snprintf(buf, sizeof(buf), "%llu", local_number_of_requests_received);
+ if (!err) err = map(exports, "requests-received", 1, buf, 1);
+
+ snprintf(buf, sizeof(buf), "%llu", local_number_of_requests_blocked);
+ if (!err) err = map(exports, "requests-blocked", 1, buf, 1);
+
+ snprintf(buf, sizeof(buf), "%6.2f", percentage_blocked);
+ if (!err) err = map(exports, "percent-blocked", 1, buf, 1);
+#else
perc_rej = (float)local_urls_rejected * 100.0F /
(float)local_urls_read;
snprintf(buf, sizeof(buf), "%6.2f", perc_rej);
if (!err) err = map(exports, "percent-blocked", 1, buf, 1);
+#endif
}
#else /* ndef FEATURE_STATISTICS */