commit b91353387ed9bbcf4f237aa4803bc54160f29fb3 Author: George Kadianakis desnacked@riseup.net Date: Mon Feb 13 18:26:44 2012 +0200
Tweak code.
* Free the heartbeat periodic event on halt.
* Turn status.c:connections to an unsigned int.
* Delete connections_init() and inline its code in status_init(). It's already inlined in the rest of the code.
* Wrap connections_clear() into descriptive macros.
* Use 'day(s)', 'hour(s)', 'minute(s)', instead of 'days', 'hours', 'minutes'.
* Write some documentation.
* Heartbeat should log on 'notice'. --- src/main.c | 5 ++++- src/status.c | 46 ++++++++++++++++------------------------------ src/status.h | 3 +++ 3 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/src/main.c b/src/main.c index 607a153..0d690b7 100644 --- a/src/main.c +++ b/src/main.c @@ -271,10 +271,13 @@ obfsproxy_cleanup() evdns_base_free(get_evdns_base(), 0); event_free(sig_int); event_free(sig_term); + if (heartbeat) + event_free(heartbeat); + event_base_free(get_event_base());
cleanup_crypto(); - status_cleanup(); + status_connections_cleanup(); close_obfsproxy_logfile(); }
diff --git a/src/status.c b/src/status.c index 80e1764..4fcb144 100644 --- a/src/status.c +++ b/src/status.c @@ -10,6 +10,7 @@
#include "util.h"
+#include "status.h" #include "container.h"
#include <string.h> @@ -20,22 +21,15 @@ #include <event2/listener.h>
/** Count total connections. */ -static int connections = 0; +static unsigned int connections = 0;
/** Count connections from unique addresses. */ static strmap_t *addresses = NULL;
-/** Initialize counting connections from unique addresses. */ -static void -connections_init(void) -{ - if (!addresses) - addresses = strmap_new(); -} - -/** Clear connection counters. */ -static void -connections_clear(int reinit) +/** Clear connection counters. If <b>reinit</b> is false, don't + reinitialize the info-keeping structures. */ +void +status_connections_clear(int reinit) { connections = 0; if (!addresses) @@ -55,7 +49,7 @@ status_note_connection(const char *addrport) if ((p = strrchr(addr, ':'))) { *p = '\0'; } else { - log_debug("Error in address %s: port expected.", addrport); + log_warn("Error in address %s: port expected.", addrport); free(addr); return; } @@ -74,7 +68,7 @@ static time_t started = 0; static time_t last_reset_counters = 0;
/** Reset status information this often. */ -#define RESET_COUNTERS 86400 +#define RESET_COUNTERS 86400 /* 86400 seconds == 24 hours */
/** Initialize status information to print out heartbeat messages. */ void @@ -83,16 +77,8 @@ status_init(void) time_t now = time(NULL); started = now; last_reset_counters = now; - connections_init(); -} - -/** Free all memory used by printing heartbeat logs. */ -void -status_cleanup(void) -{ - started = 0; - last_reset_counters = 0; - connections_clear(0); + if (!addresses) + addresses = strmap_new(); }
/** Log information about our uptime and the number of connections we saw. @@ -106,18 +92,18 @@ status_log_heartbeat(void) int hours = (int)((secs - (days * 86400)) / 3600); int last_reset_hours = (int) (now - last_reset_counters) / 3600; int minutes = (int)((secs - (days * 86400) - (hours * 3600)) / 60); - log_info("Heartbeat: obfsproxy's uptime is %ld days, %d hours, and " - "%d minutes.", days, hours, minutes); + log_notice("Heartbeat: obfsproxy's uptime is %ld day(s), %d hour(s), and " + "%d minute(s).", days, hours, minutes);
/* Also log connection stats, if we are keeping notes. */ if (strmap_size(addresses) > 0) - log_info("Heartbeat: During the last %d hours we saw %d connections " - "from %d unique addresses.", - last_reset_hours, connections, strmap_size(addresses)); + log_notice("Heartbeat: During the last %d hour(s) we saw %u connection(s) " + "from %d unique address(es).", + last_reset_hours, connections, strmap_size(addresses));
if (now - last_reset_counters >= RESET_COUNTERS) { log_info("Resetting connection counters."); - connections_clear(1); + status_connections_reinit(); last_reset_counters += RESET_COUNTERS; } } diff --git a/src/status.h b/src/status.h index 54dfb9c..e556a5b 100644 --- a/src/status.h +++ b/src/status.h @@ -11,3 +11,6 @@ void status_init(void); void status_cleanup(void); void status_note_connection(const char *addrport); void status_log_heartbeat(void); +void status_connections_clear(int reinit); +#define status_connections_cleanup() status_connections_clear(0) +#define status_connections_reinit() status_connections_clear(1)