Skip to content
Snippets Groups Projects
Commit 05f8fd28 authored by George Kadianakis's avatar George Kadianakis
Browse files

Add unique client counter to the heartbeat message.

parent 337e32f5
No related branches found
No related tags found
No related merge requests found
o Minor features:
- Add a unique client counter to the heartbeat message. Resolves
ticket 6852.
......@@ -1292,6 +1292,38 @@ format_bridge_stats_controller(time_t now)
return out;
}
/** Return a newly allocated string holding our bridge usage stats by
* country in a format suitable for inclusion in our heartbeat
* message. Return NULL on failure. */
char *
format_client_stats_heartbeat(time_t now)
{
char *out = NULL;
int n_clients = 0;
clientmap_entry_t **ent;
double elapsed_time = 0;
if (!start_of_bridge_stats_interval)
return NULL; /* Not initialized. */
/* count unique IPs */
HT_FOREACH(ent, clientmap, &client_history) {
/* only count directly connecting clients */
if ((*ent)->action != GEOIP_CLIENT_CONNECT)
continue;
n_clients++;
}
elapsed_time = difftime(now, start_of_bridge_stats_interval);
tor_asprintf(&out, "Heartbeat: "
"Since the last %ld hours, I have seen %d unique clients.",
tor_lround(elapsed_time / 3600),
n_clients);
return out;
}
/** Write bridge statistics to $DATADIR/stats/bridge-stats and return
* when we should next try to write statistics. */
time_t
......
......@@ -60,6 +60,7 @@ time_t geoip_bridge_stats_write(time_t now);
void geoip_bridge_stats_term(void);
const char *geoip_get_bridge_stats_extrainfo(time_t);
char *geoip_get_bridge_stats_controller(time_t);
char *format_client_stats_heartbeat(time_t now);
#endif
......@@ -14,6 +14,7 @@
#include "router.h"
#include "circuitlist.h"
#include "main.h"
#include "geoip.h"
/** Return the total number of circuits. */
static int
......@@ -87,7 +88,6 @@ log_heartbeat(time_t now)
const routerinfo_t *me;
const or_options_t *options = get_options();
(void)now;
if (public_server_mode(options)) {
/* Let's check if we are in the current cached consensus. */
......@@ -112,6 +112,14 @@ log_heartbeat(time_t now)
100*(U64_TO_DBL(stats_n_data_bytes_packaged) /
U64_TO_DBL(stats_n_data_cells_packaged*RELAY_PAYLOAD_SIZE)) );
if (options->BridgeRelay) {
char *msg = NULL;
msg = format_client_stats_heartbeat(now);
if (msg)
log_notice(LD_HEARTBEAT, "%s", msg);
tor_free(msg);
}
tor_free(uptime);
tor_free(bw_sent);
tor_free(bw_rcvd);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment