diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-07-29 23:19:58 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-07-29 23:25:33 +0200 |
commit | 6a766c18d4329123ca044b4d3668ca763f1d8118 (patch) | |
tree | 0e92e87001817dee17ad138ed5d4795ede43ba46 /pingu_burst.c | |
parent | c761f12b0a67412cde8a4693f1e8d6aa14c0b70e (diff) | |
download | pingu-6a766c18d4329123ca044b4d3668ca763f1d8118.tar.bz2 pingu-6a766c18d4329123ca044b4d3668ca763f1d8118.tar.xz |
pingu: fix bug when storing addrinfo struct to sockaddr_any
Diffstat (limited to 'pingu_burst.c')
-rw-r--r-- | pingu_burst.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/pingu_burst.c b/pingu_burst.c index e09c1ce..a9f8e83 100644 --- a/pingu_burst.c +++ b/pingu_burst.c @@ -17,6 +17,7 @@ void ping_burst_start(struct ev_loop *loop, struct pingu_host *host) struct addrinfo hints; struct addrinfo *ai, *rp; int r; + char buf[64]; /* we bind to device every burst in case an iface disappears and comes back. e.g ppp0 */ @@ -38,16 +39,17 @@ void ping_burst_start(struct ev_loop *loop, struct pingu_host *host) } for (rp = ai; rp != NULL; rp = rp->ai_next) { - sockaddr_init(&host->burst.saddr, ai->ai_family, - ai->ai_addr); + sockaddr_from_addrinfo(&host->burst.saddr, ai); r = pingu_ping_send(loop, host, 0); if (r == 0) break; } - if (rp == NULL) + sockaddr_to_string(&host->burst.saddr, buf, sizeof(buf)); + if (rp == NULL) { + log_debug("%s: failed to send first ping to %s", host->label, buf); host->burst.active = 0; - + } } void pingu_burst_timeout_cb(struct ev_loop *loop, struct ev_timer *w, @@ -59,6 +61,6 @@ void pingu_burst_timeout_cb(struct ev_loop *loop, struct ev_timer *w, log_warning("%s: burst already active", host->host); return; } - log_debug("%s: new burst", host->host); + log_debug("%s: new burst to %s via %s", host->label, host->host, host->iface->name); ping_burst_start(loop, host); } |