diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-07-07 16:32:53 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-07-07 16:32:53 +0200 |
commit | 6d87138ea7513761ae864e65dbf03d7f614aeb5d (patch) | |
tree | 31c9d29418c2114fc278cbaf3f0d7a44efc7065e | |
parent | 322e0f8d26edc121cbeee1b467b0009d75614f99 (diff) | |
download | pingu-6d87138ea7513761ae864e65dbf03d7f614aeb5d.tar.bz2 pingu-6d87138ea7513761ae864e65dbf03d7f614aeb5d.tar.xz |
pingu: fix misc bugs
fix some segfaults and some logic bugs
-rw-r--r-- | pingu_burst.c | 4 | ||||
-rw-r--r-- | pingu_host.c | 5 | ||||
-rw-r--r-- | pingu_ping.c | 6 |
3 files changed, 9 insertions, 6 deletions
diff --git a/pingu_burst.c b/pingu_burst.c index f86249a..7cc5b9a 100644 --- a/pingu_burst.c +++ b/pingu_burst.c @@ -32,7 +32,7 @@ void ping_burst_start(struct ev_loop *loop, struct pingu_host *host) for (rp = ai; rp != NULL; rp = rp->ai_next) { host->burst.saddr = *ai->ai_addr; r = pingu_ping_send(loop, host); - if (r >= 0) + if (r == 0) break; } @@ -47,7 +47,7 @@ void pingu_burst_timeout_cb(struct ev_loop *loop, struct ev_timer *w, struct pingu_host *host = container_of(w, struct pingu_host, burst_timeout_watcher); if (host->burst.active) { - log_warning("%s: burst already active"); + log_warning("%s: burst already active", host->host); return; } log_debug("%s: new burst", host->host); diff --git a/pingu_host.c b/pingu_host.c index eda2c94..26b4d83 100644 --- a/pingu_host.c +++ b/pingu_host.c @@ -8,12 +8,13 @@ void pingu_host_set_status(struct pingu_host *host, int status) { const char *action; + host->burst.active = 0; if (host->status == status) { - log_debug("%s: status is still %s", host->host, status); + log_debug("%s: status is still %i", host->host, status); return; } host->status = status; - log_info("%s: new status: %s", host->host, status); + log_info("%s: new status: %i", host->host, status); switch (host->status) { case 0: action = host->down_action; diff --git a/pingu_ping.c b/pingu_ping.c index c6ac66d..c24a733 100644 --- a/pingu_ping.c +++ b/pingu_ping.c @@ -35,7 +35,8 @@ static void pingu_ping_timeout_cb(struct ev_loop *loop, ev_timer *w, int revents) { struct pingu_ping *ping = container_of(w, struct pingu_ping, timeout_watcher); - log_debug("%s: seq %i timed out", ping->host->host, ping->seq); + log_debug("%s: seq %i (%i/%i) timed out", ping->host->host, ping->seq, + ping->host->burst.pings_sent, ping->host->max_retries); list_del(&ping->ping_list_entry); pingu_host_verify_status(loop, ping->host); free(ping); @@ -49,6 +50,7 @@ static struct pingu_ping *pingu_ping_add(struct ev_loop *loop, return NULL; ping->seq = seq; ping->host = host; + ping->host->burst.pings_sent++; ev_timer_init(&ping->timeout_watcher, pingu_ping_timeout_cb, host->timeout, 0); ev_timer_start(loop, &ping->timeout_watcher); @@ -90,7 +92,7 @@ static void pingu_ping_handle_reply(struct ev_loop *loop, log_debug("%s: got seq %i", ping->host->host, ping->seq); ping->host->burst.pings_replied++; list_del(&ping->ping_list_entry); - ev_timer_stop(&ping->timeout_watcher, loop); + ev_timer_stop(loop, &ping->timeout_watcher); pingu_host_verify_status(loop, ping->host); free(ping); } |