aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-07-07 16:32:53 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2011-07-07 16:32:53 +0200
commit6d87138ea7513761ae864e65dbf03d7f614aeb5d (patch)
tree31c9d29418c2114fc278cbaf3f0d7a44efc7065e
parent322e0f8d26edc121cbeee1b467b0009d75614f99 (diff)
downloadpingu-6d87138ea7513761ae864e65dbf03d7f614aeb5d.tar.bz2
pingu-6d87138ea7513761ae864e65dbf03d7f614aeb5d.tar.xz
pingu: fix misc bugs
fix some segfaults and some logic bugs
-rw-r--r--pingu_burst.c4
-rw-r--r--pingu_host.c5
-rw-r--r--pingu_ping.c6
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);
}