/* Details of "mobile peer" semantics:
- | Note: this comment is wishful thinking right now. It will be
- | implemented in subsequent commits.
-
- We use the same data structure for the different configurations,
but manage it with different algorithms.
}
static void site_resolve_callback(void *sst, const struct comm_addr *addrs,
- int naddrs, int was_naddrs)
+ int naddrs, int was_naddrs,
+ const char *address, const char *failwhy)
{
struct site *st=sst;
was_naddrs, naddrs);
}
} else {
- slog(st,LOG_ERROR,"resolution of %s failed",st->address);
+ slog(st,LOG_ERROR,"resolution of %s failed: %s",st->address,failwhy);
}
switch (st->state) {
}
}
-static bool_t transport_addrs_equal(const struct comm_addr *a,
- const struct comm_addr *b) {
- return !memcmp(a,b,sizeof(*a));
-}
-
static void transport_peers_expire(struct site *st, transport_peers *peers) {
/* peers must be sorted first */
int previous_peers=peers->npeers;
return 0;
for (search=0; search<peers->npeers; search++)
- if (transport_addrs_equal(&peers->peers[search].addr, ca))
+ if (comm_addr_equal(&peers->peers[search].addr, ca))
return 1;
peers->peers[peers->npeers].addr = *ca;
* Caller must first call transport_peers_expire. */
if (naddrs==1 && peers->npeers>=1 &&
- transport_addrs_equal(&addrs[0], &peers->peers[0].addr)) {
+ comm_addr_equal(&addrs[0], &peers->peers[0].addr)) {
/* optimisation, also avoids debug for trivial updates */
peers->peers[0].last = *tv_now;
return;